通过Powershell脚本传递变量的问题

时间:2017-08-15 18:14:25

标签: powershell variables dfs

尝试创建powershell脚本以执行以下任务: - 要求在创建文件夹和分配权限时使用用户名 - 使用该用户名创建NAS上的文件夹 - 创建具有相同名称的DFS文件夹并为其分配目标路径 - 为用户分配对该DFS文件夹的显式权限

我的脚本如下所示:

$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 个答案:

答案 0 :(得分:1)

尝试调用运算符:&。此外,对$Username的变量调用将导致冒号问题,因此您希望在变量名称周围使用{}

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