SMBコマンドレットは本当に便利でServer管理には欠かせないのに日本語圏では一切記事を見ません。そもそもPowerShell 3.0以降の日本語記事をほとんど見ないのですが、使ってほしいところです。
今回は、 SMBを使った共有フォルダ設定について簡単な導入編です。2012年、2013年でもnet shareを使った記事がありますが、PowerShellでやるのも簡単です。
前提
SMB Shareコマンドレットは管理者権限を要します。管理者権限でPowerShellを起動してください。
SMBShareコマンドレット
さっくりまとめましたが、色々オプションもあります。ぜひ試してください。
guitarrapc/PowerShellUtil - Set-ShareFolder/Set-ShareFolder.ps1 | GitHub
PowerShell 3.0はWindows Management Framework 3.0 = SMB 3.0ベースなので、SMB関連はほぼPowerShellで自動化可能です。
前回はリモートサーバーとの共有ドライブについてでしたが、 自身の特定のパスを共有フォルダとして公開するのもSMB系コマンドレットSMBShareを使います。
PS> Get-Command -Module SMBShare | where name -like "*SMBShare*" CommandType Name ModuleName ----------- ---- ---------- Function Block-SmbShareAccess SmbShare Function Get-SmbShare SmbShare Function Get-SmbShareAccess SmbShare Function Grant-SmbShareAccess SmbShare Function New-SmbShare SmbShare Function Remove-SmbShare SmbShare Function Revoke-SmbShareAccess SmbShare Function Set-SmbShare SmbShare Function Unblock-SmbShareAccess SmbShare
今回は、簡単に共有フォルダを作るシーンを考えてみましょう。
共有フォルダを作成する
さっそく、自身のD:\Documentをhogeとして共有してみます。
New-SmbShare –Name hoge –Path D:\Document\
testというユーザーにfull accessを与えたい場合は、以下のようにします。
New-SmbShare –Name hoge –Path D:\Document\ -FullAccess test
これではtestしかアクセスできません。他のユーザーにも与えるならどうぞ。
New-SmbShare –Name hoge –Path D:\Document\ -FullAccess test,hogehoge@outlook.com
Readアクセスだけ与えるのも簡単ですね。
New-SmbShare –Name hoge –Path D:\Document\ -FullAccess test -ReadAccess hogehoge@outlook.com
共有フォルダを取得する
当然IPC領域から取得します。いままでより格段に見やすいですね。
PS> Get-SmbShare Name ScopeName Path Description ---- --------- ---- ----------- ADMIN$ * C:\Windows Remote Admin C$ * C:\ Default share D$ * D:\ Default share E$ * E:\ Default share F$ * F:\ Default share hoge * D:\Document IPC$ * Remote IPC R$ * R:\ Default share Users * C:\Users
正直、これだけれもうれしいです。
共有フォルダを削除する
Name指定で出来るので簡単ですね。SMBShareの削除 (Confirm付き)です。
Remove-SmbShare -Name hoge
SMBShareの削除 (Confirmぬき)はForceを付けます。
Remove-SmbShare -Name hoge -Force