Возвращаем переменную из Invoke-Command - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь вывести данные результатов из Invoke-Command в файл .csv без особой удачи. Вот что у меня есть:

$output= @()

    ForEach ($server in $servers) {
        Invoke-Command -ComputerName $server -ScriptBlock {
            param($server_int, $output_int)
            If((Start-Process "c:\temp\installer.exe" -ArgumentList "/S" -Wait -Verb RunAs).ExitCode -ne 0) {
                $output_int += "$server_int, installed successfully"
            } else {
                $output_int += "$server_int, install failed"
            }
        } -ArgumentList $server, $output

    }

$output | Out-file -Append "results.csv

"

Как я понимаю, $ output_int доступен только в рамках сеанса Invoke-Command. Как мне go узнать о получении этой переменной $ output_int и добавить его значение / с в мой файл .csv?

Большое спасибо!

1 Ответ

1 голос
/ 06 апреля 2020

Используйте Write-Output командлет и сохраните вызов в массиве $output ...

Попробуйте:

$output = @()

    ForEach ($server in $servers) {
        $Output += Invoke-Command -ComputerName $server -ScriptBlock {
            param($server_int)
            If((Start-Process "c:\temp\installer.exe" -ArgumentList "/S" -Wait -Verb RunAs).ExitCode -ne 0) {
                Write-Output "$server_int, installed successfully"
            } else {
                Write-Output "$server_int, install failed"
            }
        } -ArgumentList $server
    }

$output | Out-file -Append "results.csv"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...