2009-09-17 16 views
16

背景: 私は多くのセッションの間に の履歴を保存する方法があるので、PowerShellの履歴はもっと役に立ちます。powershellのヒストリ:重複するコマンドを防止する方法を教えてください

# run this every time right before you exit powershell 
get-history -Count $MaximumHistoryCount | export-clixml $IniFileCmdHistory; 

今、私は私の 歴史に重複するコマンドを保存するからPowerShellを防ぐためにしようとしています。

私はGet-Uniqueを使用してみましたが、それはそれぞれが異なるID番号を持っているので 歴史の中ですべてのコマンドが「ユニーク」であるので、動作しません。

答えて

22

Get-Uniqueにもソートされたリストが必要です。 実行順序を保持したいと考えています。この代わりに

Get-History -Count 32767 | Group CommandLine | Foreach {$_.Group[0]} | 
Export-Clixml "$home\pshist.xml" 

このアプローチは、コマンド のユニークなバケットを作成するには、グループ-Objectコマンドレットを使用して、foreachの対象ブロックがちょうど各バケットの最初の項目をグラブしてみてください。

私はすべてのコマンドを履歴ファイルに保存したい場合は、制限値 - 32767を使用します。これは、あなたが$ MaximumHistoryCountを設定していない限りです。

ところであなたは自動的にあなたが必要なすべての負荷に復元する2.0次に

Register-EngineEvent PowerShell.Exiting { 
    Get-History -Count 32767 | Group CommandLine | 
    Foreach {$_.Group[0]} | Export-CliXml "$home\pshist.xml" } -SupportEvent 

ので のようにこれを行うことができます終了時にこれを保存したい場合は

Import-CliXml "$home\pshist.xml" | Add-History 
+0

うーん...おかげでありますあなたは$ histに代入する部分を除外しましたか? – dreftymac

+0

申し訳ありませんが、恐ろしい水平スクロールバーを避けるため、$ IniFileCmdHistory以外の変数名を選んでいました。 :-) –

+0

..もちろんああ! *叩く額* :) – dreftymac

関連する問題