PowerShell脚本无法使用Invoke-Command

时间:2017-04-17 11:40:27

标签: powershell

我无法使用Invoke-Command远程运行​​以下PowerShell脚本。

来自服务器的

Invoke-Command

Invoke-Command -Session $session -Command {
    Param($env:FileLocation, $file)
    & "$env:FileLocation\$file"
} -ArgumentList ($env:FileLocation, $file) > ./windowsResult.txt

远程脚本:

$Process = Start-Process "$env:DATABASE_HOME\bin\psql.exe" -ArgumentList "-p "5433" -U "postgres" -d "TESTDB" -f $env:LOC_SCRIPT\DBTestScript.2.sql" -Wait -PassThru

if ($Process.ExitCode -eq 0) {
    Write-Host "Success!!!!"
} else {
    Write-Host "Error while executing DB Scripts"
}

执行此远程脚本时,它可以正常运行,数据库也会成功更新。

但是当用Invoke-Command调用它时,它不会。

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:0)

为什么不将脚本注入块中并远程执行?

$block={

    $Process = Start-Process "$env:DATABASE_HOME\bin\psql.exe" -ArgumentList "-p "5433" -U "postgres" -d "TESTDB" -f $env:LOC_SCRIPT\DBTestScript.2.sql" -Wait -PassThru

    if ($Process.ExitCode -eq 0) {
        Write-Host "Success!!!!"
    } else {
        Write-Host "Error while executing DB Scripts"
    }
}

Invoke-Command -Session $session -ScriptBlock $block

如果您需要块接受参数,请按照语法操作,但不要使用$env:前缀

我希望我能正确理解你需要达到的目标。