在 cmdlet set-transportrule 中添加数组值

问题描述

我需要编写一个脚本来在 Exchange Online 传输规则的“-From”部分添加收件人。

脚本需要将规则中的实际收件人存储在一个变量中,并添加一个用户定义的变量。

在这里

#Get the rule and store in $rule variable
$rule = Get-TransportRule  -Identity xxxxx-xxxxx-xxxx-xxxx-xxxxx

#Define the new recipient to add to the rule
$newuser = "joe@contoso.com"

这是我的问题:

我可以使用 $rule 获取$rule.from 中的实际收件人。结果是一个数组,因为它已经有一些收件人。

命令 set-transportrule 接受 -from 选项中的变量 $rule.from 但只接受数组中的第一个收件人,而不接受其他人

Set-TransportRule -Identity xxxxx-xxxxx-xxxx-xxxx-xxxxx -From $rule.from,$newuser

但是如果我像这样使用带有索引的变量,它会起作用:

#Set the rule by re-adding the actual recipient and add $newuser
Set-TransportRule -Identity xxxxx-xxxxx-xxxx-xxxx-xxxxxc -From $rule.from[0],$rule.from[1],$newuser

我知道我可以使用 $rule.from.count 找到收件人的数量,但是在如何使用变量 cmdlet set-transportrule 中存在的所有索引自动生成 $rule.from 之后?

EX 如果我在数组中有 8 个收件人,则命令应该是:

Set-TransportRule -Identity xxxxx-xxxxx-xxxx-xxxx-xxxxxc -From $rule.from[0],$rule.from[2],$rule.from[3],$rule.from[4],$rule.from[5],$rule.from[6],$rule.from[7],$newuser

或者可能有更好的方法

谢谢!

解决方法

正如您在评论中所写的那样,我的“盲目猜测”奏效了 - 所以这就是答案:

将当前分配的地址存储到变量$arr

$arr=$rule.from 

$newuser 添加到变量

$arr += $newuser

并将 $arr 分配给 -From 参数

Set-TransportRule -Identity xxxxx-xxxxx-xxxx-xxxx-xxxxx -From $arr

总结一下:

#Get the rule and store in $rule variable
$rule = Get-TransportRule  -Identity xxxxx-xxxxx-xxxx-xxxx-xxxxx

#Define the new recipient to add to the rule
$newuser = "joe@contoso.com"

#store current addresses in $arr variable
$arr=$rule.from

#append $newuser to $arr variable
$arr += $newuser

#update transport rule with $arr variable
Set-TransportRule -Identity xxxxx-xxxxx-xxxx-xxxx-xxxxx -From $arr