我有这样一行代码。
invoke-command -Session $s -scriptblock {Set-Adgroup $using:ListBox1.SelectedItem -add @{proxyaddresses="$using:smtps"}}
$s是合法的会话, $listbox.selecteditem是一个叫Old-Sales-Users的dist组, $smtps是一个字符串数组,比如:@smtps = "smtp:[email protected]", "smtp:[email protected]", "smtp:[email protected]"
我想调用这个命令,这样我就可以把这些smtps添加到dist组的proxyaddress中。但是这里的工作方式是把三个字符串添加到同一行,所以我得到的是一行proxyaddress "smtp:[email protected] smtp:bla2@bla......"。 "我想让它创建3个独立的行(或更多,如果有更多的数组),这意味着像一个ENTER被按下后,在数组中的每个项目......我的第二个问题是,如果这是正确的方式来做这个? 因为我实际上打开3个调用命令,有一个方法使用1调用命令添加所有的数组到proxyaddress?
谢谢您
把我的评论作为答案发表出来。
虽然在文档中没有明确说明 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}