2009-09-17 24 views
16

Bối cảnh: Lịch sử PowerShell hữu ích hơn rất nhiều cho tôi bây giờ khi tôi có cách lưu lịch sử trong các phiên.lịch sử quyền hạn: cách bạn ngăn các lệnh trùng lặp

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

Bây giờ, tôi đang cố gắng ngăn PowerShell lưu các lệnh trùng lặp vào lịch sử của tôi.

tôi đã cố gắng sử dụng Get-Unique, nhưng điều đó không làm việc kể từ mỗi lệnh trong lịch sử là "độc đáo" vì mỗi người có một số ID khác nhau.

Trả lời

22

Get-Unique cũng yêu cầu danh sách được sắp xếp và tôi cho rằng bạn có thể muốn duy trì trật tự thực hiện. Hãy thử điều này thay vì

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

Cách tiếp cận này sử dụng cmdlet Nhóm-Object tạo nhóm độc đáo của lệnh và sau đó khối Foreach-Object chỉ lấy mục đầu tiên trong mỗi nhóm.

BTW nếu bạn muốn tất cả các lệnh được lưu vào tệp lịch sử tôi sẽ sử dụng giá trị giới hạn - 32767 - trừ khi đó là những gì bạn đặt $ MaximumHistoryCount.

BTW nếu bạn muốn tự động lưu này xuất cảnh bạn có thể làm điều này trên 2.0 như nên

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

Sau đó, để khôi phục lại khi tải tất cả bạn cần là

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

hmm ... thanks cho bài đăng, nhưng bạn có bỏ qua phần được gán cho $ hist không? – dreftymac

+0

Xin lỗi, tôi chỉ chọn một tên biến khác với $ IniFileCmdHistory để tránh thanh cuộn ngang đáng sợ. :-) –

+0

.. oh tất nhiên! * trán trán * :) – dreftymac

Các vấn đề liên quan