在scriptblock中执行多个命令并返回多个响应

时间:2015-06-02 15:46:12

标签: powershell scriptblock

我想连接到远程主机,运行2个命令并返回单独的响应。但是,我想将此作为一个脚本块的一部分。我之前用一个命令完成了这个,但两个人没有快乐。例如

gc "C:\test.txt"

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

合并为一个脚本块并将该脚本块传递给 Invoke-Command 并从该调用中提取各个响应。

3 个答案:

答案 0 :(得分:3)

一种选择是将结果加载到哈希表中,返回该表。

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

$result = &$Scriptblock

这消除了任何命令返回null的结果中的任何歧义。

答案 1 :(得分:1)

我不完全确定我理解你的问题,你试过这样:

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

    $TestText,$WebServices
}

$FirstJob,$SecondJob = Invoke-Command -Session $remoteSession -ScriptBlock $Workload

答案 2 :(得分:0)

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