PowerShell sonlanan bir script
Bir şekilde kurtarılamaz bir işlev içinde hata oluştuğunda (PS1) PowerShell komut sonlandırmak için aradım. Örneğin:
function foo() {
# Do stuff that causes an error
$host.Exit()
}
Elbette $host.Exit()
diye bir şey yok. 4**, ama bu gerçekte olan konsol penceresini kapatır. bu benim istediğim değil. Bir şey Python eşdeğer ihtiyacım olan şey sadece fazla bekletmeden geçerli komut dosyası yürütme duracak sys.exit()
.
Düzenleme:Evet, sadece exit
. Yaa.
CEVAP
Bu eski bir yazı olduğunu biliyorum ama çok fazla bu konu için arama yaparken en iyi arama sonuçları biri olarak bu konuya geri gelirken buluyorum. Ancak, ben her zaman daha fazla çelişkili bilgiler nedeniyle geldiğimde o zaman bırakın karıştı. Sonuçta ben her zaman kendi testlerimi çözmeye gerçekleştirmek zorunda. Bu sefer benim bulgular yayınlayacağız.
TL;DRÇoğu kişi Exit
çalışan bir komut sonlandırmak için kullanmak isteyecektir. Eğer script sadece fonksiyonları daha sonra bir kabuk için kullanılacak ilan ediyor, ancak sonra dedi fonksiyonların tanımları Return
kullanmak isteyeceksiniz.
İade vs vs Aradan çıkın
Çıkış:Bu "" şu anda çalışan içerik. çıkılacak Eğer bir komut bu komutu ararsan senaryo çıkar. Eğer kabuk bu komut ararsan kabuk çıkar.
Eğer bir fonksiyon Çıkış komutu ararsa, çalışan ne çıkar. Eğer öyleyse bu fonksiyonu çalıştıran bir betik içinden çağrılırsa sadece bu komut çıkar. Ancak, eğer senaryonu sadece beyan işlevi olması kullanılan mevcut kabuk ve çalıştırma fonksiyonu kabuk olacak çıkış kabuk çünkü kabuk bağlam içinde hangi işlevi contianing
Exit
komut çalışıyor.Not:Doğru komut çalıştırma yapıldıktan sonra PowerShell çalıştırmak için bir komut dosyasını tıklatın, varsayılan olarak, PowerShell otomatik olarak kapanacak. Bu
Exit
komutu ile ilgisi veya komut dosyası içinde başka bir şey vardır. Komut koştu olmak için sadece varsayılan bir davranış, bir PowerShell komut dosyası çalıştıran bu özel yöntemi kullanıyor. Toplu iş dosyaları ve Komut Satırı penceresi için de geçerlidir.Dönüş:Bu önceki Ara noktaya dönecektir. Eğer bir komut dosyası (herhangi bir fonksiyon dışında) bu komut ararsan kabuk dönecektir. Eğer kabuk bu komut ararsan kabuk tek bir komut satırından koştu önceki Ara nokta) döner. Eğer bir işlevi bu komut ararsanız işlevin çağrıldığı yere döndürür.
Geri çağrı noktadan sonra tüm komutları yürütme bu noktadan itibaren devam edecektir. Eğer bir komut dosyası adı verilen kabuk ve içerdiği
Return
komut dışında herhangi bir fonksiyon ne zaman döner, kabuk yok daha fazla komutları çalıştırmak böylece yapmaReturn
kullanılan bu yol aslında aynı gibiExit
.Ara:Bu döngüler patlak ve durumlarda geçecektir. Eğer döngü veya switch case sırasında bu komut ararsanız senaryonun dışarı kıracak. Eğer
Break
içinde sadece çemberin dışında kıracak bir döngü içinde iç içe bir döngü çağrısı denir.Orada da ilginç bir özelliği
Break
bir önek bir döngü ile bir etiket ve daha sonra patlak o etiketli döngü bileBreak
komut çağrılır içinde birden fazla iç içe geçmiş gruplar içinde etiketli döngü.While ($true) { # Code here will run :myLabel While ($true) { # Code here will run While ($true) { # Code here will run While ($true) { # Code here will run Break myLabel # Code here will not run } # Code here will not run } # Code here will not run } # Code here will run }
Biliyorsun
Her iki Return
Break
yerleşik PowerShell parçası olan anahtar kelimeler ise ilgi çekici, ilginç sözdizimi, Exit
değildir. Exit
ne bir çalıştırın ne de bir diğer adıdır. Powershell.exe yürütülebilir tanıdığı bir özelliktir. Bu cmd.exe çok gibi yürütülebilir exit
bir komut olarak algılar ancak her yere sisteminizde exit.exe yok hayır.
'in ne yerini belirlemek için en ...
Bir veritabanına tüm bağlantıları öldü...
Nasıl Windows PowerShell Explorer başl...
Neden&;/script> ekleyerek lt; yorum ...
Statik dosya tarafından hizmet değil S...