測試使用PowerShell 4.0,5.0在Windows 10和Windows Server 2012:PowerShell的幫助文檔不正確顯示
clear
help *-wmiobject*
或
cls
man *-job*
幫助文件不清除屏幕後顯示正確結果。重新運行該命令,並按預期工作。
Get-Help is unaffected.
這是什麼原因?
謝謝
測試使用PowerShell 4.0,5.0在Windows 10和Windows Server 2012:PowerShell的幫助文檔不正確顯示
clear
help *-wmiobject*
或
cls
man *-job*
幫助文件不清除屏幕後顯示正確結果。重新運行該命令,並按預期工作。
Get-Help is unaffected.
這是什麼原因?
謝謝
一個有趣的bug。原因(顯然)是在Powershell顯示help()
調用的結果後,「搜索幫助」的進度條被更新,從頂部有效地清除了從第2行到第9行的8行。解決方法是將結果存儲在臨時變量中。
$temp=help *-wmiobject; $temp
這可以確保函數在顯示內容之前退出,因此進度條已經從窗口中刪除。
更新:如果在help
的參數中不包含星號,則不存在該錯誤。因此,可能會出現該錯誤,因爲顯示是在help()
的「Process」部分中完成的,清除進度欄的代碼位於函數的「End」部分。
我能夠重現這64位Windows 8.1的機器上都PowerShell的控制檯(64分之32位)
短版是它與所使用的man
和help
的more.com
DOS command做但不是Get-Help
。
Get-Help,help,man:有什麼區別?
更好地解釋由唐·瓊斯*和this $Script Fanatic blog post:
更
運行(Get-ChildItem function:\help).definition
如在博客中,你會看到這個底部:
Get-Help @PSBoundParameters | more
help
基本上將參數綁定到Get-Help
Cmdlet和管道到more
。所以,以及您已發佈什麼,你都會有相同的問題,如果你使用:
clear
Get-Help *et-WmiObjec* | more # doesn't work
我相信Get-Help
默認使用Out-Host
輸出信息(引文需要)。使用Write-Output
也適用。
clear
help *-wmiobject* | Out-Host # works
clear
man *-wmiobject* | Out-Host # works
最後,這似乎是一個問題,當多個結果被man
/help
返回。
clear
man get-WmiObject # works
我建議查看文檔和幫助功能來調查這一點。根據(Get-ChildItem function:\more).definition
的結果,我懷疑這是處理數組/對象vs字符串,但這是我的知識範圍。
param([string[]]$paths)
$OutputEncoding = [System.Console]::OutputEncoding
if($paths)
{
foreach ($file in $paths)
{
Get-Content $file | more.com
}
}
else
{
$input | more.com
}
*午餐的PowerShell中月,第2版,第23頁
:)嘗試'CLS;幫助PARAM;幫助param'看到進度條消失:) – JosefZ
@JosefZ好了之後什麼清除,5從#3到#7的線。哎呀。 – Vesper