Bu eski bir yazı olduğunu biliyorum ama kendimi bu konuya çok geri geliyor bulmak gibi bu konuyu ararken en iyi arama sonuçlarından biridir. Ancak, çelişkili bilgiler nedeniyle geldiğimden sonra her zaman daha karışık kalıyorum. Sonuç olarak bunu anlamak için her zaman kendi testlerimi yapmak zorundayım. Bu sefer bulgularımı yayınlayacağım.
Çıkış: Bu, çalışmakta olan bağlamdan "çıkacaktır". Bu komutu bir komut dosyasından çağırırsanız, komut dosyasından çıkar. Bu komutu kabuktan çağırırsanız kabuktan çıkar.
Bir işlev Exit komutunu çağırırsa, çalıştığı bağlamdan çıkar. Bu işlev yalnızca çalışan bir komut dosyasından çağrılırsa bu komut dosyasından çıkar. Ancak, komut dosyanız yalnızca geçerli kabuktan kullanılabilmesi için işlevi bildirirse ve bu işlevi kabuktan çalıştırırsanız, kabuk komuttan ayrılan işlevin çalıştığı bağlam olduğu için kabuktan çıkar Exit
.
Not: Varsayılan olarak PowerShell'de çalıştırmak için bir komut dosyasına sağ tıklarsanız, komut dosyası çalıştıktan sonra PowerShell otomatik olarak kapanır. Bunun Exit
komutla veya komut dosyanızdaki başka bir şeyle ilgisi yoktur . Bu belirli bir komut dosyası çalıştırma yöntemi kullanılarak çalıştırılan komut dosyaları için varsayılan bir PowerShell davranışıdır. Aynı şey toplu iş dosyaları ve Komut Satırı penceresi için de geçerlidir.
Dönüş: Bu, bir önceki çağrı noktasına dönecektir. Bu komutu bir komut dosyasından çağırırsanız (herhangi bir işlev dışında) kabuğa geri döner. Kabuktan bu komutu çağırırsanız, kabuğa geri döner (tek bir komut için önceki çağrı noktası olan kabuktan). Bu komutu bir işlevden çağırırsanız, işlevin çağrıldığı yere dönecektir.
Geri döndürüldüğü çağrı noktasından sonra tüm komutların yürütülmesi bu noktadan itibaren devam eder. Kabuktan bir komut dosyası çağrılırsa ve Return
herhangi bir fonksiyonun dışındaki komutu içeriyorsa, kabuğa geri döndüğünde çalıştırılacak başka komut yoktur, böylece Return
bu şekilde kullanılan esasen aynı şekilde kullanılır Exit
.
Break: Bu, döngülerden çıkacak ve vakaları değiştirecektir. Bir döngü veya anahtar durumunda değilken bu komutu çağırırsanız, komut dosyasından kopacaktır. Break
Bir döngü içinde iç içe yerleştirilmiş bir döngü içine çağırırsanız , yalnızca çağrıldığı döngüden çıkar.
Ayrıca, Break
bir döngüyü etiketle ön ekleyebileceğiniz ve ilginç bir Break
komut da etiketli döngü içindeki birkaç iç içe grup içinde çağrılsa bile etiketli döngüden çıkabilirsiniz .
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
}