about_Automatic_Variables
Kısa açıklama
PowerShell tarafından oluşturulan ve korunan durum bilgilerini depolayan değişkenleri açıklar.
Kavramsal olarak, bu değişkenlerin çoğu salt okunur olarak kabul edilir. Bu kişilere yazılabilir olsalar da geriye dönük uyumluluk için yazılmamalıdır.
PowerShell'deki otomatik değişkenlerin listesi aşağıdadır:
- $$
- $?
- $^
- $_
- $args
- $ConsoleFileName
- $EnabledExperimentalFeatures
- $Error
- $Event
- $EventArgs
- $EventSubscriber
- $ExecutionContext
- $false
- $foreach
- $HOME
- $Host
- $input
- $IsCoreCLR
- $IsLinux
- $IsMacOS
- $IsWindows
- $LASTEXITCODE
- $Matches
- $MyInvocation
- $NestedPromptLevel
- $null
- $PID
- $PROFILE
- $PSBoundParameters
- $PSCmdlet
- $PSCommandPath
- $PSCulture
- $PSDebugContext
- $PSEdition
- $PSHOME
- $PSItem
- $PSScriptRoot
- $PSSenderInfo
- $PSUICulture
- $PSVersionTable
- $PWD
- $Sender
- $ShellId
- $StackTrace
- $switch
- $this
- $true
Uzun açıklama
$$
Oturum tarafından alınan son satırdaki son belirteci içerir.
$?
Son komutun yürütme durumunu içerir. Son komut başarılı olursa True ve başarısız olursa False değerini içerir. Ayrıştırma hataları yürütmeye neden olmadığından değerini $?
etkilemez.
bir işlem hattında birden çok aşamada çalıştırılan cmdlet'ler ve gelişmiş işlevler için, örneğin hem hem de process
bloklarında, herhangi bir noktada çağrılır this.WriteError()
veya $PSCmdlet.WriteError()
herhangi bir noktada sırasıyla False olarak ayarlanır.this.ThrowTerminatingError()
$PSCmdlet.ThrowTerminatingError()
$?
end
Write-Error
Cmdlet yürütüldükten hemen sonra her zaman False olarak ayarlanır$?
, ancak çağıran bir işlev için False olarak ayarlanmadı $?
:
function Test-WriteError
{
Write-Error "Bad"
"The `$? variable is: $?"
}
Test-WriteError
"Now the `$? variable is: $?"
Test-WriteError:
Line |
7 | Test-WriteError
| ~~~~~~~~~~~~~~~
| Bad
The $? variable is: False
Now the $? variable is: True
İkinci amaç için bunun $PSCmdlet.WriteError()
yerine kullanılmalıdır.
Yerel komutlar (yürütülebilir dosyalar) $?
için, 0 olduğunda $LASTEXITCODE
True olarak ve başka bir değer olduğunda $LASTEXITCODE
False olarak ayarlanır.
Not
PowerShell 7'ye kadar, deyimi parantez içinde(...)
, alt ifade söz diziminde veya dizi ifadesinde $(...)
@(...)
her zaman reset$?
True olarak sarmalar. Örneğin, (Write-Error)
True olarak gösterilir$?
. Bu davranış PowerShell 7'de değiştirildiğinden $?
, her zaman bu ifadelerdeki son komut çalıştırmasının gerçek başarısını yansıtır.
$^
Oturum tarafından alınan son satırdaki ilk belirteci içerir.
$_
ile $PSItem
aynı. current İşlem hattı nesnesindeki nesneyi içerir. Bu değişkeni, işlem hattındaki her nesne üzerinde eylem gerçekleştiren komutlarda kullanabilirsiniz.
Daha fazla bilgi için bkz . about_PSItem.
$args
bir işleve, betike veya betik bloğuna geçirilen bildirilmemiş parametreler için bir değer dizisi içerir. İşlev oluşturduğunuzda, anahtar sözcüğüyle veya işlev adından sonra parantez içinde virgülle param
ayrılmış bir parametre listesi ekleyerek parametreleri bildirebilirsiniz.
Bir olay eyleminde $args
değişken, işlenen olayın olay bağımsız değişkenlerini temsil eden nesneler içerir. Bu değişken yalnızca bir olay kayıt komutunun Action
bloğu içinde doldurulur. Bu değişkenin değeri, döndüren nesnenin Get-Event
SourceArgs özelliğinde PSEventArgs de bulunabilir.
$ConsoleFileName
Oturumda en son kullanılan konsol dosyasının (.psc1
) yolunu içerir. Bu değişken, PowerShell'i PSConsoleFile parametresiyle başlattığınızda veya ek bileşen adlarını bir konsol dosyasına aktarmak için cmdlet'ini kullandığınızda Export-Console
doldurulur.
cmdlet'ini Export-Console
parametresiz kullandığınızda, oturumda en son kullanılan konsol dosyasını otomatik olarak güncelleştirir. Güncelleştirilecek dosyayı belirlemek için bu otomatik değişkeni kullanabilirsiniz.
$EnabledExperimentalFeatures
Etkinleştirilen deneysel özelliklerin adlarının listesini içerir.
$Error
En son hataları temsil eden bir hata nesneleri dizisi içerir. En son hata, dizisindeki $Error[0]
ilk hata nesnesidir.
Bir hatanın $Error
diziye eklenmesini önlemek için ErrorAction ortak parametresini Ignore değeriyle kullanın. Daha fazla bilgi için bkz . about_CommonParameters.
$Event
İşlenmekte olan olayı temsil eden bir PSEventArgs nesne içerir. Bu değişken yalnızca gibi Register-ObjectEvent
bir olay kayıt komutunun bloğu içinde Action
doldurulur. Bu değişkenin değeri, cmdlet'in döndürdüğü nesneyle Get-Event
aynıdır. Bir betik bloğunda değişkeninin Event
özelliklerini (gibi$Event.TimeGenerated
Action
) kullanabilirsiniz.
$EventArgs
İşlenmekte olan olayın EventArgs öğesinden türetilen ilk olay bağımsız değişkenini temsil eden bir nesne içerir. Bu değişken yalnızca bir olay kayıt komutunun Action
bloğu içinde doldurulur. Bu değişkenin değeri, döndüren nesnenin Get-Event
SourceEventArgs özelliğinde PSEventArgs de bulunabilir.
$EventSubscriber
İşlenmekte olan olayın olay abonesini temsil eden bir PSEventSubscriber nesne içerir. Bu değişken yalnızca bir olay kayıt komutunun Action
bloğu içinde doldurulur. Bu değişkenin değeri, cmdlet'in döndürdüğü nesneyle Get-EventSubscriber
aynıdır.
$ExecutionContext
PowerShell konağı yürütme bağlamını temsil eden bir EngineIntrinsics nesnesi içerir. Cmdlet'ler için kullanılabilen yürütme nesnelerini bulmak için bu değişkeni kullanabilirsiniz.
$false
False içerir. dizesini "false"
kullanmak yerine komutlarda ve betiklerde False değerini göstermek için bu değişkeni kullanabilirsiniz. Dize boş olmayan bir dizeye veya sıfır olmayan bir tamsayıya dönüştürülürse True olarak yorumlanabilir.
$foreach
ForEach döngüsünün numaralandırıcısını (sonuçta elde edilen değerleri değil) içerir. Değişken $ForEach
yalnızca ForEach
döngü çalışırken bulunur; döngü tamamlandıktan sonra silinir.
Numaralandırıcılar, döngü değerlerini almak ve döngü yinelemesini current değiştirmek için kullanabileceğiniz özellikler ve yöntemler içerir. Daha fazla bilgi için bkz . Numaralandırmaları Kullanma.
$HOME
Kullanıcının giriş dizininin tam yolunu içerir. Windows'da, bu değişken genellikle C:\Users\<UserName>
Windows ortam değişkeninin "$env:USERPROFILE"
değerini kullanır. Unix'te bu değişken ortam değişkeninin HOME
değerini kullanır.
Önemli
Windows, kullanıcı profilinin konumunu yeniden yönlendirebilir. Bu, ile $HOME
aynı değere "$env:HOMEDRIVE$env:HOMEPATH"
sahip olmadığı anlamına gelir.
$Host
PowerShell için konak uygulamasını temsil current eden bir nesne içerir.
Bu değişkeni, ana bilgisayarı komutlarda temsil current etmek veya gibi $Host.version
$Host.CurrentCulture
konağın özelliklerini görüntülemek veya $Host.UI.RawUI.BackGroundColor = "Red"
değiştirmek için kullanabilirsiniz.
Not
içindeki $Host.PrivateData
renk ayarları tercih değişkeniyle $PSStyle
değiştirildi. Daha fazla bilgi için bkz . about_ANSI_Terminals.
$input
bir işleve geçirilen tüm girişleri numaralandıran bir numaralandırıcı içerir.
$input
Değişkeni yalnızca işlevler, betik blokları (adlandırılmamış işlevler) ve betik dosyaları (kaydedilen betik blokları) için kullanılabilir.
,
process
veyaend
bloğu olmayan birbegin
işlevde$input
, değişkeni işleve tüm girişlerin koleksiyonunu numaralandırır.bloğunda
begin
$input
değişken veri içermiyor.bloğunda
process
$input
değişken, işlem hattındaki nesnesini içerir current .bloğunda
end
$input
değişkeni işlevine tüm girişlerin koleksiyonunu numaralandırır.Not
Değişkeni hem bloğun
$input
hem de bloğunprocess
end
içinde aynı işlev veya betik bloğunda kullanamazsınız.
Bir numaralandırıcı olduğundan $input
, özelliklerinden herhangi birine erişmek artık kullanılamama neden olur $input
. Özellikleri yeniden kullanmak için başka bir değişkende $input
depolayabilirsiniz$input
.
Numaralandırıcılar, döngü değerlerini almak ve döngü yinelemesini current değiştirmek için kullanabileceğiniz özellikler ve yöntemler içerir. Daha fazla bilgi için bkz . Numaralandırmaları Kullanma.
değişkeni$input
, komut satırından çağrıldığında parametresi pwsh
tarafından -Command
belirtilen komut için de kullanılabilir. Aşağıdaki örnek, Windows Komut kabuğundan çalıştırılır.
echo Hello | pwsh -Command """$input World!"""
$IsCoreCLR
Oturumun current .NET Core Çalışma Zamanı'nda (CoreCLR) çalışıp çalışmadığını içerir$true
. Aksi takdirde içerir $false
.
$IsLinux
Oturumun current linux işletim sisteminde çalışıp çalışmadığını içerir$true
.
Aksi takdirde içerir $false
.
$IsMacOS
Oturumun current macOS işletim sisteminde çalışıp çalışmadığını içerir$true
.
Aksi takdirde içerir $false
.
$IsWindows
Oturumun current bir Windows işletim sisteminde çalışıp çalışmadığını içerir$true
. Aksi takdirde içerir $false
.
$LASTEXITCODE
Çalıştıran son yerel programın veya PowerShell betiğinin çıkış kodunu içerir.
PowerShell betikleri için değeri $LASTEXITCODE
, betiğin nasıl çağrıldığı ve anahtar sözcüğün exit
kullanılıp kullanılmadığına bağlıdır:
Bir betik anahtar sözcüğünü kullandığında
exit
:$LASTEXITCODE
, anahtar sözcüğü tarafından belirtilen değereexit
ayarlanır. Daha fazla bilgi için bkz . about_Language_Keywords.Bir betik gibi doğrudan veya gibi
./Test.ps1
& ./Test.ps1
çağrı işleciyle (&
) çağrıldığında:değeri
$LASTEXITCODE
aşağıdakiler dışında değiştirilmez:- Betik, anahtar sözcüğünü
exit
kullanan başka bir betiği çağırır - Betik yerel bir komut çağırır
- Betik anahtar sözcüğünü
exit
kullanır
- Betik, anahtar sözcüğünü
Dosya parametresi kullanılarak ile
pwsh
bir betik çağrıldığında,$LASTEXITCODE
olarak ayarlanır:1
bir özel durum nedeniyle betik sonlandırıldıysa- Betikte
exit
kullanılıyorsa anahtar sözcüğü tarafından belirtilen değer 0
betik başarıyla tamamlandıysa
Komut parametresi kullanılarak ile
pwsh
bir betik çağrıldığında şu$LASTEXITCODE
şekilde ayarlanır:1
bir özel durum nedeniyle betik sonlandırıldıysa veya son komutun sonucu olarak ayarlandıysa$?
$false
0
betik başarıyla tamamlandıysa ve son komutun sonucu olarak ayarlandıysa$?
$true
Dosya ve Komut parametreleri hakkında daha fazla bilgi için bkz. about_Pwsh.
$Matches
$Matches
değişkeni ve -notmatch
işleçleriyle -match
çalışır. or işlecine -match
skaler giriş gönderdiğinizde ve biri eşleşme algıladığında, bir Boole değeri döndürür ve otomatik değişkeni eşleşen dize değerlerinin karma tablosuyla doldurur$Matches
.-notmatch
Karma $Matches
tablo, işleciyle normal ifadeler kullandığınızda yakalamalarla -match
da doldurulabilir.
İşleç -match
hakkında daha fazla bilgi için bkz . about_Comparison_Operators. Normal ifadeler hakkında daha fazla bilgi için bkz . about_Regular_Expressions.
değişkeni $Matches
parametresiyle -Regex
bir switch
deyimde de çalışır. ve -notmatch
işleçleri ile -match
aynı şekilde doldurulur. Deyimi hakkında switch
daha fazla bilgi için bkz . about_Switch.
Not
Bir oturumda doldurulduğunda $Matches
, başka bir eşleşme tarafından üzerine yazılana kadar eşleşen değeri korur. Yeniden kullanılırsa ve eşleşme bulunmazsa-match
, ile eşleşmez$Matches
reset$null
. Daha önce eşleşen değer, başka bir eşleşme bulunana kadar içinde $Matches
tutulur.
$MyInvocation
Komutla ilgili current ad, parametreler, parametre değerleri gibi bilgileri ve komutun nasıl başlatıldığı, çağrıldığı veya çağrıldığı hakkındaki bilgileri (komutu çağıran current betiğin adı gibi) içerir.
$MyInvocation
yalnızca betikler, işlev ve betik blokları için doldurulur. Komutu tanımlamak için betikte döndüren $MyInvocation
System.Management.Automation.InvocationInfo nesnesindeki current bir işlevin ($MyInvocation.MyCommand.Name
) adı gibi bilgileri kullanabilirsinizcurrent.
Bu, betiğin adını current bulmak için kullanışlıdır.
PowerShell 3.0'da MyInvocation
başlayarak aşağıdaki yeni özelliklere sahiptir.
- PSScriptRoot - Komutu çağıran current betiğin tam yolunu içerir. Bu özelliğin değeri yalnızca çağıran bir betik olduğunda doldurulur.
- PSCommandPath - Komutu çağıran current betiğin tam yolunu ve dosya adını içerir. Bu özelliğin değeri yalnızca çağıran bir betik olduğunda doldurulur.
$PSScriptRoot
ve $PSCommandPath
otomatik değişkenlerinden farklı olarak, otomatik değişkenin PSScriptRoot ve PSCommandPath özellikleri $MyInvocation
betikle değil current çağıran veya çağıran betik hakkında bilgi içerir.
$NestedPromptLevel
current İstem düzeyini içerir. 0 değeri özgün istem düzeyini gösterir. İç içe bir düzey girdiğinizde değer artırılır ve değerden çıktığınızda azalmış olur.
Örneğin, yöntemini kullandığınızda $Host.EnterNestedPrompt
PowerShell iç içe bir komut istemi sunar. PowerShell, PowerShell hata ayıklayıcısında bir kesme noktasına ulaştığınızda iç içe bir komut istemi de sunar.
İç içe bir istem girdiğinizde PowerShell komutu duraklatır current , yürütme bağlamını kaydeder ve değişkenin $NestedPromptLevel
değerini artırır. ek iç içe komut istemleri (en fazla 128 düzey) oluşturmak veya özgün komut istemine dönmek için komutunu tamamlayın veya yazın exit
.
değişkeni, $NestedPromptLevel
istem düzeyini izlemenize yardımcı olur. Her zaman görünür olması için bu değeri içeren alternatif bir PowerShell komut istemi oluşturabilirsiniz.
$null
$null
null veya boş değer içeren bir otomatik değişkendir. Komutlarda ve betiklerde eksik veya tanımsız bir değeri göstermek için bu değişkeni kullanabilirsiniz.
PowerShell bir değere veya yer tutucuya sahip bir nesne olarak ele $null
alır, böylece bir değer koleksiyonundaki boş bir değeri temsil etmek için kullanabilirsiniz $null
.
Örneğin, bir koleksiyona dahil edildiğinde $null
nesnelerden biri olarak sayılır.
$a = "one", $null, "three"
$a.count
3
değişkeni cmdlet'ine ForEach-Object
aktarırsanız$null
, diğer nesnelerde olduğu gibi için $null
bir değer oluşturur.
"one", $null, "three" | ForEach-Object { "Hello " + $_}
Hello one
Hello
Hello three
Sonuç olarak, parametre değeri olmadığını ifade etmek için kullanamazsınız$null
. parametresi değeri $null
, varsayılan parametre değerini geçersiz kılar.
Ancak, PowerShell değişkeni yer tutucu olarak değerlendirdiğinden $null
, aşağıdaki gibi betiklerde kullanabilirsiniz; bu, yoksayılırsa $null
işe yaramaz.
$calendar = @($null, $null, "Meeting", $null, $null, "Team Lunch", $null)
$days = "Sunday","Monday","Tuesday","Wednesday","Thursday",
"Friday","Saturday"
$currentDay = 0
foreach($day in $calendar)
{
if($day -ne $null)
{
"Appointment on $($days[$currentDay]): $day"
}
$currentDay++
}
Appointment on Tuesday: Meeting
Appointment on Friday: Team lunch
$PID
PowerShell oturumunu barındıran current işlemin işlem tanımlayıcısını (PID) içerir.
$PROFILE
Kullanıcı ve konak uygulaması için PowerShell profilinin current current tam yolunu içerir. Komutlarda profili göstermek için bu değişkeni kullanabilirsiniz. Örneğin, bir profilin oluşturulup oluşturulmadığını belirlemek için bunu bir komutta kullanabilirsiniz:
Test-Path $PROFILE
İsterseniz, bunu bir komutta kullanarak profil oluşturabilirsiniz:
New-Item -ItemType file -Path $PROFILE -Force
Profili notepad.exe açmak için bir komutta kullanabilirsiniz:
notepad.exe $PROFILE
$PSBoundParameters
Bir betik veya işleve geçirilen parametrelerin ve değerlerinin current bir sözlüğünü içerir. Bu değişken yalnızca betik veya işlev gibi parametrelerin bildirildiği bir kapsamda bir değere sahiptir. Bunu kullanarak parametrelerin current değerlerini görüntüleyebilir veya değiştirebilir ya da parametre değerlerini başka bir betik veya işleve geçirebilirsiniz.
Bu örnekte, Test2 işlevi test1 işlevine iletir$PSBoundParameters
. $PSBoundParameters
, Anahtar ve Değer biçiminde görüntülenir.
function Test1 {
param($a, $b)
# Display the parameters in dictionary format.
$PSBoundParameters
}
function Test2 {
param($a, $b)
# Run the Test1 function with $a and $b.
Test1 @PSBoundParameters
}
Test2 -a Power -b Shell
Key Value
--- -----
a Power
b Shell
$PSCmdlet
Çalıştırılmakta olan cmdlet'i veya gelişmiş işlevi temsil eden bir nesne içerir.
Kullanım koşullarına yanıt vermek için cmdlet veya işlev kodunuzda nesnenin özelliklerini ve yöntemlerini kullanabilirsiniz. Örneğin ParameterSetName özelliği, kullanılmakta olan parametre kümesinin adını içerir ve ShouldProcess yöntemi cmdlet'ine WhatIf ve Confirm parametrelerini dinamik olarak ekler.
Otomatik değişken hakkında $PSCmdlet
daha fazla bilgi için bkz . about_Functions_CmdletBindingAttribute ve about_Functions_Advanced.
$PSCommandPath
Çalıştırılmakta olan betiğin tam yolunu ve dosya adını içerir. Bu değişken tüm betiklerde geçerlidir.
$PSCulture
PowerShell 7'de başlayarak, $PSCulture
PowerShell çalışma alanının (oturum) kültürünü current yansıtır. PowerShell çalışma alanında kültür değiştirilirse, $PSCulture
bu çalışma alanının değeri güncelleştirilir.
Kültür, sayılar, para birimi ve tarihler gibi öğelerin görüntüleme biçimini belirler ve System.Globalization.CultureInfo nesnesinde depolanır. Bilgisayarın kültürünü görüntülemek için kullanın Get-Culture
. $PSCulture
Name özelliğinin değerini içerir.
$PSDebugContext
Hata ayıklama sırasında, bu değişken hata ayıklama ortamı hakkında bilgi içerir. Aksi takdirde, null bir değer içerir. Sonuç olarak, hata ayıklayıcının denetimi olup olmadığını belirlemek için bunu kullanabilirsiniz. Doldurulduğunda, Kesme Noktaları ve InvocationInfo özelliklerine sahip bir PsDebugContext nesnesi içerir. InvocationInfo özelliği, Location özelliği de dahil olmak üzere çeşitli yararlı özelliklere sahiptir. Location özelliği, hata ayıklanan betiğin yolunu gösterir.
$PSEdition
içinde $PSVersionTable.PSEdition
aynı değeri içerir. Bu değişken modül bildirim dosyalarında kullanılabilirken $PSVersionTable
kullanılamaz.
$PSHOME
Genellikle Windows sistemlerinde PowerShell C:\Program Files\PowerShell\7
için yükleme dizininin tam yolunu içerir. Bu değişkeni PowerShell dosyalarının yollarında kullanabilirsiniz. Örneğin, aşağıdaki komut, yardım sözcüğü için kavramsal Yardım konularını arar:
Select-String -Pattern Help -Path $PSHOME\en-US\*.txt
$PSItem
ile $_
aynı. current İşlem hattı nesnesindeki nesneyi içerir. Bu değişkeni, işlem hattındaki her nesne üzerinde eylem gerçekleştiren komutlarda kullanabilirsiniz.
Daha fazla bilgi için bkz . about_PSItem.
$PSScriptRoot
Yürütülen betiğin üst dizininin tam yolunu içerir.
PowerShell 2.0'da bu değişken yalnızca betik modüllerinde (.psm1
) geçerlidir.
PowerShell 3.0'da başlayarak tüm betiklerde geçerlidir.
$PSSenderInfo
PSSession'ı başlatan kullanıcı hakkında, kullanıcı kimliği ve kaynak bilgisayarın saat dilimi dahil olmak üzere bilgileri içerir. Bu değişken yalnızca PSSessions içinde kullanılabilir.
değişkeni$PSSenderInfo
, varsayılan olarak yalnızca $PSVersionTable
kaynak oturumdan öğesini içeren kullanıcı tarafından yapılandırılabilir ApplicationArguments özelliğini içerir. ApplicationArguments özelliğine veri eklemek için cmdlet'in ApplicationArguments parametresini New-PSSessionOption
kullanın.
$PSUICulture
İşletim sisteminde yapılandırılan kullanıcı arabirimi (UI) kültürünün adını içerir. Kullanıcı arabirimi kültürü, menüler ve iletiler gibi kullanıcı arabirimi öğeleri için hangi metin dizelerinin kullanılacağını belirler. Bu, sistemin System.Globalization.CultureInfo.CurrentUICulture.Name özelliğinin değeridir. Sistemin System.Globalization.CultureInfo nesnesini almak için cmdlet'ini Get-UICulture
kullanın.
$PSVersionTable
Oturumda current çalışan PowerShell sürümüyle ilgili ayrıntıları görüntüleyen salt okunur bir karma tablo içerir. Tablo aşağıdaki öğeleri içerir:
- PSVersion - PowerShell sürüm numarası
- PSEdition Bu özellik, PowerShell 4 ve altı için 'Desktop' değerinin yanı sıra tam özellikli Windows sürümlerinde PowerShell 5.1'e sahiptir. Bu özellik, Windows Nano Server veya Windows IoT gibi azaltılmış ayak izi sürümleri üzerinde Windows PowerShell 5.1'in yanı sıra PowerShell 6 ve üzeri için değerine
Core
sahiptir. - GitCommitId - GitHub'daki kaynak dosyaların işleme kimliği,
- İşletim Sistemi - PowerShell'in üzerinde çalıştığı işletim sisteminin açıklaması.
- Platform - İşletim sisteminin üzerinde çalıştığı platform. Linux ve macOS üzerindeki değer Unix'tir. Bkz
$IsMacOs
. ve$IsLinux
. - PSCompatibleVersions - PowerShell'in sürümle current uyumlu sürümleri
- PSRemotingProtocolVersion - PowerShell uzaktan yönetim protokolünün sürümü.
- SerializationVersion - Serileştirme yönteminin sürümü
- WSManStackVersion - WS-Management yığınının sürüm numarası
$PWD
PowerShell çalışma alanı için current dizin konumunun current tam yolunu temsil eden bir yol nesnesi içerir.
Not
PowerShell, işlem başına birden çok çalışma alanı destekler. Her çalışma alanının kendi current dizini vardır. Bu işlem diziniyle current aynı değildir: [System.Environment]::CurrentDirectory
.
$Sender
Bu olayı oluşturan nesneyi içerir. Bu değişken yalnızca bir olay kaydı komutunun Eylem bloğu içinde doldurulur. Bu değişkenin değeri, döndüren nesnenin Get-Event
Sender özelliğinde PSEventArgs de bulunabilir.
$ShellId
Kabuğun tanımlayıcısını current içerir.
$StackTrace
En son hata için bir yığın izlemesi içerir.
$switch
Bir deyiminin sonuçta elde edilen değerlerini değil numaralandırıcıyı Switch
içerir. $switch
Değişken yalnızca Switch
deyimi çalışırken bulunur; deyimi yürütmeyi tamamladığında switch
silinir. Daha fazla bilgi için bkz . about_Switch.
Numaralandırıcılar, döngü değerlerini almak ve döngü yinelemesini current değiştirmek için kullanabileceğiniz özellikler ve yöntemler içerir. Daha fazla bilgi için bkz . Numaralandırmaları Kullanma.
$this
değişkeni, sınıfın $this
kendi örneğine başvurmak için sınıfları genişleten betik bloklarında kullanılır.
PowerShell'in Genişletilebilir Tür Sistemi (ETS), betik bloklarını kullanarak sınıflara özellik eklemenize olanak tanır. Bir betik özelliğini veya betik yöntemini tanımlayan bir betik bloğunda $this
değişken, genişletilmekte olan sınıfın nesnesinin bir örneğine başvurur. Örneğin PowerShell, BaseName özelliğini FileInfo sınıfına eklemek için ETS kullanır.
PS> Get-ChildItem .\README.md | Get-Member BaseName | Format-List
TypeName : System.IO.FileInfo
Name : BaseName
MemberType : ScriptProperty
Definition : System.Object BaseName {get=if ($this.Extension.Length -gt 0)
{$this.Name.Remove($this.Name.Length - $this.Extension.Length
)}else{$this.Name};}
Daha fazla bilgi için bkz . about_Types.ps1xml.
Bir PowerShell sınıfında değişken, $this
sınıfın kendisinin örnek nesnesine başvurur ve sınıfta tanımlanan özelliklere ve yöntemlere erişim sağlar. Daha fazla bilgi için bkz . about_Classes.
değişkeni $this
, betik bloklarını olay işleyicisi için temsilci olarak alan .NET olay sınıfları tarafından da kullanılır. Bu senaryoda, $this
olayı gönderen olarak bilinen olayı oluşturan nesneyi temsil eder.
$true
True içerir. Komutlarda ve betiklerde True'yu temsil etmek için bu değişkeni kullanabilirsiniz.
Numaralandırıcıları Kullanma
$input
, $foreach
ve $switch
değişkenleri, içeren kod bloğu tarafından işlenen değerler arasında yinelemek için kullanılan tüm numaralandırıcılardır.
Numaralandırıcı, ilerlemek veya yinelemek ya da reset yineleme değerlerini almak için kullanabileceğiniz özellikler ve yöntemler içerir. Numaralandırıcıları doğrudan düzenleme en iyi yöntem olarak kabul edilmez.
Döngüler içinde akış denetimi anahtar sözcüklerinin sonu ve devamı tercih edilmelidir.
İşlem hattı girişini kabul eden işlevlerde, ValueFromPipeline veya ValueFromPipelineByPropertyName öznitelikleriyle parametreleri kullanmak en iyi yöntemdir.
Daha fazla bilgi için bkz . about_Functions_Advanced_Parameters.
MoveNext
MoveNext yöntemi numaralandırıcıyı koleksiyonun sonraki öğesine ilerler. Numaralandırıcı koleksiyonun sonunu geçtiyse, False
numaralandırıcı başarılı bir şekilde gelişmişse MoveNext döndürürTrue
.
Not
MoveNext tarafından döndürülen Boole değeri çıkış akışına gönderilir.
Çıktıyı, türüne yayınlayarak [void]
veya Out-Null olarak piping yaparak gizleyebilirsiniz.
$input.MoveNext() | Out-Null
[void]$input.MoveNext()
Reset
Reset yöntemi, numaralandırıcıyı koleksiyondaki ilk öğeden önceki ilk konumuna ayarlar.
Current
Current özelliği, koleksiyondaki veya işlem hattındaki current öğesini numaralandırıcının konumunda alır.
Current Özelliği, MoveNext çağrılana kadar aynı özelliği döndürmeye devam eder.
Örnekler
Örnek 1: $input değişkenini kullanma
Aşağıdaki örnekte, değişkene $input
erişmek, işlem bloğunun bir sonraki yürütülmesine kadar değişkeni temizler. yönteminin Reset kullanılması değişkeni current işlem hattı değerine sıfırlar$input
.
function Test
{
begin
{
$i = 0
}
process
{
"Iteration: $i"
$i++
"`tInput: $input"
"`tAccess Again: $input"
$input.Reset()
"`tAfter Reset: $input"
}
}
"one","two" | Test
Iteration: 0
Input: one
Access Again:
After Reset: one
Iteration: 1
Input: two
Access Again:
After Reset: two
İşlem bloğu, erişmeseniz bile değişkeni otomatik olarak ilerletir $input
.
$skip = $true
function Skip
{
begin
{
$i = 0
}
process
{
"Iteration: $i"
$i++
if ($skip)
{
"`tSkipping"
$skip = $false
}
else
{
"`tInput: $input"
}
}
}
"one","two" | Skip
Iteration: 0
Skipping
Iteration: 1
Input: two
Örnek 2: İşlem bloğunun dışında $input kullanma
İşlem bloğunun $input
dışında değişken işleve yöneltilen tüm değerleri temsil eder.
- değişkenine
$input
erişmek tüm değerleri temizler. - Reset yöntemi koleksiyonun tamamını sıfırlar.
- Current Özelliği hiçbir zaman doldurulmaz.
- Koleksiyon gelişmiş olmadığından MoveNext yöntemi false döndürür.
- MoveNext çağrısı değişkeni temizler
$input
.
- MoveNext çağrısı değişkeni temizler
Function All
{
"All Values: $input"
"Access Again: $input"
$input.Reset()
"After Reset: $input"
$input.MoveNext() | Out-Null
"After MoveNext: $input"
}
"one","two","three" | All
All Values: one two three
Access Again:
After Reset: one two three
After MoveNext:
Örnek 3: $input kullanma.Current mülk
Current özelliğiyle işlem current hattı değerine yöntemi kullanılmadan Reset birden çok kez erişilebilir. İşlem bloğu MoveNext yöntemini otomatik olarak çağırmaz.
Current MoveNext öğesini açıkça çağırmadığınız sürece özellik hiçbir zaman doldurulmaz. özelliğine Current işlem bloğunun içinde değerini temizlemeden birden çok kez erişilebilir.
function Current
{
begin
{
$i = 0
}
process
{
"Iteration: $i"
$i++
"`tBefore MoveNext: $($input.Current)"
$input.MoveNext() | Out-Null
"`tAfter MoveNext: $($input.Current)"
"`tAccess Again: $($input.Current)"
}
}
"one","two" | Current
Iteration: 0
Before MoveNext:
After MoveNext: one
Access Again: one
Iteration: 1
Before MoveNext:
After MoveNext: two
Access Again: two
Örnek 4: $foreach değişkenini kullanma
değişkeninin $input
aksine, $foreach
değişkeni her zaman doğrudan erişildiğinde koleksiyondaki tüm öğeleri temsil eder. Current koleksiyon öğesine erişmek current için özelliğini ve Reset değerini değiştirmek için ve MoveNext yöntemlerini kullanın.
Not
Döngünün foreach
her yinelemesi otomatik olarak MoveNext yöntemini çağırır.
Aşağıdaki döngü yalnızca iki kez yürütülür. İkinci yinelemede, yineleme tamamlanmadan önce koleksiyon üçüncü öğeye taşınır. İkinci yinelemeden sonra, artık yinelenmek için başka değer yoktur ve döngü sonlandırılır.
MoveNext özelliği, koleksiyon ($Num
) aracılığıyla yinelemek için seçilen değişkeni etkilemez.
$i = 0
foreach ($num in ("one","two","three"))
{
"Iteration: $i"
$i++
"`tNum: $num"
"`tCurrent: $($foreach.Current)"
if ($foreach.Current -eq "two")
{
"Before MoveNext (Current): $($foreach.Current)"
$foreach.MoveNext() | Out-Null
"After MoveNext (Current): $($foreach.Current)"
"Num hasn't changed: $num"
}
}
Iteration: 0
Num: one
Current: one
Iteration: 1
Num: two
Current: two
Before MoveNext (Current): two
After MoveNext (Current): three
Num hasn't changed: two
yöntemi kullanıldığında Reset koleksiyondaki current öğe sıfırlanır. Aşağıdaki örnek, yöntemi çağrıldığından ilk iki öğede Reset iki kez döngü yapar. İlk iki döngüden if
sonra deyimi başarısız olur ve döngü her üç öğede de normal olarak yinelenir.
Önemli
Bu, sonsuz döngüye neden olabilir.
$stopLoop = 0
foreach ($num in ("one","two", "three"))
{
("`t" * $stopLoop) + "Current: $($foreach.Current)"
if ($num -eq "two" -and $stopLoop -lt 2)
{
$foreach.Reset()
("`t" * $stopLoop) + "Reset Loop: $stopLoop"
$stopLoop++
}
}
Current: one
Current: two
Reset Loop: 0
Current: one
Current: two
Reset Loop: 1
Current: one
Current: two
Current: three
Örnek 5: $switch değişkenini kullanma
değişkeni, $switch
değişkeniyle tam olarak $foreach
aynı kurallara sahiptir. Aşağıdaki örnekte tüm numaralandırıcı kavramları gösterilmektedir.
Not
MoveNext yönteminden sonra deyimi olmasa break
bile NotEvaluated büyük/küçük harf durumunun hiçbir zaman yürütülmediğini unutmayın.
$values = "Start", "MoveNext", "NotEvaluated", "Reset", "End"
$stopInfinite = $false
switch ($values)
{
"MoveNext" {
"`tMoveNext"
$switch.MoveNext() | Out-Null
"`tAfter MoveNext: $($switch.Current)"
}
# This case is never evaluated.
"NotEvaluated" {
"`tAfterMoveNext: $($switch.Current)"
}
"Reset" {
if (!$stopInfinite)
{
"`tReset"
$switch.Reset()
$stopInfinite = $true
}
}
default {
"Default (Current): $($switch.Current)"
}
}
Default (Current): Start
MoveNext
After MoveNext: NotEvaluated
Reset
Default (Current): Start
MoveNext
After MoveNext: NotEvaluated
Default (Current): End
Ayrıca bkz.
PowerShell