Выполнение нескольких команд в блоке сценариев и возврат нескольких ответов

Я хотел бы подключиться к удаленному хосту, запустить 2 команды и вернуть отдельные ответы. Однако я хотел бы сделать это как часть одного скриптового блока. Я делал это раньше с одной командой, но без радости с двумя. Например, имея

gc "C:\test.txt"

а также

get-webservice | ? {$_.Name -eq "foo"}

объединяются в блок сценариев и передают этот блок сценариев Invoke-Command и извлекают отдельные ответы от этого вызова.

3 ответа

Решение

Одним из вариантов является загрузка результатов в хеш-таблицу, возвращаемую.

$Scriptblock = 
{
  $response = @{}
  $response.dir = gc "C:\test.txt"
  $response.service = get-webservice | ? {$_.Name -eq "w32time"}
  $response
}

$result = &$Scriptblock

Это устраняет любую двусмысленность в результатах, любая из команд возвращает нуль.

Не совсем уверен, что я понимаю вашу проблему, вы пытались так:

$Workload = {
    $TestText = Get-Content "C:\test.txt"
    $WebServices = Get-WebService | ? {$_.Name -eq "foo"}

    $TestText,$WebServices
}

$FirstJob,$SecondJob = Invoke-Command -Session $remoteSession -ScriptBlock $Workload
function scriptBlockContent ($myFile)
{
    $TestText = Get-Content $myFile
    $WebServices = Get-WebService | ? {$_.Name -eq "foo"}

    $TestText,$WebServices
}

$FirstJob,$SecondJob = Invoke-Command -Session $remoteSession -ScriptBlock ${function:scriptBlockContent} -ArgumentList $myFile
Другие вопросы по тегам