İsteminizi Pezevenkleştirin


PS C:\> $function:prompt
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
# .Link
# http://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml

PS C:\>

Bu istem PowerShell v4'ten geliyor ancak bunun v3'te kullanılanla aynı işlev olduğundan eminim. PowerShell v2'nin farklı bir işlevi vardır.

PS C:\> $function:prompt
$(if (test-path variable:/PSDebugContext) { '[DBG]: ' } else { '' }) + 'PS ' + $(Get-Location) + $(if ($nestedpromptlev
el -ge 1) { '>>' }) + '> '
PS C:\>

Yeni işlevin bir yardım bağlantısı olduğunu fark ettiniz mi? Dene:

yardım istemi -çevrimiçi

about_prompts yardım konusunun çevrimiçi sürümünü alacaksınız. İstem fonksiyonunun en güzel yanı, onu değiştirebilmenizdir. Yıllar boyunca çeşitli istemler yayınladım. Ama burada denemeniz için 4 tane daha var. Bu istemler v3 ve sonrasında çalışmalıdır. İşlevlerin çoğu, standart komut istemine yapılan basit eklemelerdir ve hem konsol hem de ISE için çalışmalıdır. İstemi denemek için işlevi PowerShell oturumunuza yapıştırabilirsiniz. Bunu "kalıcı" hale getirmek için PowerShell profil komut dosyanıza ekleyin.

PowerShell Sürümünü Ekle

Function Prompt {
"PS $($psversiontable.psversion.major) $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
# .Link
# http://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml

}

Bu istem, PowerShell ana sürümünü isteminize ekler.

Yöneticiyi Dahil Et

Function Prompt {

$default = "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "

$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal] $identity
if ($principal.IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
 Write-Host "[ADMIN] " -NoNewline -ForegroundColor Red
 $default
 }
 else {
  $default
 }

# .Link
# http://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml

}

Bu istem, Yönetici olarak çalışıp çalışmadığınızı test edecek ve eğer öyleyse, kırmızı metne [YÖNETİCİ] ekleyecektir.

Bilgisayar Adını Ekle

Function Prompt {
"[$($env:computername)] PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
# .Link
# http://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml
}

Uzaktan iletişim oturumunun bağlı olduğunuz bilgisayarı size gösterme şeklini beğendiniz mi? Neden buna her zaman sahip olmayasınız? Yaptığım tek şey, yerel bilgisayar adını Bilgisayar Adı ortam değişkeninden eklemek.

Komut Geçmişini Otomatik Dışa Aktarma

Function Prompt {

"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "

#define a log file with the host name, a time stamp and process ID
# WindowsPowerShellISEHost_20140715_7388.log
# the log file will go in the Windows PowerShell directory

$log = "{0}_{1:yyyyMMdd}_{2}.log" -f $host.name.Replace(" ",""),(get-date),$PID
$logfile = Join-Path -path $home\Documents\WindowsPowerShell -childpath $log

#only insert history if it is different than the last command ran
$mycmd = (Get-History -Count 1).CommandLine
 if ($mycmd -ne (Get-Content -Path $logfile -Tail 1)) {
   $mycmd | Out-File -FilePath $logfile -Encoding ascii -Append
 }

# .Link
# http://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml
}

Bu son versiyon, transkripsiyonda bir değişiklik sunuyor. Bir transkripti çalıştırdığınızda komutu ve sonuçları alırsınız. Ama belki de tek istediğiniz çalıştırdığınız tüm komutların bir kaydıdır. Elbette, oturumunuzun sonunda komut geçmişini dışa aktarabilirsiniz ancak bunu yapmayı unutmamalısınız ve maksimum geçmiş sayınızı aşarsanız komutları kaçırırsınız. Bu istemde, enter tuşuna her bastığınızda, çalıştırdığınız son komutu alır ve onu bir günlük dosyasına ekler. Günlük dosyası PowerShell dizininizde oluşturulur ve PowerShell ana bilgisayarının boşluksuz adlandırma biçimini, zaman damgasını (YearMonthDay) ve geçerli PowerShell oturumunun işlem kimliğini kullanır. Bu, birden fazla PowerShell oturumunu ayrı günlüklerle tutmanıza olanak tanır. Günlük dosyası, yalnızca son çalıştırdığınız komuttan farklı olması durumunda komutu kaydeder. Bu aynı zamanda hiçbir şey yapmadan Enter tuşuna basmanıza ve günlüğünüzü doldurmanıza da olanak tanır.

Bu İstem işlevlerinden birini geçici olarak yapıştırırsanız ancak beğenmezseniz orijinal isteminizi almak için PowerShell'i yeniden başlatmanız yeterlidir. Veya geri yüklemek için bu işlevi kullanabilirsiniz.

Function Restore-Prompt {

#reset the original prompt or whatever you want to use as your default
Function global:Prompt {

"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "

# .Link
# http://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml

} #original prompt
 
}

İstemlerle denemeler yapıyorsanız bu, PowerShell profilinize eklemek kullanışlıdır. Geri Yükleme İstemi, küresel kapsamda yeni bir İstem işlevini tanımlar. Varsayılan PowerShell istemini kullanıyorum ancak siz onu istediğiniz şekilde değiştirirsiniz.

İsteminizle harika bir şey yapıyorsanız, umarım paylaşırsınız.

İlgili makaleler