Invoke-Command的问题

时间:2017-09-06 11:07:37

标签: powershell exchange-server

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

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

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

运行后我收到错误:

  

此运行空间不支持该语法。如果运行空间处于无语言模式,则会发生这种情况。

image

当我删除$members_id =时,它运行良好。

请告诉我你是否知道为什么会这样。

1 个答案:

答案 0 :(得分:4)

我不太确定您为什么会收到错误(可能是因为您打开了$Session的方式),但是如果您想要输出远程命令{\ n} {1}}在本地变量Get-DistributionGroupMember中,您需要将代码更改为以下内容:

$members_id

仅当您要将要解析其成员的组的ID传递到scriptblock时才使用$members_id = Invoke-Command -Session $Session -ScriptBlock { Get-DistributionGroupMember -Identity "power_shell_test" } 。您可以使用-ArgumentList指令将参数分配给scriptblock中的变量:

Param()

或使用automatic variable $members_id = Invoke-Command -Session $Session -ScriptBlock { Param($id) Get-DistributionGroupMember -Identity $id } -ArgumentList $group_id

$args

或者,您可以通过$members_id = Invoke-Command -Session $Session -ScriptBlock { Get-DistributionGroupMember -Identity $args[0] } -ArgumentList $group_id scope modifier

访问scriptblock之外的变量
using: