tech.guitarrapc.cóm

Technical updates

PowerShellでsmbコマンドレットで共有フォルダを作成する

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