调用命令的问题
Problems with Invoke-Command
在我的脚本中,我想让 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 传递到脚本块时才使用 -ArgumentList
。您可以使用 Param()
指令将参数分配给脚本块内的变量:
$members_id = Invoke-Command -Session $Session -ScriptBlock {
<b>Param($id)</b>
Get-DistributionGroupMember -Identity <b>$id</b>
} <b>-ArgumentList $group_id</b>
或使用 automatic variable $args
:
$members_id = Invoke-Command -Session $Session -ScriptBlock {
Get-DistributionGroupMember -Identity <b>$args[0]</b>
} <b>-ArgumentList $group_id</b>
或者,您可以通过 using:
scope modifier:
访问脚本块外的变量
$members_id = Invoke-Command -Session $Session -ScriptBlock {
Get-DistributionGroupMember -Identity <b>$using:group_id</b>
}
在我的脚本中,我想让 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 传递到脚本块时才使用 -ArgumentList
。您可以使用 Param()
指令将参数分配给脚本块内的变量:
$members_id = Invoke-Command -Session $Session -ScriptBlock {
<b>Param($id)</b>
Get-DistributionGroupMember -Identity <b>$id</b>
} <b>-ArgumentList $group_id</b>
或使用 automatic variable $args
:
$members_id = Invoke-Command -Session $Session -ScriptBlock {
Get-DistributionGroupMember -Identity <b>$args[0]</b>
} <b>-ArgumentList $group_id</b>
或者,您可以通过 using:
scope modifier:
$members_id = Invoke-Command -Session $Session -ScriptBlock {
Get-DistributionGroupMember -Identity <b>$using:group_id</b>
}