2017-08-15 88 views
1

試圖創建PowerShell腳本來執行以下任務: - 要求在創建文件夾和分配權限時使用用戶名 - 在我們的NAS上使用該用戶名作爲名稱創建文件夾 - 創建具有相同名稱的DFS文件夾,併爲其指定一個目標路徑 - 分配給用戶明確權限到DFS文件夾通過Powershell腳本傳遞變量的問題

我的腳本如下所示:

$Username = read-host "Type Username" 

#Create new folder on the NAS and set necessary permissions 
New-Item -Path \\NAS\USER_SHARE\$Username -ItemType Directory 

#Create new DFS folder and target 
New-DfsnFolder -Path "\\DOMAIN.local\user\$Username" -TargetPath "\\NAS\USER_SHARE\$Username" 

#Assign explicit permissions to DFS folder for user 
dfsutil property SD grant \\DOMAIN.local\user\$Username DOMAIN\$Username:F protect 

它執行的一切,但日最後一行。它創建DFS文件夾但不提供權限。沒有給出錯誤消息,只是輸出dfsutil命令的幫助信息。當我用靜態用戶名獨立運行最後一行時,它是成功的。所以我相信這個代碼的最後一行的$ Username:F部分的語法有些混亂。

如何分開最後一部分來完成此項工作?

回答

1

試試invoke操作符:&。此外,您對$Username的變量調用將導致冒號問題,因此您希望圍繞變量名使用{}

$Params = @('property','SD','grant', 
      "\\DOMAIN.local\user\$Username", 
      "DOMAIN\${Username}:F", 
      'protect') 
& dfsutil @Params 
+0

謝謝你的迴應。我應該在其他變量的開頭放置該代碼? – Andy

+1

@Andy不,我剛剛清理了我將如何重寫你的'dfsutil'部分。你可以在調用之前拋出一個'&',並在'$ {Username}'周圍使用'{}'大括號:F' – TheIncorrigible1