about_Pwsh
Kısa açıklama
Komut-line arabiriminin pwsh
nasıl kullanılacağını açıklar. Komut-line parametrelerini görüntüler ve söz dizimini açıklar.
Uzun açıklama
Sözdizimi
Usage: pwsh[.exe]
[-Login]
[[-File] <filePath> [args]]
[-Command { - | <script-block> [-args <arg-array>]
| <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-iduyarlı değildir.
-File | -f
değeri File
ise -
, komut metni standart girişten okunur.
Yeniden yönlendirilen standart giriş olmadan çalıştırmak pwsh -File -
normal bir oturum başlatır. Bu, parametrenin belirtilmemesiyle File
aynıdır.
Parametre yoksa ancak komut satırında değerler varsa, bu varsayılan parametredir. Belirtilen betik yerel kapsamda ("nokta kaynaklı") çalışır, böylece betiğin oluşturduğu işlevler ve değişkenler geçerli oturumda kullanılabilir. Betik dosya yolu ve parametreleri girin. Dosya parametresi adından sonra yazılan tüm karakterler betik dosya yolu ve ardından betik parametreleri olarak yorumlandığından, dosya komuttaki son parametre olmalıdır.
Genellikle, bir betiğin switch parametreleri dahil edilir veya atlanır.
Örneğin, aşağıdaki komut Get-Script.ps1 betik dosyasının All parametresini kullanır: -File .\Get-Script.ps1 -All
Nadir durumlarda, anahtar parametresi için Boole değeri sağlamanız gerekebilir. Dosya parametresinin değerindeki bir anahtar parametresine Boole değeri sağlamak için parametresini normalde hemen ardından iki nokta üst üste ve boole değerini kullanın. Örneğin: -File .\Get-Script.ps1 -All:$False
.
Betiklere 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: pwsh -File .\test.ps1 -TestParam %windir%
Buna karşılık, içinde çalıştırmak pwsh -File .\test.ps1 -TestParam $env:windir
cmd.exe
betiğin geçerli cmd.exe
kabuk 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 yorumlandığı için command parametresi içinde kullanılabilir.
Benzer şekilde, aynı komutu bir Batch betiğinden yürütmek istiyorsanız, veya yerine .\
$PSScriptRoot
geçerli yürütme dizinini temsil etmek için kullanırsınız%~dp0
: pwsh -File %~dp0test.ps1 -TestParam %windir%
. Bunun yerine kullandıysanız .\test.ps1
, Sabit yol bulunamadığından PowerShell bir hata oluşturur .\test.ps1
Not
Dosya parametresi, bağımsız değişken değerleri dizisi bekleyen bir parametre kullanan 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.
benzer şekilde -Command
, betik sonlandırma hatası oluştuğunda çıkış kodu olarak 1
ayarlanır. Ancak, ile -Command
aksine yürütme Ctrl+C ile kesildiğinde çıkış kodu olur 0
.
Not
PowerShell 7.2 itibarıyla Dosya parametresi yalnızca Windows'da dosyaları kabul eder .ps1
. Başka bir dosya türü sağlanmışsa bir hata oluşur. Bu davranış Windows'a özgüdür. Diğer platformlarda, PowerShell diğer dosya türlerini çalıştırmayı dener.
-Command | -c
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 Command'a ScriptBlock türü olarak geç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 pwsh
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ı (){}
pwsh
içine alınmış bir değişmez betik bloğu olarak ayrıştırılabilir.
pwsh -Command {Get-WinEvent -LogName security}
içinde cmd.exe
betik bloğu (veya ScriptBlock türü) diye 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 tam olarak tipik bir PowerShell isteminde yazdığınız gibi davranır ve betik bloğunun içeriğini size geri yazdırın.
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 cmd.exe
çalıştırma 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:
pwsh -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. Örnek:
@'
"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 veya 0
$?
1
$true
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 -ErrorAction Stop
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.
-ConfigurationName | -config
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
Oturum yapılandırması (.pssc
) dosya yolunu belirtir. Yapılandırma dosyasında yer alan yapılandırma PowerShell oturumuna uygulanı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 üzerinde Enter-PSHostProcess
CustomPipeName parametresiyle kullanılır.
Bu parametre PowerShell 6.2'de kullanıma sunulmuştur.
Örnek:
# PowerShell instance 1
pwsh -CustomPipeName mydebugpipe
# PowerShell instance 2
Enter-PSHostProcess -CustomPipeName mydebugpipe
-EncodedCommand | -e | -ec
Bir komutun Base64-en kodlanmış dize sürümünü kabul eder. Karmaşık, iç içe alıntı gerektiren komutları PowerShell'e göndermek için bu parametreyi kullanın. Base64 gösterimi UTF-16LE kodlanmış bir dize olmalıdır.
Örnek:
$command = 'dir "c:\program files" '
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
pwsh -encodedcommand $encodedCommand
-ExecutionPolicy | -ex | -ep
Geçerli oturum için varsayılan yürütme ilkesini ayarlar ve ortam değişkenine $env:PSExecutionPolicyPreference
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. $env:PSExecutionPolicyPreference
Ortam değişkeni Windows dışı platformlarda mevcut değildir.
-InputFormat | -inp | -if
PowerShell'e gönderilen verilerin biçimini açıklar. Geçerli değerler şunlardır: "Metin" (metin dizeleri) veya "XML" (serileştirilmiş CLIXML biçimi).
-Interactive | -i
Kullanıcıya etkileşimli bir istem sunma. NonInteractive parametresi için Ters.
-Login | -l
Linux ve macOS'ta, /etc/profile ve ~/.profile gibi oturum açma profillerini yürütmek için /bin/sh kullanarak PowerShell'i bir oturum açma kabuğu olarak başlatır. Windows'da bu anahtar hiçbir şey yapmaz.
Önemli
PowerShell'i oturum açma kabuğu olarak başlatmak için önce bu parametre gelmelidir. Bu parametrenin başka bir konuma geçirilmesi yoksayılır.
UNIX-like işletim sistemlerinde oturum açma kabuğu olarak ayarlamak pwsh
için:
tam mutlak yolunun
pwsh
altında listelendiğini doğrulayın/etc/shells
- Bu yol genellikle Linux veya
/usr/local/bin/pwsh
macOS'ta olduğu gibi/usr/bin/pwsh
bir yoldur - Bazı yükleme yöntemlerinde, bu giriş yükleme zamanında otomatik olarak eklenir
- içinde
/etc/shells
yoksapwsh
, yolunu son satıra eklemek içinpwsh
bir düzenleyici kullanın. Bu, düzenlemek için yükseltilmiş ayrıcalıklar gerektirir.
- Bu yol genellikle Linux veya
Geçerli 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
Oturum açma kabuğu şu anda Linux için Windows Alt Sistemi (WSL) üzerinde desteklenmemektedir ve orada oturum açma kabuğu olarak ayarlanma pwsh
girişimi WSL'nin etkileşimli olarak başlatılamamasına neden olabilir.
-MTA
Çok iş parçacıklı bir daire kullanarak PowerShell'i başlatın. Bu anahtar yalnızca Windows'ta kullanılabilir.
-NoExit | -noe
Başlangıç komutları çalıştırıldıktan sonra çıkılmıyor.
Örnek: pwsh -NoExit -Command Get-Date
-NoLogo | -nol
Etkileşimli oturumların başlangıcında başlığı gizler.
-NonInteractive | -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 betikler için yararlıdır. İnteraktif özellikleri (veya onay istemleri gibi Read-Host
) kullanmaya yönelik tüm girişimler, deyimin kilitlenme yerine hataları sonlandırmasına neden olur.
-NoProfile | -nop
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.
-OutputFormat | -o | -of
PowerShell çıkışının nasıl biçimlendirileceğini belirler. Geçerli değerler şunlardır: "Metin" (metin dizeleri) veya "XML" (seri hale getirilmiş CLIXML biçimi).
Örnek: pwsh -o XML -c Get-Date
Bir PowerShell oturumunda çağrıldığında seri durumdan çıkarılmış nesneleri düz dizeler yerine çıkış olarak alırsınız. Diğer kabuklardan çağrıldığında çıkış, CLIXML metni olarak biçimlendirilmiş dize verileridir.
-SettingsFile | -settings
Oturum için sistem-wide powershell.config.json
ayarları dosyasını geçersiz kılar. Varsayılan olarak, sistem-wide ayarları dizinindeki dosyasından powershell.config.json
$PSHOME
okunur.
Bu ayarların bağımsız değişken tarafından belirtilen uç nokta tarafından -ConfigurationName
kullanılmadığını unutmayın.
Örnek: pwsh -SettingsFile c:\myproject\powershell.config.json
-SSHServerMode | -sshs
PowerShell'i SSH alt sistemi olarak çalıştırmak için sshd_config kullanılır. Başka bir kullanım için tasarlanmamıştır veya desteklenmez.
-STA
PowerShell'i tek iş parçacıklı bir daire kullanarak başlatın. Bu varsayılan seçenektir. Bu anahtar yalnızca Windows platformunda kullanılabilir.
-Version | -v
PowerShell sürümünü görüntüler. Ek parametreler yoksayılır.
-WindowStyle | -w
Oturum için pencere stilini ayarlar. Geçerli değerler Normal, Simge Durumuna Küçültülmüş, Ekranı Kaplamış ve Gizli değerleridir.
-WorkingDirectory | -wd
Başlangıçta yürüterek ilk çalışma dizinini ayarlar. Geçerli herhangi bir PowerShell dosya yolu desteklenir.
PowerShell'i giriş dizininizde başlatmak için şunu kullanın: pwsh -WorkingDirectory ~
-Help, -?, /?
için pwsh
yardım görüntüler. PowerShell'de pwsh komutu yazıyorsanız, komut parametrelerine eğik çizgi () yerine kısa çizgi ()-
/
ekleyin.