【 Get-SmbShare 】コマンドレット――コンピュータに設定された共有フォルダの情報を取得するWindows PowerShell基本Tips(63)

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

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

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

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

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、コンピュータに設定された共有フォルダの情報を取得する「Get-SmbShare」コマンドレットです。

Get-SmbShareコマンドレットとは?

 Windows環境において複数のユーザーでファイルを共有する場合は、「共有フォルダ」の設定が不可欠です。また、共有フォルダが設定されていた場合でも、適切なアクセス権限が付与されていなければ、ユーザーがアクセスできなかったり、不要なユーザーがアクセス可能だったりと、思わぬトラブルの原因なってしまう恐れもあります。

 「Get-SmbShare」は、Windows OS上に設定された共有フォルダの情報を取得するコマンドレットです。設定自体はGUIツールからでも確認できますが、複数の共有フォルダの情報を取得したい場合には、PowerShellコマンドレットが非常に便利です。

Set-Get-SmbShareコマンドレットの書式

Get-SmbShare [オプション]


Get-SmbShareコマンドレットの主なオプション

オプション 意味
-Name 取得したい共有フォルダの共有名を指定する。省略可能


共有フォルダの一覧を取得する

 Get-SmbShareコマンドレットをオプションなしで実行すると、設定されている共有フォルダの全てを取得します(画面1)。

コマンドレット実行例

Get-SmbShare

ALT 画面1 設定済み共有フォルダを全て取得した

 Get-SmbShareコマンドレットでは作成済み共有フォルダの他、「デフォルト共有」をはじめとする隠し共有も全て表示されます。



Format-Listを使用して共有フォルダの詳細情報を取得する

 Get-SmbShareコマンドレットと「Format-List」コマンドレットを「*」オプションを付与して併用すると、共有フォルダの詳細情報を取得できます(画面2)。なお、Format-Listは「FL」と省略できます。

コマンドレット実行例

Get-SmbShare | Format-List *

ALT 画面2 Get-SmbShareとFormat-Listをパイプ(|)でつないで併用して実行する

 しかし、この方法で詳細情報を取得するとデフォルト共有も表示されてしまうため、目的の共有フォルダの詳細情報が埋もれてしまいます。

 そこで、Get-SmbShareコマンドレットの「-Name」オプションを使用することで、目的の共有フォルダの詳細設定のみを取得できます(画面3)。

コマンドレット実行例

Get-SmbShare -Name "HR_Folder" | Format-List *

ALT 画面3 「-Name」オプションでHR_Folderを指定して詳細情報を取得した

 この詳細情報では、共有フォルダのローカルパスや設定されている共有アクセス権のセキュリティ記述子(SecurityDescriptor)、現在この共有フォルダにアクセスしているユーザー数(CurrentUsers)などが確認できます。

 なお、共有アクセス権に関しては、「Get-SmbShareAccess」コマンドレットを用いることでセキュリティ記述子ではなく平易なユーザー名やグループ名で取得できます(画面4)。

コマンドレット実行例

Get-SmbShare -Name "HR_Folder" | Get-SmbShareAccess

ALT 画面4 Get-SmbShareAccessコマンドレットを併用して、HR_Folderの共有アクセス権設定を取得した

 Get-SmbShareAccessコマンドレットは単体での実行も可能で、画面4のコマンドレット実行例のように「Get-SmbShareAccess -Name <共有フォルダ名>」で共有アクセス権の設定が取得可能です。



特定のユーザーが権限を持つ共有フォルダを取得する

 共有フォルダを管理していると、特定のユーザーがアクセス可能な共有フォルダの一覧を取得したいという場面も考えられます。GUIツールでの確認は面倒で時間もかかりますが、Get-SmbShareコマンドレットとGet-SmbShareAccessコマンドレット、そして「Where-Object」コマンドレットを併用することで、簡単に一覧を取得できます(画面5)。

コマンドレット実行例

Get-SmbShare | Get-SmbShareAccess | Where-Object { $_.AccountName -eq "BUILTIN\Administrators"}

ALT 画面5 「Administrators」グループがアクセス権を持つ共有フォルダの一覧を取得した

 この例ではアカウント名での絞り込みを実施しましたが、「$_.AccountName」を「$_.AccessRight」に変更する、例えば「Where-Object { $_.AccessRight -eq "Full"}」とすることで「フルコントロールの共有アクセス権を持つユーザー」といった、権限を条件にした一覧を取得したりすることも可能です。

筆者紹介

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

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のメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。