在我的脚本中,我希望将Exchange Online通讯组成员添加到数组$members_id
中。
我想在远程服务器上运行cmdlet Get-DistributionGroupMember
,所以它看起来像这样:
Invoke-Command -Session $Session -ScriptBlock {
$members_id = Get-DistributionGroupMember -Identity "power_shell_test"
} -ArgumentList $members_id
运行此后,我得到一个错误:
当我删除
$members_id =
时,它运行良好。请告诉我您是否知道它为什么这样工作。
最佳答案
我不太确定为什么会收到错误(可能是由于您打开$Session
的方式所致),但是如果要在本地变量Get-DistributionGroupMember
中输出远程命令$members_id
,则需要将代码更改为如下所示:
$members_id = Invoke-Command -Session $Session -ScriptBlock {
Get-DistributionGroupMember -Identity "power_shell_test"
}
仅当您要将要解析其成员的组的ID传递到脚本块中时,才使用
-ArgumentList
。您可以使用Param()
指令将参数分配给脚本块中的变量:$members_id = Invoke-Command -Session $Session -ScriptBlock {
Param($id)
Get-DistributionGroupMember -Identity $id
} -ArgumentList $group_id
或使用automatic variable
$args
:$members_id = Invoke-Command -Session $Session -ScriptBlock {
Get-DistributionGroupMember -Identity $args[0]
} -ArgumentList $group_id
或者,您可以通过
using:
scope modifier访问脚本块之外的变量:$members_id = Invoke-Command -Session $Session -ScriptBlock {
Get-DistributionGroupMember -Identity $using:group_id
}
关于powershell - 调用命令问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51058753/