Выполнение нескольких команд в блоке сценариев и возврат нескольких ответов
Я хотел бы подключиться к удаленному хосту, запустить 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