経緯
前回CloudBerry Driveでマウントしたフォルダを共有するまでやりましたが、その方法だと再起動時に共有設定がクリアされてしまう問題がありました。
記事の最後にPowerShellなどでバッチ化したらできるのでは??みたいなことを書いたので、PowerShellのコマンドで共有設定が可能か試してみます。
↓前回記事↓
capybara-engineer.hatenablog.com
実施内容
- 事前確認
- PowerShellでNew-SmbShareコマンド実行、結果確認
実施作業
事前確認
まずはマウント設定とマウント先を確認します。

前回記事を作成したあとに再起動をかけているので、共有設定は外されています。

使用するPowerShellのバージョンはこちら

New-SmbShareコマンドヘルプ
名前
New-SmbShare
概要
Creates an SMB share.
構文
New-SmbShare [-Name] <String> [-Path] <String> [[-ScopeName] <String>] [-CachingMode {None | Manual | Documents | P
rograms | BranchCache | Unknown}] [-CATimeout <UInt32>] [-ChangeAccess <String[]>] [-CimSession <CimSession[]>] [-C
oncurrentUserLimit <UInt32>] [-ContinuouslyAvailable <Boolean>] [-Description <String>] [-EncryptData <Boolean>] [-
FolderEnumerationMode {AccessBased | Unrestricted}] [-FullAccess <String[]>] [-NoAccess <String[]>] [-ReadAccess <S
tring[]>] [-SecurityDescriptor <System.String>] [-Temporary] [-ThrottleLimit <Int32>] [-Confirm] [-WhatIf] [<Common
Parameters>]
説明
The New-SmbShare cmdlet exposes a file system folder to remote clients as a Server Message Block (SMB) share.
To delete a share that was created by this cmdlet, use the Remove-SmbShare cmdlet.
関連するリンク
Get-SmbShare
Remove-SmbShare
Set-SmbShare
注釈
例を参照するには、次のように入力してください: "get-help New-SmbShare -examples".
詳細を参照するには、次のように入力してください: "get-help New-SmbShare -detailed".
技術情報を参照するには、次のように入力してください: "get-help New-SmbShare -full".
オンライン ヘルプを参照するには、次のように入力してください: "get-help New-SmbShare -online"
今回使用するパラメータ
| パラメータ | 説明 |
|---|---|
| -Name |
80文字未満でSMB共有の名前を設定 |
| -Path | 共有するフォルダのフルパスを指定 |
| -ErrorAction | コマンドレットがエラーだった場合の処理内容を指定 |
| -ReadAccess | 共有するフォルダへの読み取り権限を設定するユーザ・グループを指定 |
| -ChangeAccess | 共有するフォルダへの書き込み権限を設定するユーザ・グループを指定 |
| -FullAccess | 共有するフォルダへのフルアクセス権限を設定するユーザ・グループを指定 |
今回実行するコマンド
New-SmbShare -Name "test1" -Path "D:\test1" -ErrorAction Stop -ReadAccess "TestGroup1" -ChangeAccess "TestGroup2" -FullAccess "TestGroup3"
PowerShellでNew-SmbShareコマンド実行、結果確認
それでは実際に実行してみます。

フォルダを確認すると共有設定がされていることが確認できました。

権限回りも想定通り設定されていました。
同じ共有名で実行するとエラーとなるため、設定する場合は共有単位で名前を変えるか、一度Remove-SmbShareで削除して再度共有設定する必要があります。

ちなみに、存在しないユーザ・グループを指定すると、『アカウント名とセキュリティ ID の間のマッピングは実行されませんでした。』とエラー出力されます。

これは今回調べて知ったのですが、Windows NT系のOSはユーザやアカウント等を管理する際、内部で使用する数値SIDを使って管理しており、同じ名前のユーザであっても同じSIDは使われていません。
上記のエラーは、指定したユーザ・グループに紐づくSIDが解決できないことで発生したエラーでした。
それが中々理解できずにちょっとハマってました。。
※ざっくりとしか理解していないので、間違ってるかもしれませんが

感想及び所感
バッチを作成するところまではできませんでしたが、自分が知りたいところは解決できたのでよかったです。
バッチ化は時間があればやります。。