2017-06-02 34 views
3

測試使用PowerShell 4.0,5.0在Windows 10和Windows Server 2012:PowerShell的幫助文檔不正確顯示

clear 
help *-wmiobject* 

cls 
man *-job* 

幫助文件不清除屏幕後顯示正確結果。重新運行該命令,並按預期工作。

Get-Help is unaffected. 

這是什麼原因?

謝謝

回答

1

一個有趣的bug。原因(顯然)是在Powershell顯示help()調用的結果後,「搜索幫助」的進度條被更新,從頂部有效地清除了從第2行到第9行的8行。解決方法是將結果存儲在臨時變量中。

$temp=help *-wmiobject; $temp 

這可以確保函數在顯示內容之前退出,因此進度條已經從窗口中刪除。

更新:如果在help的參數中不包含星號,則不存在該錯誤。因此,可能會出現該錯誤,因爲顯示是在help()的「Process」部分中完成的,清除進度欄的代碼位於函數的「End」部分。

+0

:)嘗試'CLS;幫助PARAM;幫助param'看到進度條消失:) – JosefZ

+0

@JosefZ好了之後什麼清除,5從#3到#7的線。哎呀。 – Vesper

1

我能夠重現這64位Windows 8.1的機器上都PowerShell的控制檯(64分之32位)

短版是它與所使用的manhelpmore.com DOS command做但不是Get-Help

Get-Help,help,man:有什麼區別?
更好地解釋由唐·瓊斯*和this $Script Fanatic blog post

differences explained


運行(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頁