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.exebetik 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.exesı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 01bir çı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 powershellpwsh) ç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.

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 , , MinimizedMaximizedve HiddendeğerleridirNormal.

-Yardım-?/?

için PowerShell.exeyardı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.exekı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