我正在研究DSC脚本资源,其中一部分涉及在远程服务器上使用.Add()
。我正在尝试做的部分工作是填充本地列表对象。之所以需要在远程主机上完成,是因为配置管理器(SCCM)的必需模块必须位于安装了管理控制台的系统上。
我试图在远程会话中将$UpdateGroupMembers = New-Object System.Collections.Generic.List[System.Object]
Invoke-Command -ComputerName $ServerName -Credential $Creds -ScriptBlock {
foreach ($Collection in $Using:UpdateCollections) {
$Member = Get-CMDeviceCollectionDirectMembershipRule -CollectionId $Collection
$Using:UpdateGroupMembers.Add($Member)
}
}
方法与本地变量一起使用,
Using
我收到错误消息“ primeValue
表达式中不允许表达”。有没有办法解决?我的处理方式有误吗?
答案 0 :(得分:1)
$using:
是范围修饰符。范围修饰符只能与变量名一起使用。
您想要的是在脚本块内的局部变量上调用局部方法。为此,请返回结果并将其用于填充对象。
$GroupMembers = Invoke-Command -ComputerName $ServerName -Credential $Creds -ScriptBlock {
$UpdateGroupMembers = New-Object System.Collections.Generic.List[System.Object]
foreach ($Collection in $Using:UpdateCollections) {
$Member = Get-CMDeviceCollectionDirectMembershipRule -CollectionId $Collection
[void]$UpdateGroupMembers.Add($Member)
}
$UpdateGroupMembers
}
以上内容在远程计算机上定义了列表,并将其填充到其中,并将执行后的结果存储在$GroupMembers
中。
旁注:[void]
强制转换是为了防止List.Add()
方法返回不需要的数据。