使用 Powershell 安装 Anaconda 时:
正在下载。
Invoke-WebRequest https://repo.anaconda.com/archive/Anaconda3-5.3.0-Windows-x86_64.exe -OutFile "Anaconda3-5.3.0-Windows-x86_64.exe"
当我运行下面的代码时,该过程需要很长时间并且我看不到任何进展。
Start-Process -Wait -FilePath Anaconda3-5.3.0-Windows-x86_64.exe -PassThru -ArgumentList "/InstallationType=JustMe /AddToPath=1 /RegisterPython=0 /S /D=$env:UserProfile\Anaconda3"
输出:
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
34 3 812 2096 0.02 11828 0 Anaconda3-5.3.0-Windows-x86_64
有没有办法在 Powershell 中显示进度?
答案1
注意:在大多数情况下,使用外部 exe 执行此操作对于 PS 本身来说不是件容易的事。
请参阅此处的类似讨论: https://stackoverflow.com/questions/14739257/display-progress-of-exe-installation-from-powershell
话虽这么说。在 PS 中,wget 只是一个别名,而不是真正的 wget。
Get-Alias -Definition Invoke-WebRequest | Format-Table -AutoSize
CommandType Name Version Source
----------- ---- ------- ------
Alias curl -> Invoke-WebRequest
Alias iwr -> Invoke-WebRequest
Alias wget -> Invoke-WebRequest
# get function / cmdlet details
(Get-Command -Name Invoke-WebRequest).Parameters
Get-help -Name Invoke-WebRequest -Examples
Get-help -Name Invoke-WebRequest -Full
Get-help -Name Invoke-WebRequest -Online
如果您使用的是真正的 wget,则必须完全限定其 PathTo\wget.exe 的路径。
为了显示进度条,您可以使用 Write-Progress cmdlet。
# get function / cmdlet details
(Get-Command -Name Write-Progress).Parameters
Get-help -Name Write-Progress -Examples
Get-help -Name Write-Progress -Full
Get-help -Name Write-Progress -Online
看:https://technet.microsoft.com/en-us/library/Ff730943.aspx
和这个: https://technet.microsoft.com/en-us/magazine/2008.03.powershell.aspx
在长时间运行的 SharePoint PowerShell 脚本中使用 Write-Progress 的示例
然而,为了将它用于您想要的目的,您需要一种方法来确定进度条将使用的数学知识,正如您将从上面的文章中看到的那样。
或者,您可以在循环中硬编码一条简单消息,查看下载位置以查看文件是否存在,或者安装过程是否完成,然后退出循环。