【问题标题】:Powershell Wait for install to complete using cmdPowershell 使用 cmd 等待安装完成
【发布时间】:2016-03-09 16:21:54
【问题描述】:

我正在运行一个需要调用 setup exe 的脚本,然后是另一个需要先完成的脚本才能继续,现在由于尴尬的场景,这是使用 cmd 完成的,因为我需要添加开关和这样和变量,就像我得到的那样,我可以使用启动进程然后 -wait 但该进程会打开单独的 msp,并且使用 cmd 正是我发现实际运行设置的方法。

所以我的问题是如何让我的脚本等待我的命令完成并在继续之前完成安装?

我试过环顾四周,但它看起来并不适合我使用 cmd 运行这些程序的场景。

我当前的代码是...

$inslocation = "install\location.exe" 
$insarg = "arguments" 
Start-process $inslocation $insarg -wait

非常感谢任何帮助!提前谢谢你。

【问题讨论】:

  • 请发布您的代码,以便我们了解您在说什么
  • 对不起!最初我实际上是使用 cmd 来调用命令,但我刚刚回答了我自己的问题,我完全度过了一个金发碧眼的日子!
  • 从头开始,我有点超前所以现在我有 $inslocation = "install\location.exe" $insarg = "arguments" Start-process $inslocation $insarg -wait I此后意识到它启动了一个安装程序,然后启动了其他几个 msp 文件,并在这些文件完成时关闭了安装过程,我需要在继续之前完成整个事情。再次对整个混乱感到抱歉!
  • 请编辑您的问题并在此处添加代码,以便实际阅读。

标签: powershell process cmd installation


【解决方案1】:

我有一个名为 SoftwareInstallManager 的 PowerShell 模块可能会有所帮助。它专为您的工作而设计。它有一个名为 Processes 的子模块,该模块具有用于说明父 setup.exe 启动的任何子进程的函数。

导入后,可以这样使用:

Install-Software -OtherInstallerFilePath 'C:\install\location.exe' -OtherInstallerArgs 'args here'

它将启动 location.exe 安装程序,等待它和所有子进程完成后再释放控制权。

【讨论】:

  • 这听起来像是可以工作的东西,但我从来没有在脚本中真正安装过模块,最好的方法是什么,这个脚本需要被复制并运行一个按需的基础,所以我每次运行脚本时都必须安装它并手动调用它,而不是事先部署它。另外,我需要模块的哪些文件,只是 softwareinstallmanager.psd1 ? V2 兼容的?
  • 没关系,我可以将它复制到模块目录并在脚本中导入它,我将对其进行测试,但我很确定这会起作用,谢谢,巨大的帮助!
  • 太棒了!如果是,请务必将其标记为答案。
  • 您好,抱歉回复晚了,我才来得及测试,不幸的是,它对我不起作用,因为我的程序,例如,打开一个名为 Setup.exe 的进程,然后打开 2 个附加进程,但在 2 个进程继续运行时关闭安装程序。我现在必须做的是获取 2 进程的名称,并根据名称获取进程的 id,然后要求它在该进程 id 上等待进程,对于这两个进程,然后继续下一次安装。
【解决方案2】:

您的问题不太清楚,但我相信这会让您走上正轨。

最简单的方法是使用 Wait-Process。

Start-Process "YourProcess"   
Wait-Process -name "YourProcessName" -erroraction SilentlyContinue
...

一个使用notepad.exe的例子:

Start-Process notepad.exe

Wait-Process -Name notepad -ErrorAction SilentlyContinue

Write-Host "notepad is now closed"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-24
    • 2018-03-04
    • 2012-10-16
    • 2019-03-05
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多