2017-06-02 2 views
3

のWindows 10およびWindows Server 2012上のPowerShell 4.0、5.0でテストされた表示されないヘルプファイル:PowerShellが正しく

clear 
help *-wmiobject* 

または

cls 
man *-job* 

をヘルプファイルは、画面をクリアした後に結果を正しく表示されません。コマンドを再実行すると、期待どおりに動作します。

Get-Help is unaffected. 

この理由は何ですか?

ありがとうございました

答えて

1

面白いバグです。理由は(明らかに)Powershellがhelp()呼び出しの結果を表示し、上から2行目から9行目までの8行を効果的にクリアした後に、「ヘルプの検索」の進行状況バーが更新されるためです。回避策は、結果を一時変数に格納することです。

$temp=help *-wmiobject; $temp 

これは、関数は、このようにプログレスバーが既にウィンドウから削除されます、ものを表示する前に終了したことを保証します。

更新:アスタリスクをhelpの引数に含めないとバグはありません。したがって、表示はhelp()の "Process"部分で行われ、プログレスバーをクリアするコードは関数の "End"部分に位置するため、バグが発生する可能性があります。

私は両方のPowerShellコンソール上で64ビットWindows 8.1のマシン上でこれを再現することができるよ
+0

:) 'のCLSを試してみてください。PARAMを助け、プログレスバーが消えた後にクリアされますか見てparam'を助ける:) – JosefZ

+0

@JosefZさて、5 #3から#7までの行。おっとっと。 – Vesper

1

(64分の32ビット)

ショートバージョンが、それはmanhelpで使用されているmore.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コマンドレットにバインドし、にパイプします。。だから、だけでなく、あなたが投稿したものを、あなたは同じ問題を持っているだろうと、あなたが使用している場合:

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の結果から、配列/オブジェクト対文字列を処理することが関係していると思われますが、これは私の知識の範囲外です。

param([string[]]$paths) 

$OutputEncoding = [System.Console]::OutputEncoding 

if($paths) 
{ 
    foreach ($file in $paths) 
    { 
     Get-Content $file | more.com 
    } 
} 
else 
{ 
    $input | more.com 
} 

* PowerShellのランチの月、第2版、PG 23

関連する問題