从PowerShell中使用参数和凭据启动.ps1脚本并从中获取输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从PowerShell中使用参数和凭据启动.ps1脚本并从中获取输出相关的知识,希望对你有一定的参考价值。

我认为我的问题有一个简单的解决方案。但是现在我有点困惑。我有Java代码,该代码开始1个Powershell脚本。该Powershell脚本必须启动其他脚本。Java-> Powershell.ps1->Script1.ps1Script2.ps1Script3.ps1脚本。...

Script1,2,.. etc执行多个任务并返回字符串值。

我已经尝试过启动过程,调用命令和调用表达式

假设script1.ps1为:

$a = 1+2
$a

启动过程对我来说最好,但是我没有得到输出:

$arguments = "C:\..\script1.ps1" + " -ClientName" + $DeviceName
$output = Start-Process powershell -ArgumentList $arguments -Credential $credentials
$output 

$ output ist NULL。

非常感谢!

答案

Start-Process默认产生no输出。

(使它产生输出直接的唯一方法是使用Start-Process,它随后不返回脚本的输出,而是一个-PassThru实例代表新创建的过程-见下文。)

System.Diagnostics.Process和-RedirectStandardOutput参数,用于捕获脚本在files中作为as text的输出。然后您可以在PowerShell

完成新过程之后]中读取这些文件,您可以通过以下两种方式之一来确保:

  • 还将-RedirectStandardError开关传递到-Wait,以使调用同步,这意味着当Start-Process返回时,输出已被捕获在指定的文件中。

  • 使用Start-Process获得-PassThru实例并将其稍后传递给System.Diagnostics.Process(或直接使用其System.Diagnostics.Process方法;属性Wait-Process可用于检查进程是否仍在运行)。
  • 这是您可能遇到的情况:

    Wait-Process

    以上是关于从PowerShell中使用参数和凭据启动.ps1脚本并从中获取输出的主要内容,如果未能解决你的问题,请参考以下文章

    将参数从批处理文件传递到 PowerShell 脚本

    将参数从批处理文件传递到 PowerShell 脚本

    powershell 一个ps1 运行

    powershell 启动elasticsearch.ps1

    powershell 启动elasticsearch.ps1

    从 Powershell ISE 中的另一个 PS1 脚本调用 PowerShell 脚本 PS1