2017-08-15 98 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