【 Unblock-SmbShareAccess 】コマンドレット――共有フォルダの「拒否」のアクセス権を削除するWindows PowerShell基本Tips(73)

本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Unblock-SmbShareAccess」コマンドレットを解説します。

» 2023年06月16日 05時00分 公開
[後藤諭史@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、共有フォルダに設定された「拒否」のアクセス権を削除する「Unblock-SmbShareAccess」コマンドレットです。

Unblock-SmbShareAccessコマンドレットとは?

 本連載第69回で紹介した「Block-SmbShareAccess」コマンドレットは、共有フォルダに対して特定のユーザーもしくはグループのアクセスを拒否するコマンドレットでした。

 当該回でも紹介した通り、ユーザーもしくはグループに対して「拒否」の共有アクセス権を付与するような形となるため、「Get-SmbShareAccess」コマンドレットで確認すると「許可」と「拒否」の共有アクセス権が併存してしまいます。

 共有アクセス権は「拒否」の方が優先されるため、結果的には「許可」と「拒否」の共有アクセス権が併存しても問題はないわけですが、「許可」の共有アクセス権を付与するだけでは「拒否」の共有アクセス権は削除できないことを示唆しているといえます。

 本連載第70回で紹介した「Revoke-SmbShareAccess」コマンドレットで対応可能かどうかというと、「許可」の共有アクセス権は削除できますが、「拒否」の共有アクセス権は削除できません。「拒否」の共有アクセス権を削除する場合は、今回紹介する「Unblock-SmbShareAccess」コマンドレットを使用します。

 なお、現在設定されているアクセス権に関しては、本連載第64回の記事中に紹介した「Get-SmbShareAccess」コマンドレットで取得可能ですので、当該記事を参考にしてください。

Unblock-SmbShareAccessコマンドレットの書式

Unblock-SmbShareAccess [オプション]


Unblock-SmbShareAccessコマンドレットの主なオプション

オプション 意味
-Name 拒否の共有アクセス権を削除したい共有フォルダの共有名を指定する。必須
-AccountName 拒否の共有アクセス権を削除したいユーザー名/グループ名を指定する。必須
-Force 実行時に確認なしで処理したい場合に指定する。省略可能


「拒否」の共有アクセス権を削除する

 「拒否」の共有アクセス権を削除する場合は、対象フォルダの「共有名」、削除したい「ユーザー名」または「グループ名」をオプションで指定して、Unblock-SmbShareAccessコマンドレットを実行します(画面1)。なお、Unblock-SmbShareAccessコマンドレットは、管理者権限で実行する必要があります。

コマンドレット実行例

Unblock-SmbShareAccess -Name "IT_Folder" -AccountName "simpson"

ALT 共有名「IT_Folder」から、ユーザー「simpson」の「拒否」の共有アクセス権を削除した

 画面1ではGet-SmbShareAccessコマンドレットで設定されている共有アクセス権を事前に確認していますが、ユーザー「simpson」がUnblock-SmbShareAccessコマンドレットが実行されたことで「拒否」のアクセス権が削除されたことが確認できます。

 Unblock-SmbShareAccessコマンドレットも実行時に確認プロンプトが表示されるので、[y]キーで応答することでコマンドレットが実行されています。必要な確認ですが処理自動化の障壁となってしまうため、本コマンドレットでも「-Force」オプションが用意されています。-Forceオプションを利用することで、確認のプロンプトを出力せずにコマンドレットを即実行できます(画面2

コマンドレット実行例

Unblock-SmbShareAccess -Name "IT_Folder" -AccountName "stenson" -Force

ALT コマンドレット実行時に「-Force」オプションを付与して実行した

 なお、「-AccountName」オプションは本連載第67回でも解説した通り、ワークグループ構成のサーバではアカウント名だけの指定で問題ありませんが、ドメイン環境の場合は明示的な指定が必要になります。ドメインアカウントの場合は「ドメイン名¥アカウント名」、ローカルアカウントの場合は「サーバ名¥アカウント名」を指定します。


複数の「拒否」の共有アクセス権を削除する

 複数の「拒否」の共有アクセス権を一括で削除したい場合は、「-AccountName」オプションで削除したいアカウントを指定してUnblock-SmbShareAccessを実行します(画面3)。

コマンドレット実行例

Unblock-SmbShareAccess -Name "IT_Folder" -AccountName "stenson","simpson" -Force

ALT 「-AccountName」オプションに複数アカウントを指定して削除した

共有アクセス権が設定されていない共有フォルダから「拒否」の共有アクセス権を削除する

 本連載第70回で「Revoke-SmbShareAccess 」コマンドレットを紹介した際、メンテナンス目的で許可の共有アクセス権を削除するコマンドレット実行例を紹介しました。

 その際、コマンドレット実行後は「Everyone」に対して「拒否」の共有アクセス権が設定されると解説しました。

 では、この状態で「Everyone」に対する「拒否」の共有アクセス権を削除するとどうなるのでしょうか(画面4)。

コマンドレット実行例

Unblock-SmbShareAccess -Name "IT_Folder" -AccountName (Get-SmbShareAccess -Name "IT_Folder").AccountName -Force

ALT 共有アクセス権が設定されていない共有フォルダに対して、「拒否」のアクセス権を削除した

 「Everyone」に対する「拒否」の共有アクセス権が削除されることはなく、共有アクセス権に変化はありません。

 これは「許可」の共有アクセス権が全て削除された後の暗黙の「拒否」であって、これを削除することはできません。

 この暗黙の「拒否」を削除するためには、第67回で紹介したGrant-SmbShareAccessコマンドレットで共有アクセス権限を追加する必要があります。

筆者紹介

後藤 諭史(ごとう さとし)

Microsoft MVP for Cloud and Datacenter Management(2012-2023)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。