【问题标题】:Problems with Invoke-Command调用命令的问题
【发布时间】:2023-04-01 04:10:02
【问题描述】:

在我的脚本中,我想让 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 = 时,它运行良好。

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

【问题讨论】:

  • 我会说“Invoke-Command 的问题”不是一个有意义的标题...

标签: powershell exchange-server


【解决方案1】:

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

$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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 2020-07-23
    • 2013-12-17
    • 2021-04-27
    相关资源
    最近更新 更多