在脚本块中执行多个命令并返回多个响应
Executing multiple commands in a scriptblock and returning multiple responses
我想连接到远程主机,运行 2 个命令和 return 单独的响应。但是,我想将其作为一个脚本块的一部分来执行。我以前用一个命令完成过这个,但对两个命令没有任何乐趣。例如有
gc "C:\test.txt"
和
get-webservice | ? {$_.Name -eq "foo"}
合并到一个脚本块中并将该脚本块传递给 Invoke-Command 并从该调用中提取各个响应。
不太确定我理解你的问题,你试过这样吗:
$Workload = {
$TestText = Get-Content "C:\test.txt"
$WebServices = Get-WebService | ? {$_.Name -eq "foo"}
$TestText,$WebServices
}
$FirstJob,$SecondJob = Invoke-Command -Session $remoteSession -ScriptBlock $Workload
一个选项是将结果加载到散列 table 中,return 即。
$Scriptblock =
{
$response = @{}
$response.dir = gc "C:\test.txt"
$response.service = get-webservice | ? {$_.Name -eq "w32time"}
$response
}
$result = &$Scriptblock
这消除了任何命令结果中的任何歧义return为 null。
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
我想连接到远程主机,运行 2 个命令和 return 单独的响应。但是,我想将其作为一个脚本块的一部分来执行。我以前用一个命令完成过这个,但对两个命令没有任何乐趣。例如有
gc "C:\test.txt"
和
get-webservice | ? {$_.Name -eq "foo"}
合并到一个脚本块中并将该脚本块传递给 Invoke-Command 并从该调用中提取各个响应。
不太确定我理解你的问题,你试过这样吗:
$Workload = {
$TestText = Get-Content "C:\test.txt"
$WebServices = Get-WebService | ? {$_.Name -eq "foo"}
$TestText,$WebServices
}
$FirstJob,$SecondJob = Invoke-Command -Session $remoteSession -ScriptBlock $Workload
一个选项是将结果加载到散列 table 中,return 即。
$Scriptblock =
{
$response = @{}
$response.dir = gc "C:\test.txt"
$response.service = get-webservice | ? {$_.Name -eq "w32time"}
$response
}
$result = &$Scriptblock
这消除了任何命令结果中的任何歧义return为 null。
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