Powershell 启动过程中写入进度-等待
我正在尝试创建安装脚本,并在安装过程中显示进度条Powershell 启动过程中写入进度-等待,powershell,Powershell,我正在尝试创建安装脚本,并在安装过程中显示进度条 $localfolder= (Get-Location).path start-process -FilePath "$localfolder\Installer.exe" -ArgumentList "/silent /accepteula" -Wait 作为进度条,我想添加: for($i = 0; $i -le 100; $i++) { Write-Progress -Activity "Installer" -PercentComple
$localfolder= (Get-Location).path
start-process -FilePath "$localfolder\Installer.exe" -ArgumentList "/silent /accepteula" -Wait
作为进度条,我想添加:
for($i = 0; $i -le 100; $i++)
{
Write-Progress -Activity "Installer" -PercentComplete $i -Status "Installing";
Sleep -Milliseconds 100;
}
但是我找不到在安装程序运行时运行进度条的方法
如果有人有想法…你可以在进度条上随意使用线程选项,但我不推荐这样做 相反,使用
启动进程
放弃-Wait
,并使用-PassThru
返回
这样,您就可以检查进程是否已自行终止
这一点很重要,有两个原因,这两个原因都与进度栏没有实际跟踪安装进度有关:
进程
对象具有可用于此目的的属性
考虑到这些,我会这样做:
$localfolder= (Get-Location).path
$process = Start-Process -FilePath "$localfolder\Installer.exe" -ArgumentList "/silent /accepteula" -PassThru
for($i = 0; $i -le 100; $i = ($i + 1) % 100)
{
Write-Progress -Activity "Installer" -PercentComplete $i -Status "Installing"
Start-Sleep -Milliseconds 100
if ($process.HasExited) {
Write-Progress -Activity "Installer" -Completed
break
}
}
更改摘要
现在使用Start Process
而不是-PassThru
,并将流程对象分配给-Wait
变量$Process
循环的迭代器使用for
而不是$i=($i+1)%100
,因此当达到$i++
时,它会一直重置为100
0
块检查进程是否已退出;如果是这样,它将结束进度条,然后if
s退出循环中断
请注意:for的
循环现在是一个无限循环,只有在进程退出时才会中断。如果进程停滞,循环也会停滞。如果愿意,您可以分别为操作计时并处理超时。太棒了!比预期的要多!谢谢你提供的细节。