在我的脚本中,我想让 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.
当我删除 $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/