Pwsh hakkında


Kısa açıklama

pwsh komut satırı arayüzünün nasıl kullanılacağını açıklar. Komut satırı parametrelerini görüntüler ve sözdizimini açıklar.

Uzun açıklama

Windows PowerShell 5,1'e yönelik komut satırı seçenekleri hakkında bilgi için bkz. about_PowerShell_exe.

Sözdizimi

Usage: pwsh[.exe]
    [-Login]
    [[-File] <filePath> [args]]
    [-Command { - | <script-block> [-args <arg-array>]
                  | <string> [<CommandParameters>] } ]
    [[-CommandWithArgs <string>] [<CommandParameters>]]
    [-ConfigurationFile <filePath>]
    [-ConfigurationName <string>]
    [-CustomPipeName <string>]
    [-EncodedCommand <Base64EncodedCommand>]
    [-ExecutionPolicy <ExecutionPolicy>]
    [-InputFormat {Text | XML}]
    [-Interactive]
    [-MTA]
    [-NoExit]
    [-NoLogo]
    [-NonInteractive]
    [-NoProfile]
    [-NoProfileLoadTime]
    [-OutputFormat {Text | XML}]
    [-SettingsFile <filePath>]
    [-SSHServerMode]
    [-STA]
    [-Version]
    [-WindowStyle <style>]
    [-WorkingDirectory <directoryPath>]

pwsh[.exe] -h | -Help | -? | /?

Parametreler

Tüm parametreler büyük/küçük harfe duyarlı değildir.

-Dosya | -F

Dosya'nın değeri - veya bir dosya yolu ve isteğe bağlı parametreler olabilir. Dosya'nın değeri - ise komutlar standart girişten okunur.

Hiçbir parametre mevcut değilse ancak komut satırında değerler mevcutsa, bu varsayılan parametredir. Belirtilen komut dosyası, yeni oturumun yerel kapsamında ("nokta kaynaklı") çalışır, böylece komut dosyasının oluşturduğu işlevler ve değişkenler yeni oturumda kullanılabilir. Betik dosya yolunu ve tüm parametreleri girin. Dosya, komuttaki son parametre olmalıdır, çünkü Dosya parametre adından sonra yazılan tüm karakterler, komut dosyası parametreleri tarafından takip edilen komut dosyası dosya yolu olarak yorumlanır.

Tipik olarak bir betiğin anahtar parametreleri ya dahil edilir ya da atlanır. Örneğin, aşağıdaki komut Get-Script.ps1 komut dosyasının Tümü parametresini kullanır: -File .\Get-Script.ps1 -All kod>

Nadir durumlarda, bir anahtar parametresi için bir Boolean değeri sağlamanız gerekebilir. Dosya parametresinin değerinde bir anahtar parametresi için bir Boolean değeri sağlamak için, normalde hemen ardından iki nokta üst üste ve boole değeri gelen aşağıdaki gibi parametreyi kullanın: -Dosya .\Get-Script.ps1 -Tümü:$False.

Betiğe iletilen parametreler, geçerli kabuk tarafından yorumlandıktan sonra gerçek dizeler olarak aktarılır. Örneğin, cmd.exe'deyseniz ve bir ortam değişkeni değeri iletmek istiyorsanız cmd.exe sözdizimini kullanırsınız: pwsh -File .\ test.ps1 -TestParam %windir%

Buna karşılık, cmd.exe dosyasında pwsh -File .\test.ps1 -TestParam $env:windir komutunu çalıştırmak, komut dosyasının $env: değişmez dizesini almasıyla sonuçlanır: windir çünkü geçerli cmd.exe kabuğu için özel bir anlamı yoktur. Ortam değişkeni referansının $env:windir stili Command parametresi içinde kullanılabilir, çünkü burada PowerShell kodu olarak yorumlanır.

Benzer şekilde, aynı komutu bir Toplu komut dosyasından çalıştırmak isterseniz, .\ veya yerine %~dp0 kullanırsınız. Geçerli yürütme dizinini temsil edecek $PSScriptRoot: pwsh -File %~dp0test.ps1 -TestParam %windir%. Bunun yerine .\test.ps1 kullanırsanız PowerShell, .\test.ps1 hazır yolunu bulamadığı için bir hata atar.

Not

Dosya parametresi, bir dizi bağımsız değişken değeri bekleyen bir parametre kullanan komut dosyalarını destekleyemez. Ne yazık ki bu, yerel bir komutun argüman değerlerini alma şeklinin bir sınırlamasıdır. Yerel bir yürütülebilir dosyayı (powershell veya pwsh gibi) çağırdığınızda, bir diziyle ne yapacağını bilemez, dolayısıyla bir dize olarak iletilir.

