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

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

gc "C:\test.txt"

а также

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

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


person user1054637    schedule 02.06.2015    source источник


Ответы (2)


Один из вариантов — загрузить ваши результаты в хэш-таблицу, а затем вернуть ее.

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

$result = &$Scriptblock

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

person mjolinor    schedule 02.06.2015

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

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

    $TestText,$WebServices
}

$FirstJob,$SecondJob = Invoke-Command -Session $remoteSession -ScriptBlock $Workload
person Mathias R. Jessen    schedule 02.06.2015
comment
Я дал ему плюс один балл, но хотел добавить следующее наблюдение: вывод из $WebServices отображается для $FirstJob, и наоборот, я ожидал обратного. - person glenn garson; 11.10.2016