一次添加一个字符串数组中的项目
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}
我有这行代码:
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}