Dosya'nın değeri - ise komutlar standart girişten okunur. pwsh -File -'i yeniden yönlendirilmiş standart giriş olmadan çalıştırmak normal bir oturum başlatır. Bu, File parametresinin hiç belirtilmemesiyle aynıdır. Standart girişten okurken, giriş ifadeleri sanki PowerShell komut istemine yazılmış gibi her seferinde bir ifade yürütülür. Bir ifade doğru şekilde ayrıştırılmazsa ifade yürütülmez. İşlem çıkış kodu, girişteki son (yürütülen) komutun durumuna göre belirlenir. Normal sonlandırmada çıkış kodu her zaman 0'dır. Komut dosyası bir exit komutuyla sonlandırıldığında, işlem çıkış kodu, exit komutuyla kullanılan sayısal bağımsız değişkene ayarlanır.

-Komut'a benzer şekilde, komut dosyası sonlandırma hatası oluştuğunda çıkış kodu 1 olarak ayarlanır. Ancak -Command'dan farklı olarak, yürütme Ctrl+C ile kesildiğinde çıkış kodu 0 olur. Daha fazla bilgi için about_Automatic_Variables'da $LASTEXITCODE konusuna bakın.

Not

PowerShell 7.2'den itibaren Dosya parametresi Windows'ta yalnızca .ps1 dosyalarını kabul eder. Başka bir dosya türü sağlanırsa bir hata atılır. Bu davranış Windows'a özgüdür. Diğer platformlarda PowerShell diğer dosya türlerini çalıştırmayı dener.

-Komut | -C

Command'ın değeri -, bir komut dosyası bloğu veya bir dize olabilir. Command'in değeri - ise komut metni standart girişten okunur.

Command parametresi yalnızca Command'a ScriptBlock türü olarak iletilen değeri tanıyabildiğinde bir komut dosyası bloğunu yürütme için kabul eder. Bu, yalnızca başka bir PowerShell ana bilgisayarından pwsh çalıştırıldığında mümkündür. ScriptBlock türü mevcut bir değişkende bulunabilir, bir ifadeden döndürülebilir veya PowerShell ana bilgisayarı tarafından küme parantezleri ({) içine alınmış bir değişmez kod bloğu olarak ayrıştırılabilir. pwsh'a aktarılmadan önce.

pwsh -Command {Get-WinEvent -LogName security}

cmd.exe'de komut dosyası bloğu (veya ScriptBlock türü) diye bir şey yoktur, dolayısıyla Command'a iletilen değer her zaman bir dize. Dizenin içine bir komut dosyası bloğu yazabilirsiniz, ancak yürütülmek yerine tam olarak onu tipik bir PowerShell komut isteminde yazmışsınız gibi davranır ve komut dosyası bloğunun içeriğini size geri yazdırır.

Command'a iletilen bir dize hâlâ PowerShell kodu olarak yürütülür; bu nedenle, cmd.exe'den çalıştırırken ilk etapta komut dosyası blok küme parantezlerine genellikle gerek kalmaz. Bir dize içinde tanımlanan bir satır içi komut dosyası bloğunu yürütmek için & çağrı operatörü kullanılabilir:

pwsh -Command "& {Get-WinEvent -LogName security}"

Command'ın değeri bir dizeyse Command pwsh için son parametre olmalıdır çünkü onu takip eden tüm bağımsız değişkenler yürütülecek komutun bir parçası olarak yorumlanır.

Mevcut bir PowerShell oturumundan çağrıldığında sonuçlar, canlı nesneler olarak değil, seri durumdan çıkarılmış XML nesneleri olarak ana kabuğa döndürülür. Diğer kabuklar için sonuçlar dize olarak döndürülür.

Command'ın değeri - ise komutlar standart girişten okunur. Command parametresini standart girişle kullanırken standart girişi yeniden yönlendirmeniz gerekir. Örneğin:

@'
"in"

"hi" |
  % { "$_ there" }

"out"
'@ | pwsh -NoProfile -Command -

Bu örnek aşağıdaki çıktıyı üretir:

in
hi there
out

Standart girişten okurken giriş, sanki PowerShell komut istemine yazılmış gibi her seferinde bir ifade ayrıştırılır ve yürütülür. Giriş kodu doğru şekilde ayrıştırılmazsa ifade yürütülmez. -NoExit parametresini kullanmadığınız sürece standart girişten okunacak giriş kalmadığında PowerShell oturumundan çıkılır.

İşlem çıkış kodu, girişteki son (yürütülen) komutun durumuna göre belirlenir. $? $true olduğunda çıkış kodu 0 olur veya $?1 olur > $false'dir. Son komut, 0 veya 1 dışında bir çıkış kodunu açıkça ayarlayan harici bir program veya PowerShell betiğiyse, bu çıkış kodu 1'e dönüştürülür. işlem çıkış kodu için. Benzer şekilde, throw veya -ErrorAction Stop gibi bir komut dosyası sonlandırma (çalışma alanı sonlandırma) hatası oluştuğunda veya yürütme < ile kesildiğinde 1 değeri döndürülür. kbd>Ctrl+C.

