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'ta bash
veya Windows Komut Kabuğu (cmd.exe
) gibi diğer kabuklara benzer şekilde, PowerShell yalnızca PowerShell komutlarını değil sisteminizde kullanılabilen tüm komutları çalıştırmanızı sağlar.
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.
-
bash
anahtar sözcüklere örnek olarak şunlar verilebilir:if
,then
,else
,elif
vefi
. -
cmd.exe
anahtar sözcüklere örnek olarak şunlar verilebilir:dir
,copy
,move
,if
veecho
. - PowerShell anahtar sözcüklerine örnek olarak şunlar verilebilir:
for
,foreach
,try
,catch
vetrap
.
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ı gerektirebilecek betik dosyalarını içerir. Örneğin, PowerShell'de bir Windows toplu iş betiği (
.cmd
dosyası) ç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. Bunlar betikler ve işlevler içerir veya onlar kabuk çalışma zamanına komut ekleyen özel olarak derlenmiş modüller olabilir. PowerShell'de bu komutlar
cmdlet'leri 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 çoğu parametre eğik çizgi (/
) karakteri kullanır. Diğer komut satırı araçları parametreler için özel bir karaktere sahip olmayabilir.
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 komut sıfır olmayan bir çıkış koduna sahip olduğunda, $?
$false
olarak ayarlanır. Çıkış kodu sıfırsa, $?
$true
olarak ayarlanır.
Ancak bu, PowerShell 7.2'de değişti. 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, PSNativeCommandErrorActionPreference
çıkışının hata olarak ele alıp almadığını denetlemenizi sağlayan yeni bir deneysel özellik stderr
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 bunu 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 bağlıdır ve öğeye erişim sağlayan PowerShell sağlayıcısı tarafından çözümlenir.
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