本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Unblock-SmbShareAccess」コマンドレットを解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、共有フォルダに設定された「拒否」のアクセス権を削除する「Unblock-SmbShareAccess」コマンドレットです。
本連載第69回で紹介した「Block-SmbShareAccess」コマンドレットは、共有フォルダに対して特定のユーザーもしくはグループのアクセスを拒否するコマンドレットでした。
当該回でも紹介した通り、ユーザーもしくはグループに対して「拒否」の共有アクセス権を付与するような形となるため、「Get-SmbShareAccess」コマンドレットで確認すると「許可」と「拒否」の共有アクセス権が併存してしまいます。
共有アクセス権は「拒否」の方が優先されるため、結果的には「許可」と「拒否」の共有アクセス権が併存しても問題はないわけですが、「許可」の共有アクセス権を付与するだけでは「拒否」の共有アクセス権は削除できないことを示唆しているといえます。
本連載第70回で紹介した「Revoke-SmbShareAccess」コマンドレットで対応可能かどうかというと、「許可」の共有アクセス権は削除できますが、「拒否」の共有アクセス権は削除できません。「拒否」の共有アクセス権を削除する場合は、今回紹介する「Unblock-SmbShareAccess」コマンドレットを使用します。
なお、現在設定されているアクセス権に関しては、本連載第64回の記事中に紹介した「Get-SmbShareAccess」コマンドレットで取得可能ですので、当該記事を参考にしてください。
オプション | 意味 |
---|---|
-Name | 拒否の共有アクセス権を削除したい共有フォルダの共有名を指定する。必須 |
-AccountName | 拒否の共有アクセス権を削除したいユーザー名/グループ名を指定する。必須 |
-Force | 実行時に確認なしで処理したい場合に指定する。省略可能 |
「拒否」の共有アクセス権を削除する場合は、対象フォルダの「共有名」、削除したい「ユーザー名」または「グループ名」をオプションで指定して、Unblock-SmbShareAccessコマンドレットを実行します(画面1)。なお、Unblock-SmbShareAccessコマンドレットは、管理者権限で実行する必要があります。
Unblock-SmbShareAccess -Name "IT_Folder" -AccountName "simpson"
画面1ではGet-SmbShareAccessコマンドレットで設定されている共有アクセス権を事前に確認していますが、ユーザー「simpson」がUnblock-SmbShareAccessコマンドレットが実行されたことで「拒否」のアクセス権が削除されたことが確認できます。
Unblock-SmbShareAccessコマンドレットも実行時に確認プロンプトが表示されるので、[y]キーで応答することでコマンドレットが実行されています。必要な確認ですが処理自動化の障壁となってしまうため、本コマンドレットでも「-Force」オプションが用意されています。-Forceオプションを利用することで、確認のプロンプトを出力せずにコマンドレットを即実行できます(画面2)
Unblock-SmbShareAccess -Name "IT_Folder" -AccountName "stenson" -Force
なお、「-AccountName」オプションは本連載第67回でも解説した通り、ワークグループ構成のサーバではアカウント名だけの指定で問題ありませんが、ドメイン環境の場合は明示的な指定が必要になります。ドメインアカウントの場合は「ドメイン名¥アカウント名」、ローカルアカウントの場合は「サーバ名¥アカウント名」を指定します。
複数の「拒否」の共有アクセス権を一括で削除したい場合は、「-AccountName」オプションで削除したいアカウントを指定してUnblock-SmbShareAccessを実行します(画面3)。
Unblock-SmbShareAccess -Name "IT_Folder" -AccountName "stenson","simpson" -Force
本連載第70回で「Revoke-SmbShareAccess 」コマンドレットを紹介した際、メンテナンス目的で許可の共有アクセス権を削除するコマンドレット実行例を紹介しました。
その際、コマンドレット実行後は「Everyone」に対して「拒否」の共有アクセス権が設定されると解説しました。
では、この状態で「Everyone」に対する「拒否」の共有アクセス権を削除するとどうなるのでしょうか(画面4)。
Unblock-SmbShareAccess -Name "IT_Folder" -AccountName (Get-SmbShareAccess -Name "IT_Folder").AccountName -Force
「Everyone」に対する「拒否」の共有アクセス権が削除されることはなく、共有アクセス権に変化はありません。
これは「許可」の共有アクセス権が全て削除された後の暗黙の「拒否」であって、これを削除することはできません。
この暗黙の「拒否」を削除するためには、第67回で紹介したGrant-SmbShareAccessコマンドレットで共有アクセス権限を追加する必要があります。
Microsoft MVP for Cloud and Datacenter Management(2012-2023)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.