【问题标题】:How can I pass a comma seperated list of values within PowerShell as a parameter to a CmdLet using splatting with hash tables?如何使用 splatting 与哈希表将 PowerShell 中的逗号分隔值列表作为参数传递给 CmdLet?
【发布时间】:2015-12-17 10:28:30
【问题描述】:

我想对哈希表使用“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

如果我用同样的方式替换这个命令,我会得到这个:

$Args = @{ChangeAccess = 'MACHINE\User1,MACHINE\User2'}
New-SmbShare -Name Share$ -Path C:\Folder @Args

现在命令失败并出现“CimException”。有什么想法可以解决这个问题吗?

【问题讨论】:

  • 'MACHINE\User1','MACHINE\User2'
  • 谢谢,这成功了!我将@Chard 的答案标记为解决方案,因为我无法将您的评论标记为解决方案。

标签: powershell parameter-passing hashtable powershell-cmdlet


【解决方案1】:

参数-ChangeAccess <string[]> 接受一个字符串或一个字符串数组。这就是为什么 ChangeAccess = 'MACHINE\User1,MACHINE\User2' 失败的原因 它将整个字符串视为一个用户,您需要对多个用户使用数组选项:

$Args = @{ChangeAccess = 'MACHINE\User1','MACHINE\User2'}

【讨论】:

  • 谢谢,这就像一个魅力!我以后需要更详细地查看功能描述! ;)
猜你喜欢
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
相关资源
最近更新 更多