powershell - 调用命令的问题

标签 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

运行后出现错误:

The syntax is not supported by this runspace. This can occur if the runspace is in no-language mode.

image

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

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

最佳答案

我不太清楚为什么会出现错误(这可能是因为您打开 $Session 的方式),但是如果您想要远程命令的输出 Get- DistributionGroupMember 在局部变量 $members_id 中,您需要将代码更改为如下内容:

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

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

$members_id = Invoke-Command -Session $Session -ScriptBlock {
    <b>Param($id)</b>
    Get-DistributionGroupMember -Identity <b>$id</b>
} <b>-ArgumentList $group_id</b>

或使用 automatic variable $参数:

$members_id = Invoke-Command -Session $Session -ScriptBlock {
    Get-DistributionGroupMember -Identity <b>$args[0]</b>
} <b>-ArgumentList $group_id</b>

或者,您可以通过 using: scope modifier 访问脚本 block 之外的变量:

$members_id = Invoke-Command -Session $Session -ScriptBlock {
    Get-DistributionGroupMember -Identity <b>$using:group_id</b>
}

关于powershell - 调用命令的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46073647/

相关文章:

powershell - 如果进程达到 CPU 使用率的 x%,则终止该进程

node.js - 使用 Windows Azure Powershell 设置唯一的部署名称

xml - Powershell - XPath - SUM() 和 Count() 子节点 - 仅限 XPath 表达式

calendar - EWS : Access shared calendars

powershell - 在 PowerShell 中对属性上的对象进行分组

email - 尝试将邮件发送到 Office 365 时,Send-MailMessage 中没有端口参数?

powershell - -ExpandProperty 不通过远程 PowerShell 显示所有属性

java - 用于连接到 Outlook Exchange Server 的 Exchange Web 服务 (EWS) 或 JavaMail Api - Java

.net - 从交换帐户检索电子邮件...修改并重新发送

email - 用于 Exchange/O365 POP3 和 SMTP 的双足客户端凭据 OAuth 流程