なんていうかですね、 SMB コマンドレットは本当に便利で Server管理には欠かせないのに 日本語圏では一切記事を見ないのが本当にアレです。
そもそも PowerShell 3.0以降の日本語記事をほとんど見ないのでいいといえばいいのですが、それでいいのですかねー?
簡単な導入編ですが、 SMB を使った 共有フォルダ設定についても触れておきます。
え? net share? あ、はい。2012年、2013年でもそういう記事ありますからねー ((
前提
SMB Share コマンドレットは、administartor権限を要します。
管理者権限で PowerShellを起動してくださいね!(要はUAC許可してね)
SMBShareコマンドレット
PowerShell 3.0は Windows Management Framework 3.0 = SMB 3.0 ベースです。
なので、 SMB 関連はほぼPowerShellで自動化可能です。
前回はリモートサーバーとの共有ドライブについてでしたが、 自身の特定のパスを共有フォルダとして公開するのも SMB系コマンドレットでできます。
そのために利用するのが、 SMBShare コマンドレットです。
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
まだ、net share とかいう人は.....いないと祈ります。
共有フォルダを取得する
当然 IPC領域から取得します。
いままでより格段に見やすいですね。
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
サンプルソース
さっくり纏めましたが、色々オプションもあります。
ぜひ試して感動してください。
https://github.com/guitarrapc/PowerShellUtil/blob/master/Set-ShareFolder/Set-ShareFolder.ps1