我想使用" splatting"使用哈希表将变量参数传递给CmdLet。我想修改以下命令:
New-SmbShare -Name Share$ -Path C:\Folder -ChangeAccess MACHINE\User1
如果我仅针对ChangeAccess
参数执行此操作,我最终会得到以下结果:
$Args = @{ChangeAccess = 'MACHINE\User1'}
New-SmbShare -Name Share$ -Path C:\Folder @Args
这非常有效。
参数ChangeAcces
接受逗号分隔的用户列表,因此如果我想为两个用户提供共享的更改权限,我将使用以下命令:
New-SmbShare -Name Share$ -Path C:\Folder -ChangeAccess MACHINE\User1,MACHINE\User2
如果我用splatting以相同的方式替换此命令,我最终得到这个:
$Args = @{ChangeAccess = 'MACHINE\User1,MACHINE\User2'}
New-SmbShare -Name Share$ -Path C:\Folder @Args
现在命令失败并出现" CimException"。我有什么想法可以解决这个问题吗?
答案 0 :(得分:2)
参数-ChangeAccess <string[]>
接受字符串或字符串数组。这就是ChangeAccess = 'MACHINE\User1,MACHINE\User2'
失败的原因。它将整个字符串视为一个用户,您需要为多个用户使用数组选项:
$Args = @{ChangeAccess = 'MACHINE\User1','MACHINE\User2'}