【发布时间】:2020-09-10 03:49:56
【问题描述】:
我有这行代码:
invoke-command -Session $s -scriptblock {Set-Adgroup $using:ListBox1.SelectedItem -add @{proxyaddresses="$using:smtps"}}
$s 是合法会话,例如 $listbox.selecteditem 是一个名为 Old-Sales-Users 的 dist 组,而 $smtps 是一个字符串数组,如下所示: @smtps = "smtp:bla@bla.bla", "smtp:bla2@bla.bla", "smtp:bla3@bla.bla"
我想调用这个命令,这样我就可以将这些 smtps 添加到 dist 组的代理地址。但这里的工作方式是将3个字符串添加到同一行,所以我得到一行proxyaddress与“smtp:bla@bla.bla smtp:bla2@bla ....”我希望它创建3个单独的行(或者更多,如果该数组中有更多)意味着在数组中的每个项目之后按下 ENTER ......我的第二个问题是这是否是正确的方法?因为我实际上打开了 3 个调用命令,有没有办法使用 1 个调用命令将所有数组添加到代理地址?
谢谢
【问题讨论】:
-
删除
"周围的双引号$using:smpts -
它会抛出一个错误:无效类型'System.Management.Automation.PSObject'。参数名称:proxyaddresses + CategoryInfo : InvalidArgument: (OldIT:ADGroup) [Set-ADGroup], ArgumentException + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.SetADGroup + PSComputerName : dc01
-
这是
$using:ListBox1.SelectedItem引用的对象有问题,可以试试$GroupName = $ListBox1.SelectedItem.DistinguishedName,然后在远程脚本块中将$using:GroupName传递给Set-ADGroup -
我猜这可能行得通,但我需要更改更多代码行,因为当我们到达这里时,$listbox1.selecteditems 只是字符串,有没有办法传递字符串数组并到达它们中的每一个为自己?我猜一个解决方案将是一个进入数组内部的循环并为每个项目调用命令,但这就像一个矫枉过正的 ithink
-
试试
-Add @{proxyaddresses= [string[]]$using:smtps}
标签: powershell command invoke