从PowerShell显示exe安装的进度?

时间:2013-02-06 21:36:03

标签: powershell

我正在通过powershell静默安装文件,但是想对安装进度给出反馈。我似乎无法在任何地方找到这些信息。这是我运行exe的代码:

$exe = "wls1033_oepe111150_win32.exe"
$xmlLocation = Resolve-Path "silent_install.xml"
$xmlLocation = "-silent_xml=" + $xmlLocation
$installLogLoc = Resolve-Path "wls_install.log"
$installLogLoc = "-log=" + $installLogLoc
$AllArgs = @('-mode=silent', $xmlLocation, $installLogLoc)
$filePath = Resolve-Path $exe
$p = New-Object System.Diagnostics.Process
$p.StartInfo.Filename = $filePath
$p.StartInfo.Arguments = $AllArgs
$p.Start();
$p.WaitForExit();

有没有办法做到这一点?我在一个安装exe的备用命令窗口中得到了一个提取过程的进度表,但除了它在那里大约10分钟没有任何指示。

编辑:所以看到这是不可能的,有没有办法在运行exe时进行异步管道调用?

由于

1 个答案:

答案 0 :(得分:2)

如果我错了,请纠正我,但我99%肯定这是不可能的。您的exe文件是单独的进程,而不是PowerShell脚本。它无法将状态消息传递给PowerShell会话。唯一的可能性是检测设置日志文件,尾随它并根据日志中的关键字更新PowerShell中的进度条。然而,这是一项重大任务,您需要为每个设置文件进行自定义。

我会尝试查看你的exe文件,看看它是否有一个“基本ui”(或类似类型)模式,你可以使用它来代替静默选项。最后一种选择是使用这样的选项重新打包设置(使安装仅使用进度条自动安装)。此解决方案仍然只在单独的窗口中显示进度条,而不是在PowerShell本身中显示。