问题描述
我需要编写一个脚本来在 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