在一个字符串数组中逐一添加项目。

问题描述 投票:0回答:1

我有这样一行代码。

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?

谢谢您

powershell command invoke
1个回答
2
投票

把我的评论作为答案发表出来。

虽然在文档中没有明确说明 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}
© www.soinside.com 2019 - 2024. All rights reserved.