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.
Kısa açıklama
Komut satırı arabiriminin powershell.exe
nasıl kullanılacağını açıklar. Komut satırı parametrelerini görüntüler ve söz dizimini açıklar.
Uzun açıklama
PowerShell 7 komut satırı seçenekleri hakkında bilgi için bkz . about_Pwsh.
SÖZ DİZİMİ
PowerShell[.exe]
[-PSConsoleFile <file> | -Version <version>]
[-NoLogo]
[-NoExit]
[-Sta]
[-Mta]
[-NoProfile]
[-NonInteractive]
[-InputFormat {Text | XML}]
[-OutputFormat {Text | XML}]
[-WindowStyle <style>]
[-EncodedArguments <Base64EncodedArguments>]
[-EncodedCommand <Base64EncodedCommand>]
[-ConfigurationName <string>]
[-File - | <filePath> <args>]
[-ExecutionPolicy <ExecutionPolicy>]
[-Command - | { <script-block> [-args <arg-array>] }
| { <string> [<CommandParameters>] } ]
PowerShell[.exe] -Help | -? | /?
Parametreler
Tüm parametreler büyük/küçük harfe duyarlı değildir.
-Dosya - | <filePath><args>
Dosya değeri bir dosya yolu ve isteğe bağlı parametreler olabilir-
. Dosya değeri ise-
, komutlar standart girişten okunur.
Dosya değeri bir dosya yoluysa, betik yeni oturumun yerel kapsamında ("nokta kaynaklı") çalışır, böylece betiğin oluşturduğu işlevler ve değişkenler bu yeni oturumda kullanılabilir. Betik dosya yolu ve parametreleri girin.
Dosya, komuttaki son parametre olmalıdır. Dosya parametresinden sonra yazılan tüm değerler, betik dosya yolu ve bu betike geçirilen parametreler olarak yorumlanır. Örneğin: -File .\Get-Script.ps1 -Domain Central
Genellikle, bir betiğin anahtar parametreleri dahil edilir veya atlanır.
Örneğin, aşağıdaki komut betik dosyasının All parametresini Get-Script.ps1
kullanır: -File .\Get-Script.ps1 -All
Nadir durumlarda, bir parametre için Boole değeri sağlamanız gerekebilir.
Bir betiği bu şekilde çalıştırırken switch parametresi için açık boole değeri geçirmek mümkün değildir. Bu sınırlama PowerShell 6' da (pwsh.exe
) kaldırıldı.
Betike geçirilen parametreler, geçerli kabuk tarafından yorumlanmadan sonra değişmez dizeler olarak geçirilir. Örneğin, içindeyseniz cmd.exe
ve bir ortam değişkeni değeri geçirmek istiyorsanız, söz dizimini cmd.exe
kullanabilirsiniz: powershell.exe -File .\test.ps1 -TestParam %windir%
Buna karşılık, içinde çalıştırmak powershell.exe -File .\test.ps1 -TestParam $Env:windir
betiğin geçerli cmd.exe
kabuk için özel bir anlamı olmadığından değişmez dizeyi $Env:windir
almasına neden cmd.exe
olur.
$Env:windir
Ortam değişkeni başvurusunun stili, PowerShell kodu olarak yorumlandığı için Command parametresi içinde kullanılabilir.
Benzer şekilde, aynı komutu bir Batch betiğinden yürütmek istiyorsanız, geçerli yürütme dizinini temsil etmek için veya %~dp0
yerine .\
kullanabilirsiniz$PSScriptRoot
: pwsh -File %~dp0test.ps1 -TestParam %windir%
. Bunun yerine kullanırsanız .\test.ps1
, PowerShell sabit yolu bulamadığından bir hata oluşturur .\test.ps1
Not
Dosya parametresi, bağımsız değişken değerleri dizisi bekleyen bir parametre kullanarak betikleri destekleyemez. Ne yazık ki bu, yerel komutun bağımsız değişken değerlerini nasıl aldığıyla ilgili bir sınırlamadır. Yerel bir yürütülebilir dosyayı (veya gibi powershell
pwsh
) çağırdığınızda, diziyle ne yapacağını bilmez, bu nedenle dize olarak geçirilir.
Dosya değeri ise-
, komutlar standart girişten okunur.
Yeniden yönlendirilmiş standart giriş olmadan çalıştırmak powershell -File -
normal bir oturum başlatır. Bu, parametreyi hiç belirtmemeyle File
aynıdır. Standart girişten okurken, giriş deyimleri PowerShell komut isteminde yazılmış gibi bir kerede bir deyim yürütülür. Bir deyim doğru ayrıştırılmıyorsa, deyimi yürütülmüyor. İşlem çıkış kodu, son (yürütülen) komutun durumuna göre belirlenir. Başarılı bir yürütme ile çıkış kodu her zaman 0
şeklindedir. Betik dosyası bir exit
komutla sonlandırıldığında, işlem çıkış kodu komutuyla kullanılan sayısal bağımsız değişkene exit
ayarlanır.
benzer şekilde -Command
, betik sonlandırıcı bir hata oluştuğunda çıkış kodu olarak 1
ayarlanır. Ancak, ile -Command
aksine, yürütme Ctrl+kesildiğinde çıkış kodu olur. Daha fazla bilgi için bkz $LASTEXITCODE
. about_Automatic_Variables.
-Komut
Command değeri, bir betik bloğu veya dize olabilir-
. Command değeri ise-
, komut metni standart girişten okunur.
Command parametresi yalnızca Komut Bloğu türü olarak Command'ageçirilen değeri tanıyabildiğinde yürütme için bir betik bloğu kabul eder. Bu yalnızca.
ScriptBlock türü var olan bir değişkende bulunabilir, bir ifadeden döndürülebilir veya PowerShell konağı tarafından küme ayraçları (){}
içine alınmış bir değişmez betik bloğu olarak ayrıştırılabilirpowershell.exe
.
powershell -Command {Get-WinEvent -LogName Security}
içinde cmd.exe
betik bloğu (veya ScriptBlock türü) gibi bir şey yoktur, bu nedenle Command'a geçirilen değer her zaman bir dizedir. Dizenin içine bir betik bloğu yazabilirsiniz, ancak yürütülmek yerine, betik bloğunun içeriğini size geri yazdırarak tipik bir PowerShell isteminde yazdığınız gibi davranır.
Command'a geçirilen bir dize Hala PowerShell kodu olarak yürütülür, bu nedenle betik bloğu küme ayraçları genellikle ilk sırada çalıştırma cmd.exe
sırasında gerekli değildir. Bir dize içinde tanımlanan satır içi betik bloğunu yürütmek için çağrı işleci&
kullanılabilir:
powershell.exe -Command "& {Get-WinEvent -LogName Security}"
Command değeri bir dizeyse, Bunu izleyen tüm bağımsız değişkenler yürütülecek komutun bir parçası olarak yorumlandığından, Command pwsh için son parametre olmalıdır.
Mevcut bir PowerShell oturumundan çağrıldığında, sonuçlar üst kabuğa canlı nesneler olarak değil seri durumdan çıkarılmış XML nesneleri olarak döndürülür. Diğer kabuklar için sonuçlar dize olarak döndürülür.
Command değeri ise-
, komutlar standart girişten okunur. Standart giriş ile Command parametresini kullanırken standart girişi yeniden yönlendirmeniz gerekir. Örneğin:
@'
"in"
"hi" |
% { "$_ there" }
"out"
'@ | powershell -NoProfile -Command -
Bu örnek aşağıdaki çıkışı oluşturur:
in
hi there
out
Standart girişten okurken, giriş ayrıştırılır ve PowerShell komut isteminde yazılmış gibi bir kerede bir deyim yürütülür. Giriş kodu doğru ayrıştırılmıyorsa, deyimi yürütülmüyor. Parametresini -NoExit
kullanmadığınız sürece, standart girişten okunacak başka giriş olmadığında PowerShell oturumundan çıkılır.
İşlem çıkış kodu, giriş içindeki son (yürütülen) komutun durumuna göre belirlenir. Çıkış kodu olduğunda 0
$?
$true
veya 1
olduğunda $?
şeklindedir.$false
Son komut veya dışında 0
1
bir çıkış kodunu açıkça ayarlayan bir dış program veya PowerShell betiğiyse, bu çıkış kodu işlem çıkış kodu için olarak 1
dönüştürülür. Benzer şekilde, veya gibi throw
bir betik sonlandırıcı (runspace-terminating) hatası oluştuğunda veya yürütme Ctrl-ErrorAction Stop
kesildiğinde 1 değeri döndürülür.+
Belirli çıkış kodunu korumak için komut dizenize veya betik bloğunuza ekleyin exit $LASTEXITCODE
. Daha fazla bilgi için bkz $LASTEXITCODE
. about_Automatic_Variables.
-ConfigurationName <dizesi>
PowerShell'in çalıştırıldığı bir yapılandırma uç noktası belirtir. Bu, varsayılan PowerShell uzaktan iletişim uç noktaları veya belirli kullanıcı rolü özelliklerine sahip özel uç nokta dahil olmak üzere yerel makinede kayıtlı herhangi bir uç nokta olabilir.
-EncodedArguments <Base64EncodedArguments>
Base64 ile kodlanmış dize sürümü komut bağımsız değişkenlerini kabul eder. Karmaşık, iç içe bölümleme gerektiren bağımsız değişkenleri göndermek için bu parametreyi kullanın. Base64 gösterimi UTF-16LE kodlanmış bir dize olmalıdır.
-EncodedCommand <Base64EncodedCommand>
Bir komutun 64 tabanlı kodlanmış dize sürümünü kabul eder. PowerShell'e karmaşık tırnak işaretleri veya küme ayraçları gerektiren komutlar göndermek için bu parametreyi kullanın. Dize UTF-16LE karakter kodlaması kullanılarak biçimlendirilmelidir.
-ExecutionPolicy <ExecutionPolicy>
Geçerli oturum için varsayılan yürütme ilkesini ayarlar ve ortam değişkenine $Env:PSExecutionPolicyPreference
kaydeder. Bu parametre, kayıt defterinde ayarlanan PowerShell yürütme ilkesini değiştirmez. Geçerli değerlerin listesi de dahil olmak üzere PowerShell yürütme ilkeleri hakkında bilgi için bkz . about_Execution_Policies.
-InputFormat {Text | XML}
PowerShell'e gönderilen verilerin biçimini açıklar. Geçerli değerler (metin dizeleri) veya Text
(serileştirilmiş CLIXML biçimi) değerleridir XML
.
-Mta
Çok iş parçacıklı bir daire kullanarak PowerShell'i başlatır. Bu parametre PowerShell 3.0'da kullanıma sunulmuştur. PowerShell 2.0'da, çok iş parçacıklı daire (MTA) varsayılandır. PowerShell 3.0'da, tek iş parçacıklı daire (STA) varsayılandır.
-NoExit
Başlangıç komutlarını çalıştırdıktan sonra çıkmaz.
-Etkileşimsiz
Bu anahtar, kullanıcı girişi gerektirmemesi gereken oturumlar oluşturmak için kullanılır. Bu, zamanlanmış görevlerde veya CI/CD işlem hatlarında çalışan betikler için kullanışlıdır. Veya onay istemleri gibi Read-Host
etkileşimli özellikleri kullanma girişimleri, deyim sonlandırma hatalarıyla sonuçlanır.
-NoLogo
Başlangıçta telif hakkı başlığını gizler.
-NoProfile
PowerShell profilini yüklemez.
-OutputFormat {Text | XML}
PowerShell çıkışının nasıl biçimlendirileceğini belirler. Geçerli değerler (metin dizeleri) veya Text
(serileştirilmiş CLIXML biçimi) değerleridir XML
.
-PSConsoleFile <FilePath>
Belirtilen PowerShell konsol dosyasını yükler. Konsol dosyasının yolunu ve adını girin. Konsol dosyası oluşturmak için PowerShell'de Export-Console cmdlet'ini kullanın.
-Sta
PowerShell'i tek iş parçacıklı bir daire kullanarak başlatır. Windows PowerShell 2.0'da, çok iş parçacıklı daire (MTA) varsayılandır. Windows PowerShell 3.0'da, tek iş parçacıklı daire (STA) varsayılandır.
-Sürüm <PowerShell Sürümü>
Belirtilen PowerShell sürümünü başlatır. Geçerli değerler 2.0 ve 3.0'dır. Belirttiğiniz sürüm sistemde yüklü olmalıdır. Bilgisayarda Windows PowerShell 3.0 yüklüyse, "3.0" varsayılan sürümdür. Aksi takdirde, "2.0" varsayılan sürümdür. Daha fazla bilgi için bkz. PowerShell'i yükleme.
-WindowStyle <Pencere stili>
Oturum için pencere stilini ayarlar. Geçerli değerler , , Normal
Minimized
ve Maximized
değerleridirHidden
.
-Yardım-?/?
için powershell.exe
yardım görüntüler. PowerShell oturumunda bir powershell.exe
komut yazıyorsanız, komut parametrelerini eğik çizgiyle () değil, kısa çizgiyle ()-
/
ekleyin. içinde cmd.exe
kısa çizgi veya eğik çizgi kullanabilirsiniz.
AÇIKLAMALAR
Sorun giderme notu: PowerShell 2.0'da, Bazı programların PowerShell konsolundan başlatılması LastExitCode 0xc0000142 ile başarısız olur.
ÖRNEKLER
# Create a new PowerShell session and load a saved console file
PowerShell -PSConsoleFile sqlsnapin.psc1
# Create a new PowerShell V2 session with text input, XML output, and no logo
PowerShell -Version 2.0 -NoLogo -InputFormat text -OutputFormat XML
# Execute a PowerShell Command in a session
PowerShell -Command "Get-EventLog -LogName Security"
# Run a script block in a session
PowerShell -Command {Get-EventLog -LogName Security}
# An alternate way to run a command in a new session
PowerShell -Command "& {Get-EventLog -LogName Security}"
# To use the -EncodedCommand parameter:
$command = "dir 'C:\Program Files' "
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
powershell.exe -EncodedCommand $encodedCommand
PowerShell