一次添加一个字符串数组中的项目

Adding items in an array of strings each one at a time

我有这行代码:

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 个字符串添加到同一行,所以我得到一行带有 "smtp:bla@bla.bla smtp:bla2@bla...." 的代理地址,我希望它创建 3 个单独的行(如果该数组中有更多,则更多)意味着像在数组中的每个项目之后按下 ENTER...我的第二个问题是这是否是正确的方法?因为我实际上打开了 3 个调用命令,有没有办法使用 1 个调用命令将所有数组添加到代理地址?

谢谢

对post我的评论作为回答:

尽管 Set-ADUser 的文档中并不清楚这一点,但将项目添加到 ProxyAddresses 列表需要新 smtp 地址数组 强类型, 所以数组中的每一项都是 [string]

类型

这意味着要添加的数组需要使用 [string[]]

进行转换

你可以看到这样的区别:

$arr1 = 'an','array','can','also','contain','numbers',1,2,3
$arr1.GetType().FullName  # --> System.Object[]

[string[]]$arr2 = 'an','array','can','also','contain','numbers',1,2,3
$arr2.GetType().FullName  # --> System.String[]

在你的情况下,使用

-Add @{proxyaddresses= [string[]]$using:smtps}