Cuma Eğlencesi: Daha İyi Bir PSEdit
PowerShell ISE'de PSEdit adında yerleşik bir işlev vardır. Bir dosyayı doğrudan ISE komut isteminden ISE'ye kolayca yüklemek için bu işlevi kullanabilirsiniz.
Psedit c:\scripts\myscript.ps1Ayrıca birden fazla dosya da yükleyebilirsiniz, ancak istediğiniz kadar kolay olmayabilir. Kendimi bunu yapmak isterken buluyorum:
Gördüğünüz gibi beklediğim bir şey değil. PSEdit'in birden fazla dosyayı açmasını sağlayabilirim ancak şunun gibi bir komut kullanmam gerekiyor:
psedit (dir vAL*.PS1)Sonunda bundan sıkıldım ve PSEdit fonksiyonunun koduna baktım.
Gördüklerime dayanarak bunun uzun zaman önce yazıldığını varsayıyorum. Bu yüzden güncellemeye karar verdim. İşte benim versiyonum:
#requires -version 4.0
Function PSEdit2 {
[cmdletbinding()]
param(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName,
HelpMessage="Enter a file path")]
[Alias("Fullname","Filenames")]
[ValidateScript({
if (Test-Path $_) {
$True
}
else {
Throw "Cannot validate path $_."
}
})]
[string[]]$Path
)
Begin {
Write-Verbose "Starting $($MyInvocation.Mycommand)"
} #begin
Process {
foreach ($filename in $path) {
#resolve paths
$resolved = Resolve-Path -Path $filename
Write-Verbose "Opening $resolved"
$psISE.CurrentPowerShellTab.Files.Add($resolved) | Out-Null
}
} #process
End {
Write-Verbose "Ending $($MyInvocation.Mycommand)"
} #end
} #end function
En büyük fark, sürümümün ardışık düzende çalışarak, en azından benim için aynı anda birden fazla dosyayı açmayı kolaylaştırmasıdır.
dir val*.ps1 | psedit2Sorun giderme için bazı ayrıntılı mesajlar da ekledim. Bu, yeni PowerShell araçları oluştururken yaygın uygulamamdır. Ayrıca orijinal işlevdeki takma adları tam cmdlet ve parametre adlarıyla değiştirdiğimi de fark edeceksiniz.
Son "özellik" benim özelleştirilmiş ValidateScript özelliğimdir. Herhangi bir yolun meşru bir dosyaya işaret ettiğini doğrulamak istedim. Bunu basitçe kullanabilirdim:
[ValidateScript({Test-Path $_})]Ancak yol testi geçemezse PowerShell, her zaman yararlı olmayan uzun bir hata mesajı görüntüler. Bu yüzden biraz mantık ekledim. Doğrulama testlerinin Doğru veya Yanlış değerini döndürmesi gerekir. Yanlış olduğunda PowerShell istisnayı atar. Bu yüzden kendi istisna mesajımı yazdım.
Orijinal psedit'te de benzer bir hata alıyorum.
Bu yüzden belki de bu konuda pek ilerleme kaydedemedim. Ama daha da uzun bir mesaj yazabilirdim ve eğer kullanmak isterseniz diye bu tekniği göstermek istedim.
PSEdit sürümüm hakkında son bir söz. Standart bir isim kullanmadım, sanırım orijinal fonksiyon bir isim kullanmıyor. Ve bu benim için sorun değil. Bu, işlevin takma ad benzeri basit bir isimle "hile" komutu olduğu durumlardan biridir. Orijinal PSEdit işlevini değiştirmek istiyorsanız, benimkini ISE profil komut dosyanıza ekleyin ve onu PSEdit olarak yeniden adlandırın.
Eğlence.



