调用命令的问题

Але*_*цко 3 powershell exchange-server

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

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

Invoke-Command -Session $Session -ScriptBlock {
    $members_id = Get-DistributionGroupMember -Identity "power_shell_test"
} -ArgumentList $members_id
Run Code Online (Sandbox Code Playgroud)

运行后我得到一个错误:

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

图像

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

如果您知道为什么会这样,请告诉我。

Ans*_*ers 5

我不太清楚为什么你会收到错误(可能是因为你打开的方式),但如果你想在本地变量中$Session输出远程命令,你需要将代码更改为如下所示:Get-DistributionGroupMember$members_id

$members_id = Invoke-Command -Session $Session -ScriptBlock {
    Get-DistributionGroupMember -Identity "power_shell_test"
}
Run Code Online (Sandbox Code Playgroud)

-ArgumentList仅当您想要将要解析其成员的组的 ID 传递到脚本块时才使用。您可以使用指令将参数分配给脚本块内的变量Param():

$members_id = Invoke-Command -Session $Session -ScriptBlock {
    Param($id)
    Get-DistributionGroupMember -Identity $id
} -ArgumentList $group_id
Run Code Online (Sandbox Code Playgroud)

或使用自动变量 $args:

$members_id = Invoke-Command -Session $Session -ScriptBlock {
    Get-DistributionGroupMember -Identity $args[0]
} -ArgumentList $group_id
Run Code Online (Sandbox Code Playgroud)

using: 或者,您可以通过作用域修饰符访问脚本块外部的变量:

$members_id = Invoke-Command -Session $Session -ScriptBlock {
    Get-DistributionGroupMember -Identity $using:group_id
}
Run Code Online (Sandbox Code Playgroud)