Использование метода add с локальными переменными и Invoke-Command - PullRequest
0 голосов
/ 24 июня 2019

Я пробираюсь через ресурс сценария DSC, и часть его включает использование Invoke-Command на удаленном сервере. Часть того, что я пытаюсь сделать, это заполнить объект локального списка. Причина, по которой это необходимо сделать на удаленном хосте, заключается в том, что необходимый модуль для Configuration Manager (SCCM) должен находиться в системе, в которой установлена ​​консоль управления.

Я пытаюсь использовать метод .Add() с локальной переменной в удаленном сеансе, например:

$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». Есть ли что-нибудь вокруг этого? Я неправильно подхожу к этому?

1 Ответ

1 голос
/ 24 июня 2019

$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() возвращать нежелательные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...