2

我正在尝试使用 Powershell 2.0 从本地计算机上的 Powershell 窗口在远程计算机上执行 Powershell 脚本。我的目标是将远程计算机上脚本的退出代码存储到本地计算机上的变量中,无论它是在本地脚本中还是只是在本地 Powershell 窗口中。目前我得到的只是一条错误消息,说明以下内容。. .

Cannot invoke pipeline because run space is not in the Opened state. Current state of run space is Closed. + CategoryInfo: OperationStopped: Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) [], InvalidRunspaceStateException + FullyQualifiedErrorID : RemotePipeLineExecutionFailed

我的情况是这样的。. . 我正在尝试从远程计算机上的脚本将退出代码返回到本地计算机上的变量。这里实际上涉及两个脚本,它们都在远程机器上并且在同一个文件夹中。第一个脚本称为“VerifyBatchExistence.ps1”。该文件将一个名为“Batch.ps1”的批处理文件作为输入,一个整数表示在“Batch.ps1”不存在时要输出的退出代码,另一个整数表示“Batch.ps1”所需的参数数量,以及作为“Batch.ps1”输入所需的变量字符串。在“Batch.ps1”中,当我传入的参数之一无效时,我希望触发以下代码。. .

exit 931

在“VerifyBatchExistence.ps1”中,我有以下代码。. .

Powershell - File .\Batch.ps1 BATCHPARAM1 BATCHPARAM2

$Code1 = $LASTEXITCODE

$Host.SetShouldExit($Code1)

exit

在我的本地机器上,我做了以下 . . .

$Remote=New-PSSession -ComputerName 7.7.7.7 -Credential $cred

Invoke-Command -Session $Remote -ScriptBlock {$Code1=.\VerifyBatchExistence.ps1 7777 2 .\Batch.ps1 NAME1 NAME2}

$Code2=Invoke-Command -Session $Remote -ScriptBlock {$Code1}
$Code2

在此之后,我收到上述错误。知道我做错了什么,或者如何从远程机器上将退出代码返回到本地机器上的变量,该远程机器有一个使用并运行第二个脚本的脚本?对此的任何答案将不胜感激。谢谢。

4

1 回答 1

0

我这样做:

invoke-command -session $Remote -scriptblock { mycommand }
$remotelastexitcode = invoke-command -session $Remote -ScriptBlock { $lastexitcode }

if ( $remotelastexitcode -ne 0 )
{
    "$remotelastexitcode"
    exit 1
}
于 2013-10-31T21:54:38.983 回答