Windows 10'da PowerShell Komut Geçmişi Nasıl Gidilir?


Windows 10'daki PowerShell, geçerli oturumda yürüttüğünüz her komutun geçmişini size verebilir ancak birçok kullanıcı için bu yeterli değildir. Oturumlar arasında yürütülen komutların geçmişine ihtiyaçları vardır. PowerShell komut geçmişini almanız gerekiyorsa ve geçerli oturumun geçmişi tek başına işe yaramazsa, size yardımcı olabilecek bir komut dosyası ve bir günlük dosyası vardır.

Komut Geçmişi Mevcut Oturum

PowerShell 5 çalıştırıyorsanız aşağıdaki komutu çalıştırarak mevcut oturumun komut geçmişini alabilirsiniz;

Get-History

Varsayılan olarak PowerShell 50'ye kadar komut kaydedebilir ancak daha fazlasını kaydetmek için bunu değiştirebilirsiniz. PowerShell'i açın ve başlık çubuğuna sağ tıklayın. Bağlam menüsünden Özellikler'e gidin. Özellikler penceresinde Seçenekler sekmesine gidin. Varsayılanın 50 olarak ayarlandığı bir Komut Geçmişi bölümü göreceksiniz. Bunu daha yüksek bir değerle değiştirin.

PowerShell Geçmiş Günlüğü

Geçmiş logunu görüntülemek için öncelikle PSReadLine modülünü aşağıdaki komutla kurmanız gerekmektedir;

Install-Module PSReadLine

Daha sonra aşağıdaki komutu çalıştırın; bir dosya konumu döndürecektir. Bu konumdaki dosya size PowerShell'de çalıştırdığınız her komutun tam geçmişini verecektir.

(Get-PSReadlineOption).HistorySavePath

Oturumlar Arası PowerShell Komut Geçmişi

Bu biraz uzun bir süreç ama buna değer. Bu çözüm Intel'den geliyor. Öncelikle aşağıdaki konumu açın ve bu konumda Microsoft.PowerShell_profile.ps1 adında bir dosya olup olmadığını kontrol edin.

C:\Users\<username>\Documents\WindowsPowerShell

Eğer orada dosya yoksa PowerShell’i açın ve aşağıdaki komutu çalıştırın. Profil dosyanızı Not Defteri'nde açacaktır ancak bu dosya mevcut değildir ve PowerShell size bu kadarını anlatacak ve onu oluşturmak isteyip istemediğinizi soracaktır. Dosyayı oluşturmasına izin verin.

notepad $Profile

Açılan not defteri dosyasını kapatın. PowerShell'de, PowerShell 5'i çalıştırdığınızdan emin olmak için bu komutu çalıştırın.

$PSVersionTable.PSVersion

Daha sonra aşağıdaki komutla yürütme politikanızı RemoteSigned olarak ayarlayın.

set-executionpolicy remotesigned

Daha sonra PsUrl ve PSReadline modüllerini yüklemeniz gerekir. Bunları aşağıdaki komutla yükleyebilirsiniz, ancak bir hata alırsanız, bağlantılı sayfalarda belirtilen işlemi kullanarak bunları manuel olarak yükleyin veya depoyu güvenilir bir depo olarak eklemeyi ve ardından komutu yeniden çalıştırmayı deneyin.

install-module PsUrl
install-module PSReadline

Artık bu modüller kurulduğuna göre bu dosyayı açın;

C:\Users\<username>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Bu dosyanın içine aşağıdakini yapıştırın ve kaydedin.

$HistoryFilePath = Join-Path ([Environment]::GetFolderPath('UserProfile')) .ps_history
Register-EngineEvent PowerShell.Exiting -Action { Get-History | Export-Clixml $HistoryFilePath } | out-null
if (Test-path $HistoryFilePath) { Import-Clixml $HistoryFilePath | Add-History }
# if you don't already have this configured...
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward

PowerShell'de komut geçmişini görüntülemek için Get-History komutunu çalıştırmanız gerekir ancak geçmişinizin kaydedildiğinden emin olmak için çok önemli bir adım vardır. Kapat düğmesine tıklayarak PowerShell'i kapatamazsınız. Bunun yerine her zaman çıkış komutuyla kapatmalısınız.

Önceki komutlar arasında geçiş yapmak için Yukarı ve Aşağı ok tuşlarını kullanabilirsiniz.

İlgili makaleler