about_PowerShell_exe
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
-Komut
Belirtilen komutları (ve tüm parametreleri) PowerShell komut isteminde yazılmış gibi yürütür ve parametre belirtilmediği sürece NoExit
çıkar.
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 başka bir PowerShell konağından çalıştırıldığında powershell.exe
mümkündür. 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 dize olur. 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-
, komut metni 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
İşlem çıkış kodu, betik bloğundaki 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. 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.
Benzer şekilde, veya gibi throw
bir betik sonlandırıcı (runspace-terminating) hatası oluştuğunda veya yürütme Ctrl+C ile kesildiğinde 1 değeri döndürülür.-ErrorAction Stop
-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.
-Dosya - | <Filepath><Args>
Dosya değeri ise-
, komut metni standart girişten okunur.
Yeniden yönlendirilmiş standart giriş olmadan çalıştırmak powershell -File -
normal bir oturum başlatır. Bu, Dosya parametresini belirtmemeyle aynıdır.
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.
Betike geçirilen parametreler, geçerli kabuk tarafından yorumlanmadan sonra değişmez dizeler olarak geçirilir. Örneğin, cmd.exe içindeyseniz ve bir ortam değişkeni değeri geçirmek istiyorsanız, cmd.exe söz dizimini kullanırsınız:powershell.exe -File .\test.ps1 -TestParam %windir%
Buna karşılık, cmd.exe içinde çalıştırmakpowershell.exe -File .\test.ps1 -TestParam $env:windir
, betiğin geçerli cmd.exe kabuğu için özel bir anlamı olmadığından değişmez dizeyi $env:windir
almasına neden olur. $env:windir
Ortam değişkeni başvurusunun stili, PowerShell kodu olarak yorumlanacağından 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 $PSScriptRoot
yerine .\
kullanabilirsiniz%~dp0
: powershell.exe -File %~dp0test.ps1 -TestParam %windir%
.
Bunun yerine kullandıysanız .\test.ps1
, PowerShell sabit yolu bulamadığından bir hata oluşturur .\test.ps1
Dosya değeri bir dosya yolu olduğunda, Dosyaparametresi adından sonra yazılan tüm karakterler betik dosya yolu ve ardından betik parametreleri olarak yorumlandığından, Dosya komutundaki son parametre olmalıdır.
Dosya parametresinin değerine betik parametrelerini ve değerlerini ekleyebilirsiniz. Ö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ı.
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.
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. Normal sonlandırma ile çıkış kodu her zaman 0
şeklindedir.
Daha fazla bilgi için bkz $LASTEXITCODE
. about_Automatic_Variables.
-InputFormat {Text | XML}
PowerShell'e gönderilen verilerin biçimini açıklar. Geçerli değerler (metin dizeleri) veya XML
(serileştirilmiş CLIXML biçimi) değerleridir Text
.
-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 XML
(serileştirilmiş CLIXML biçimi) değerleridir Text
.
-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 , , Minimized
Maximized
ve Hidden
değerleridirNormal
.
-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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin