[英]Create New SMB Share for every folder in a directory using powershell
我想為 windows 下目錄中的每個文件夾創建一個新的 SMB 共享,讓 smb 共享名稱與文件夾名稱相同,並將帳戶“Everyone”設置為“完全訪問”以獲得共享權限(所以不是 NTFS權限)
所以例如我有以下文件夾
然后應該充分命名共享名稱,因此 Folder1, Folder2, Folder3
我知道如何創建單個 smb 共享並使用以下內容設置具有完全訪問權限的本地用戶:
New-SmbShare -name "Test" -path "D:\Test" -FullAccess "TestServer\TestAccount"
我目前失敗的地方是以某種方式獲取所有文件夾名稱並相應地創建共享。 另外,我不知道如何告訴 PowerShell 帳戶“所有人”。
編輯:
當我按照你提到的方式嘗試時,出現以下錯誤
New-SmbShare: The trust relationship between this workstation and the primary domain failed.
At line:2 char:1
+ New-SmbShare -Name $_.Name -Path $._FullName -FullAccess Everyone
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (MSFT_SMBShare:ROOT/Microsoft/Windows/SMB/MSFT_SMBShare) [New-SmbShare], CimException
+ FullyQualifiedErrorId : Windows System Error 1789,New-SmbShare
因為我可以手動設置這個組的權限,我不知道為什么我在這里需要訪問域。 我知道眾所周知的 SID“World”或“Everyone”具有字符串值 S-1-1-0,也許您必須用“FullAccess S-1-1-0”替換“-FullAccess Everyone”? 但這對我不起作用..
來源: https : //docs.microsoft.com/en-us/windows/win32/secauthz/well-known-sids
編輯2
操作系統是德語,所以我必須將“Everyone”更改為德語版本(=“Jeder”)
使用Get-ChildItem -Directory
枚舉所有文件夾:
Get-ChildItem path\to\root\directory -Directory |ForEach-Object {
New-SmbShare -Name $_.Name -Path $_.FullName -FullAccess Everyone
}
無論操作系統語言如何,要生成Everyone
的正確翻譯,請使用其眾所周知的 SID:
$everyoneSID = [System.Security.Principal.SecurityIdentifier]::new('S-1-1-0')
$everyoneName = $everyoneSID.Translate([System.Security.Principal.NTAccount]).Value
Get-ChildItem path\to\root\directory -Directory |ForEach-Object {
New-SmbShare -Name $_.Name -Path $_.FullName -FullAccess $everyoneName
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.