【问题标题】:Issue passing a variable through a Powershell script通过 Powershell 脚本传递变量的问题
【发布时间】:2017-08-16 02:25:11
【问题描述】:

尝试创建一个 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 部分的语法有问题。

如何将最后一部分分开以使其正常工作?

【问题讨论】:

    标签: powershell variables microsoft-distributed-file-system


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复。我应该将该代码放在其他变量的开头吗?
    • @Andy 不,我刚刚清理了我将如何重写您的 dfsutil 部分。您可以在通话前抛出&,并在${Username}:F 周围使用{} 大括号
    猜你喜欢
    • 2021-03-01
    • 2013-05-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多