2

我正在通过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 时进行异步管道调用?

谢谢

4

1 回答 1

2

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

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

于 2013-02-06T21:45:26.043 回答