在我的脚本中,我希望将Exchange Online通讯组成员添加到数组$members_id中。

我想在远程服务器上运行cmdlet Get-DistributionGroupMember,所以它看起来像这样:

Invoke-Command -Session $Session -ScriptBlock {
    $members_id = Get-DistributionGroupMember -Identity "power_shell_test"
} -ArgumentList $members_id

运行此后,我得到一个错误:



powershell - 调用命令问题-LMLPHP

当我删除$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/

10-12 12:51
查看更多