Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
PowerShell bir komut satırı kabuğu ve otomasyon için kullanılan bir betik dilidir. Linux veya Windows Komut Kabuğu ()bash gibi diğer kabuklara benzer şekildecmd.exe, PowerShell yalnızca PowerShell komutlarını değil sisteminizde kullanılabilen tüm komutları çalıştırmanıza olanak tanır.
Komut türleri
Herhangi bir işletim sistemindeki herhangi bir kabuk için üç tür komut vardır:
Kabuk dili anahtar sözcükleri kabuğun betik dilinin bir parçasıdır.
-
bashanahtar sözcüklere örnek olarak şunlar verilebilir:if,then,else,elifvefi. -
cmd.exeanahtar sözcüklere örnek olarak şunlar verilebilir:dir,copy,move,ifveecho. - PowerShell anahtar sözcüklerine örnek olarak şunlar verilebilir:
for,foreach,try,catchvetrap.
Kabuk dili anahtar sözcükleri yalnızca kabuğun çalışma zamanı ortamında kullanılabilir. Anahtar sözcüğün işlevselliğini sağlayan kabuk dışında yürütülebilir dosya yoktur.
-
işletim sistemi yerel komutları işletim sisteminde yüklü yürütülebilir dosyalardır. Yürütülebilir dosyalar PowerShell gibi herhangi bir komut satırı arayüzünden çalıştırılabilir. Bu, diğer kabukların düzgün çalışmasını gerektiren betik dosyalarını içerir. Örneğin, PowerShell'de bir Windows toplu iş betiği (
.cmddosyası) çalıştırırsanız, PowerShellcmd.exe'i çalıştırır ve toplu iş dosyasını yürütme için iletir.Shell ortamına özgü komutlar yalnızca kabuğun çalışma zamanı ortamında kullanılabilen dış dosyalarda tanımlanan komutlardır. Buna kabuk çalışma zamanına komut ekleyen betikler, işlevler ve modüller dahildir. PowerShell'de, bir modül tarafından eklenen bu komutlar cmdlet'ler olarak bilinir ("command-lets" olarak okunur).
Yerel komutları çalıştırma
Herhangi bir yerel komut PowerShell komut satırından çalıştırılabilir. Genellikle komutunu bash veya cmd.exe'da yaptığınız gibi çalıştırırsınız. Aşağıdaki örnekte, Ubuntu Linux üzerinde grep'da bash komutunu çalıştırma gösterilmektedir.
sdwheeler@circumflex:~$ grep sdwheeler /etc/passwd
sdwheeler:x:1000:1000:,,,:/home/sdwheeler:/bin/bash
sdwheeler@circumflex:~$ pwsh
PowerShell 7.2.6
Copyright (c) Microsoft Corporation.
https://aka.ms/powershell
Type 'help' to get help.
Ubuntu'da PowerShell'i başlattıktan sonra, PowerShell komut satırından aynı komutu çalıştırabilirsiniz:
PS /home/sdwheeler> grep sdwheeler /etc/passwd
sdwheeler:x:1000:1000:,,,:/home/sdwheeler:/bin/bash
Bağımsız değişkenleri yerel komutlara geçirme
Kabukların çoğu değişkenleri kullanmaya, ifadeleri değerlendirmeye ve dizeleri işlemeye yönelik özellikler içerir. Ancak her kabuk bunları farklı şekilde yapar. PowerShell'de tüm parametreler kısa çizgi (-) karakteriyle başlar.
cmd.exe'de, komut parametrelerinin çoğu eğik çizgi (/) karakteri kullanır. Diğer komut satırı araçları boşluk, kısa çizgi, çift kısa çizgi (--) kullanabilir.
Her kabuğun komut satırındaki dizeleri işleme ve değerlendirmenin kendi yolu vardır. PowerShell'de dizelerin belirli bir şekilde alıntılanmasını bekleyen yerel komutları çalıştırırken, bu dizeleri nasıl geçireceğinizi ayarlamanız gerekebilir.
Daha fazla bilgi için aşağıdaki makalelere bakın:
PowerShell 7.2, yerel komut işlemeyi geliştiren yeni bir deneysel özellik PSNativeCommandArgumentPassing kullanıma sunulmuştur. Daha fazla bilgi için bkz. $PSNativeCommandArgumentPassing.
Çıktıyı ve hataları işleme
PowerShell'de, diğer kabuklardan daha fazla sayıda çıkış akışı vardır.
bash ve cmd.exe kabuklarında stdout ve stderrvardır. PowerShell'de altı çıkış akışı vardır. Daha fazla bilgi için bkz. about_Redirection ve about_Output_Streams.
Genel olarak, yerel bir komut tarafından gönderilen çıkış stdout, PowerShell'deki Success akışına gönderilir. Yerel bir komut tarafından stderr olarak gönderilen çıktı, PowerShell'deki Hata akışına gönderilir.
Yerel bir komut sıfır olmayan bir çıkış koduna sahipse, $? olarak $falseayarlanır. Çıkış kodu sıfırsa, $?$trueolarak ayarlanır.
Ancak PowerShell 7.2 bu davranışı değiştirdi. Yeniden yönlendirme işleçleri (2>&1) kullanılırken olduğu gibi yerel komutlardan yeniden yönlendirilen hata kayıtları PowerShell'in $Error değişkenine yazılmaz ve tercih değişkeni $ErrorActionPreference yeniden yönlendirilen çıkışı etkilemez.
Birçok yerel komut, ek bilgi için alternatif bir akış olarak stderr'e yazar. Bu davranış, hatalara bakarken PowerShell'de karışıklığa neden olabilir ve $ErrorActionPreference çıkışı kapatan bir duruma ayarlanırsa ek çıkış bilgileri kaybolabilir.
PowerShell 7.3, yerel komutlardan sıfır olmayan çıkış kodlarını nasıl işleyebileceğinizi denetlemenizi sağlayan yeni bir deneysel özellik PSNativeCommandErrorActionPreference ekledi. Daha fazla bilgi için bkz. $PSNativeCommandUseErrorActionPreference.
PowerShell komutlarını çalıştırma
Daha önce belirtildiği gibi, PowerShell komutları cmdlet'ler olarak bilinir. Cmdlet'ler isteğe bağlı olarak yüklenebilen PowerShell modüllerine toplanır. Cmdlet'ler derlenmiş herhangi bir .NET dilinde veya PowerShell betik dilinin kendisi kullanılarak yazılabilir.
Diğer komutları çalıştıran PowerShell komutları
PowerShell çağrı işleci (&), değişkenlerde depolanan ve dizeler veya betik bloklarıyla temsil edilen komutları çalıştırmanıza olanak tanır. herhangi bir yerel komutu veya PowerShell komutunu çalıştırmak için işlecini kullanabilirsiniz. Bu, yerel bir komut için komut satırı parametrelerini dinamik olarak oluşturmanız gerektiğinde bir betikte kullanışlıdır. Daha fazla bilgi için çağrı işlecinebakın.
Start-Process cmdlet'i yerel komutları çalıştırmak için kullanılabilir, ancak yalnızca komutun nasıl yürütülebileceğini denetlemeniz gerektiğinde kullanılmalıdır. Cmdlet'in aşağıdaki senaryoları destekleyecek parametreleri vardır:
- Farklı kimlik bilgileri kullanarak komut çalıştırma
- Yeni işlem tarafından oluşturulan konsol penceresini gizleme
- stdin, stdoutve stderr akışlarını yeniden yönlendirme
- Komut için farklı bir çalışma dizini kullanın
Aşağıdaki örnek, yeniden yönlendirilen giriş ve çıkış akışlarıyla yerel komut sort.exe çalıştırır.
$processOptions = @{
FilePath = "sort.exe"
RedirectStandardInput = "TestSort.txt"
RedirectStandardOutput = "Sorted.txt"
RedirectStandardError = "SortError.txt"
UseNewEnvironment = $true
}
Start-Process @processOptions
Daha fazla bilgi için bkz. Start-Process.
Windows'da, Invoke-Item cmdlet'i belirtilen öğe için varsayılan eylemi gerçekleştirir. Örneğin, yürütülebilir bir dosya çalıştırır veya belge dosyası türüyle ilişkilendirilmiş uygulamayı kullanarak bir belge dosyası açar. Varsayılan eylem, öğenin türüne ve öğeye erişim sağlayan PowerShell sağlayıcısına bağlıdır.
Aşağıdaki örnek, varsayılan web tarayıcınızda PowerShell kaynak kodu deposunu açar.
Invoke-Item https://github.com/PowerShell/PowerShell
Daha fazla bilgi için bkz. Invoke-Item.
PowerShell