Belirli çıkış kodunu korumak için komut dizenize veya komut dosyası bloğunuza exit $LASTEXITCODE ekleyin. Daha fazla bilgi için about_Automatic_Variables'da $LASTEXITCODE konusuna bakın.

-CommandWithArgs | -cwa

Bu, 7.4'te eklenen deneysel bir özelliktir.

Bağımsız değişkenlerle bir PowerShell komutunu yürütür. -Command'dan farklı olarak bu parametre, komut tarafından kullanılabilecek $args yerleşik değişkenini doldurur.

İlk dize komuttur. Boşluklarla sınırlandırılmış ek dizeler bağımsız değişkenlerdir.

Örneğin:

pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2

Bu örnek aşağıdaki çıktıyı üretir:

arg: arg1
arg: arg2

Not

Tırnak işaretleri ile bağımsız değişken ayrıştırma, örneğin cmd.exe veya powershell.exe'den çalıştırılması durumunda başarısız olmasına neden olur. Bunlardan kaçmak için kullanabilirsiniz

REM Quoting required when run from cmd.exe
pwsh -CommandWithArgs "$args | % { ""arg: $_"" }" arg1 arg2
# Quoting required when run from powershell.exe
pwsh -CommandWithArgs '"$args | % { ""arg: $_"" }"' arg1 arg2

-YapılandırmaAdı | -yapılandırma

PowerShell'in çalıştırıldığı bir yapılandırma uç noktasını belirtir. Bu, varsayılan PowerShell uzaktan iletişim uç noktaları veya belirli kullanıcı rolü özelliklerine sahip özel bir uç nokta dahil olmak üzere yerel makinede kayıtlı herhangi bir uç nokta olabilir.

Örnek: pwsh -ConfigurationName AdminRoles

-ConfigurationFile

Bir oturum yapılandırması (.pssc) dosya yolunu belirtir. Yapılandırma dosyasında bulunan yapılandırma PowerShell oturumuna uygulanacaktır.

Örnek: pwsh -ConfigurationFile "C:\ProgramData\PowerShell\MyConfig.pssc"

-CustomPipeName

Hata ayıklama ve diğer işlemler arası iletişim için kullanılan ek bir IPC sunucusu (adlandırılmış kanal) için kullanılacak adı belirtir. Bu, diğer PowerShell örneklerine bağlanmak için öngörülebilir bir mekanizma sunar. Genellikle Enter-PSHostProcess'te CustomPipeName parametresiyle birlikte kullanılır.

Bu parametre PowerShell 6.2'de tanıtıldı.

Örneğin:

# PowerShell instance 1
pwsh -CustomPipeName mydebugpipe
# PowerShell instance 2
Enter-PSHostProcess -CustomPipeName mydebugpipe

-Kodlanmış Komut | -e | -ec

Bir komutun Base64 kodlu dize sürümünü kabul eder. Karmaşık, iç içe alıntılama gerektiren komutları PowerShell'e göndermek için bu parametreyi kullanın. Base64 temsili UTF-16LE kodlu bir dize olmalıdır.

Örneğin:

$command = 'dir "c:\program files" '
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
pwsh -encodedcommand $encodedCommand

-Yürütme Politikası | -ex | -ep

Geçerli oturum için varsayılan yürütme ilkesini ayarlar ve bunu $env:PSExecutionPolicyPreference ortam değişkenine kaydeder. Bu parametre, kalıcı olarak yapılandırılmış yürütme ilkelerini değiştirmez.

Bu parametre yalnızca Windows bilgisayarları için geçerlidir. Windows dışı platformlarda parametre ve sağlanan değer dikkate alınmaz.

-Giriş Formatı | -inp | -eğer

PowerShell'e gönderilen verilerin biçimini açıklar. Geçerli değerler "Metin" (metin dizeleri) veya "XML"dir (serileştirilmiş CLIXML biçimi).

-Etkileşimli | -Ben

Kullanıcıya etkileşimli bir bilgi istemi sunun. Etkileşimli Olmayan parametrenin tersi.

-Giriş | -ben

Linux ve macOS'ta, /etc/profile ve ~/.profile gibi oturum açma profillerini yürütmek için /bin/sh kullanarak PowerShell'i oturum açma kabuğu olarak başlatır. Windows'ta bu anahtar hiçbir şey yapmaz.

Bu önemli

PowerShell'i oturum açma kabuğu olarak başlatmak için bu parametre ilk önce gelmelidir. Bu parametre başka bir konuma aktarılırsa dikkate alınmaz.

UNIX benzeri işletim sistemlerinde pwsh'ı oturum açma kabuğu olarak ayarlamak için:

  • pwsh'a giden tam yolun /etc/shells altında listelendiğini doğrulayın

    • Bu yol genellikle Linux'ta /usr/bin/pwsh veya macOS'ta /usr/local/bin/pwsh gibi bir şeydir
    • Bazı kurulum yöntemlerinde bu giriş kurulum sırasında otomatik olarak eklenecektir.
    • pwsh, /etc/shells dosyasında mevcut değilse, son satıra pwsh yolunu eklemek için bir düzenleyici kullanın. Bu, düzenleme için yükseltilmiş ayrıcalıklar gerektirir.
  • Mevcut kullanıcınızın kabuğunu pwsh olarak ayarlamak için chsh yardımcı programını kullanın:

    chsh -s /usr/bin/pwsh
    

Uyarı

pwsh'i oturum açma kabuğu olarak ayarlamak şu anda Linux için Windows Alt Sisteminde (WSL) desteklenmemektedir ve orada oturum açma kabuğu olarak pwsh'ı ayarlamaya çalışmak, başlatamamaya yol açabilir WSL etkileşimli olarak.

-MTA

Çok iş parçacıklı bir grup kullanarak PowerShell'i başlatın. Bu anahtar yalnızca Windows'ta kullanılabilir. Bu parametrenin Windows dışındaki platformlarda kullanılması hatayla sonuçlanır.

-Çıkış Yok | -hayır

Başlangıç komutlarını çalıştırdıktan sonra çıkmıyor.

Örnek: pwsh -NoExit -Command Get-Date

-Logo Yok | -hayır

Etkileşimli oturumların başlangıcında başlığı gizler.

-Etkileşimli Değil | -noni

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 komut dosyaları için kullanışlıdır. Read-Host veya onay istemleri gibi etkileşimli özellikleri kullanma girişimleri, askıda kalmak yerine ifade sonlandırma hatalarına neden olur.

-Profil Yok | -hayır

PowerShell profillerini yüklemez.

-NoProfileLoadTime

Yükleme süresi 500 milisaniyeyi aştığında başlangıçta gösterilen PowerShell profili yükleme süresi metnini gizler.

-Çıkış Formatı | -o | -ile ilgili

PowerShell çıktısının nasıl biçimlendirileceğini belirler. Geçerli değerler "Metin" (metin dizeleri) veya "XML"dir (serileştirilmiş CLIXML biçimi).

Örnek: pwsh -o XML -c Get-Tarih

Bir PowerShell oturumu içinde çağrıldığında, seri durumdan çıkarılmış nesneleri düz dizeler yerine çıktı olarak alırsınız. Diğer kabuklardan çağrıldığında çıktı, CLIXML metni olarak biçimlendirilmiş dize verileridir.

-AyarlarDosyası | -ayarlar

Oturum için sistem genelindeki powershell.config.json ayarlar dosyasını geçersiz kılar. Varsayılan olarak sistem genelindeki ayarlar $PSHOME dizinindeki powershell.config.json dosyasından okunur.

Bu ayarların -ConfigurationName bağımsız değişkeni tarafından belirtilen uç nokta tarafından kullanılmadığını unutmayın.

Örnek: pwsh -SettingsFile c:\myproject\powershell.config.json

-SSHSunucuModu | -ssh'ler

PowerShell'i SSH alt sistemi olarak çalıştırmak için sshd_config'de kullanılır. Başka herhangi bir kullanım için tasarlanmamıştır veya desteklenmemektedir.

-STA

Tek iş parçacıklı bir grup kullanarak PowerShell'i başlatın. Bu varsayılandır. Bu anahtar yalnızca Windows platformunda mevcuttur. Bu parametrenin Windows dışındaki platformlarda kullanılması hatayla sonuçlanır.

-Sürüm | -v

PowerShell sürümünü görüntüler. Ek parametreler dikkate alınmaz.

-WindowStyle | -w

Oturumun pencere stilini ayarlar. Geçerli değerler Normal, Küçültülmüş, Büyütülmüş ve Gizli'dir. Bu parametre yalnızca Windows için geçerlidir. Bu parametrenin Windows dışındaki platformlarda kullanılması hatayla sonuçlanır.

-Çalışma Dizini | -wd | -wo

Başlangıçta yürütülerek başlangıç çalışma dizinini ayarlar. Geçerli herhangi bir PowerShell dosya yolu desteklenir.

PowerShell'i ana dizininizde başlatmak için şunu kullanın: pwsh -WorkingDirectory ~

-Yardım, -?, /?

pwsh yardımını görüntüler. PowerShell'de bir pwsh komutu yazıyorsanız, komut parametrelerinin başına eğik çizgi (/) değil, kısa çizgi (-) ekleyin.

İlgili makaleler