Aracılığıyla paylaş


3. Temel kavramlar

Editoryal notu

Önemli

Windows PowerShell Dil Belirtimi 3.0 Aralık 2012'de yayımlanmıştır ve Windows PowerShell 3.0'ı temel alır. Bu belirtim PowerShell'in geçerli durumunu yansıtmaz. Bu belgeleri geçerli durumu yansıtacak şekilde güncelleştirme planı yoktur. Bu belgeler, geçmişe yönelik başvuru için burada sunulmuştur.

Belirtim belgesi, Şu konumdaki Microsoft İndirme Merkezi'nden bir Microsoft Word belgesi olarak kullanılabilir: https://www.microsoft.com/download/details.aspx?id=36389 Bu Word belgesi burada Microsoft Learn'de sunu için dönüştürülmüştür. Dönüştürme sırasında, Docs platformu için biçimlendirmeye uyum sağlamak için bazı editoryal değişiklikler yapılmıştır. Bazı yazım hataları ve küçük hatalar düzeltildi.

3.1 Sağlayıcılar ve sürücüler

sağlayıcı, komut satırından kolayca erişilmeyecek verilere ve bileşenlere erişim sağlar. Veriler, dosya sistemi sürücüsüne benzeyen tutarlı bir biçimde sunulur.

Sağlayıcı tarafından erişime açılan veriler birsürücüsünde görülür ve verilere tıpkı bir disk sürücüsündeki gibi bir yol üzerinden erişilir. Her sağlayıcı için yerleşik cmdlet'ler, sağlayıcı sürücüsündeki verileri yönetir.

PowerShell, farklı veri deposu türlerine erişmek için aşağıdaki yerleşik sağlayıcı kümesini içerir:

Sağlayıcı Sürücü Adı Açıklama Başv.
Diğer Ad Diğer ad: PowerShell takma adları §3.1.1
Çevre Env: Ortam değişkenleri §3.1.2
Dosya Sistemi A:, B:, C:, ... Disk sürücüleri, dizinler ve dosyalar §3.1.3
Fonksiyon Fonksiyon: PowerShell işlevleri §3.1.4
Değişken Değişken: PowerShell değişkenleri §3.1.5

Windows PowerShell:

Sağlayıcı Sürücü Adı Açıklama
Sertifika Sertifika Dijital imzalar için x509 sertifikaları
Kayıt defteri HKLM: (HKEY_LOCAL_MACHINE), HKCU: (HKEY_CURRENT_USER) Windows kayıt defteri
WSMan WSMan: WS-Management yapılandırma bilgileri

Aşağıdaki cmdlet'ler sağlayıcılar ve sürücülerle ilgilenir:

  • Get-PSProvider: Bir veya daha fazla sağlayıcı hakkında bilgi alır
  • get-PSDrive: Bir veya daha fazla sürücü hakkında bilgi alır

Sağlayıcıyı temsil eden nesnenin türü §4.5.1içinde açıklanmıştır. Bir sürücüyü temsil eden nesnenin türü §4.5.2içinde açıklanmıştır.

3.1.1 Takma Adlar

alternatif isim, bir komut için başka bir addır. Bir komutun birden çok diğer adı olabilir ve özgün adı ve tüm diğer adları birbirinin yerine kullanılabilir. Takma ad yeniden atanabilir. Takma ad bir öğedir (§3.3).

Bir takma ad başka bir takma ad olarak atanabilir; ancak, yeni takma ad orijinal komutun bir takma adı değildir.

Sağlayıcı Alias, yalnızca takma adları temsil eden nesneleri içeren bir düz ad alanıdır. Değişkenlerin alt öğeleri yok.

PowerShell yerleşik bir dizi takma adla gelir.

Aşağıdaki cmdlet'ler diğer adlarla ilgilenir:

  • New-Alias: Bir diğer ad oluşturur
  • Set-Alias: Bir veya daha fazla takma ad oluşturur veya değiştirir
  • Get-Alias: Bir veya daha fazla takma ad hakkında bilgi alır
  • Takma Ad Dışa Aktar: Bir veya daha fazla takma adı bir dosyaya aktarır

New-Aliaskullanılarak bir komut için bir diğer ad oluşturulduğunda, bu komutun parametreleri bu diğer adla eklenemez. Ancak Takma Ad: ad alanında bir değişkene doğrudan atama, parametrelerin eklenmesine izin verir.

Not

Ancak, istenen tüm parametrelerle bu komutun çağrısını içermekten başka bir şey yapmayan bir işlev oluşturmak ve bu işleve bir diğer ad atamak basit bir konudur.

Bir takma adı temsil eden bir nesnenin türü §4.5.4açıklanmıştır.

Diğer ad nesneleri sürücüde depolanır: (§3.1).

3.1.2 Ortam değişkenleri

PowerShell Ortam sağlayıcısı işletim sistemi ortam değişkenlerinin alınmasına, eklenmesine, değiştirilmesine, temizlenmesine ve silinmesine olanak tanır.

Sağlayıcı Ortamı, yalnızca ortam değişkenlerini temsil eden nesneleri içeren düz bir ad alanıdır. Değişkenlerin alt öğeleri yok.

Ortam değişkeninin adı eşittir işaretini (=) içeremez.

Ortam değişkenlerinde yapılan değişiklikler yalnızca geçerli oturumu etkiler.

Ortam değişkeni bir öğedir (§3.3).

Ortam değişkenini temsil eden nesnenin türü §4.5.6içinde açıklanmıştır.

Ortam değişkeni nesneleri Env: (§3.1) sürücüsünde depolanır.

3.1.3 Dosya sistemi

PowerShell FileSystem sağlayıcısı dizinlerin ve dosyaların oluşturulmasına, açılmasına, değiştirilmesine ve silinmesine izin verir.

FileSystem sağlayıcısı, temel alınan dosya sistemini temsil eden nesneler içeren hiyerarşik bir ad alanıdır.

Dosyalar A:, B:, C: gibi adlara sahip sürücülerde depolanır (§3.1). Dizinlere ve dosyalara yol gösterimi (§3.4) kullanılarak erişilir.

Dizin veya dosya bir öğedir (§3.3).

3.1.4 İşlevleri

PowerShell İşlevi sağlayıcısı işlevlerin (§8.10) ve filtrelerin (§8.10.1) alınmasına, eklenmesine, değiştirilmesine, temizlenmesine ve silinmesine olanak tanır.

provider İşlevi, yalnızca işlevi ve filtre nesnelerini içeren düz bir ad alanıdır. İşlevlerin veya filtrelerin alt öğeleri yoktur.

İşlevlerde yapılan değişiklikler yalnızca geçerli oturumu etkiler.

İşlev bir öğedir (§3.3).

İşlevi temsil eden nesnenin türü §4.5.10açıklanmıştır. Filtreyi temsil eden nesnenin türü §4.5.11içinde açıklanmıştır.

İşlev nesneleri sürücüde depolanır İşlev: (§3.1).

3.1.5 Değişkenleri

Değişkenler doğrudan PowerShell dilinde tanımlanabilir ve işlenebilir.

Sağlayıcı Değişkeni, yalnızca değişkenleri temsil eden nesneleri içeren düz bir ad alanıdır. Değişkenlerin alt öğeleri yok.

Aşağıdaki cmdlet'ler değişkenlerle de ilgilenir:

Değişken bir öğe olduğundan (§3.3), öğeyle ilgili cmdlet'lerin çoğu tarafından işlenebilir.

Bir değişkeni temsil eden nesnenin türü §4.5.3içinde açıklanmıştır.

Değişken nesneleri sürücü Değişkeninde depolanır: (§3.1).

3.2 Çalışma konumları

geçerli çalışma konumu, komutların işaret ettiği varsayılan konumdur. Bu, komut çağrıldığında açık bir yol (§3.4) sağlanmazsa kullanılan konumdur. Bu konum , geçerli sürücü'i içerir.

Bir PowerShell konağı birden çok sürücüye sahip olabilir ve bu durumda her sürücünün kendi geçerli konumu vardır.

Bir sürücü adı dizin belirtilmeden verildiğinde, bu sürücünün varsayılan geçerli konumu ima edilir.

Geçerli çalışma konumu bir yığına kaydedilebilir ve ardından yeni bir konuma ayarlanabilir. Daha sonra, kaydedilen konum bu yığından geri yüklenebilir ve geçerli çalışma konumu yapılabilir. İki tür konum yığını vardır: varsayılan çalışma konumu yığınıve kullanıcı tanımlı olan, adı olan sıfır veya daha fazla çalışma konumu yığını. Oturum başladığında, varsayılan çalışma konumu yığını dageçerli çalışma konumu yığınıdır. Ancak, çalışma konumu yığınlarından herhangi biri geçerli çalışma konumu yığını yapılabilir.

Aşağıdaki cmdlet'ler konumlarla ilgilenir:

  • Konum Ayarlama: Geçerli çalışma konumunu oluşturur
  • Get-Location: Belirtilen sürücü veya yığınlar için geçerli çalışma konumunu veya belirtilen yığınların çalışma konumlarını belirler
  • Push-Location: Geçerli konumu belirtilen konum yığınının en üstüne ekler
  • Pop-Location: Geçerli çalışma konumunu belirtilen konum yığınının en üstünden geri yükler

Bir çalışma konumunu ve bir çalışma konumları yığınını temsil eden nesne türleri §4.5.5içinde açıklanmıştır.

3.3 Öğe

öğe bir diğer addır (§3.1.1), bir değişkendir (§3.1.5), bir işlevdir (§3.1.4), bir ortam değişkenidir (§3.1.2) veya dosya sistemindeki bir dosya ya da dizindir (§3.1.3).

Aşağıdaki cmdlet'ler öğelerle ilgilenir:

  • New-Item: Yeni bir öğe oluşturur
  • Öğe Ayarla: Bir veya daha fazla öğenin değerini değiştirir
  • Öğe Al: Belirtilen konumdaki öğeleri alır
  • Get-ChildItem: Belirtilen konumdaki öğeleri ve alt öğeleri alır
  • Öğe Kopyala: Bir veya daha fazla öğeyi bir konumdan diğerine kopyalar
  • Öğeyi-Taşı: Bir veya daha fazla öğeyi bir konumdan diğerine taşır
  • Öğeyi Yeniden Adlandırma: Öğeyi yeniden adlandırır
  • Invoke-Item: Bir veya daha fazla öğede varsayılan eylemi gerçekleştirir
  • Öğeyi Temizle: Bir veya daha fazla öğenin içeriğini siler, ancak öğeleri silmez (bkz.
  • öğeyi kaldır: Belirtilen öğeleri siler

Aşağıdaki cmdlet'ler öğelerin içeriğiyle ilgilenir:

Bir dizini temsil eden nesnenin türü §4.5.17içinde açıklanmıştır. Dosyayı temsil eden nesnenin türü §4.5.18içinde açıklanmıştır.

3.4 Yol adları

PowerShell sağlayıcısı aracılığıyla erişilebilen bir veri deposundaki tüm öğeler yol adlarıyla benzersiz olarak tanımlanabilir. Bir yol adı, bir öğe adının, öğenin bulunduğu kapsayıcı ve alt kapsayıcıların ve bu kapsayıcılara erişilen PowerShell sürücüsünün bir kombinasyonudur.

Yol adları iki türden birine ayrılır: tam nitelikli ve göreceli. tam nitelikli yol adı bir yolu oluşturan tüm öğelerden oluşur. Aşağıdaki söz dizimi, tam nitelikli yol adındaki öğeleri gösterir.

İpucu

Söz dizimi tanımlarındaki ~opt~ gösterimi söz diziminde sözcüksel varlığın isteğe bağlı olduğunu gösterir.

path:
    provider~opt~   drive~opt~   containers~opt~   item

provider:
    module~opt~   provider   ::

module:
    module-name   \

drive:
    drive-name   :

containers:
    container   \
    containers container   \

modül adı üst modülü ifade eder.

sağlayıcı, veri deposuna erişilen PowerShell sağlayıcısını ifade eder.

sürücü, belirli bir PowerShell sağlayıcısı tarafından desteklenen PowerShell sürücüsüne başvurur.

kapsayıcı, diğer kapsayıcıları içerebilen başka kapsayıcılar içerebilir, ve bu şekilde devam ederek son kapsayıcı öğeyiiçerir. Kapsayıcılar, veri deposunda bulundukları hiyerarşik sırada belirtilmelidir.

Yol adı örneği aşağıda verilmiştir:

E:\Accounting\InvoiceSystem\Production\MasterAccount\MasterFile.dat

Yoldaki son öğe başka öğeler içeriyorsa,kapsayıcı öğesidir; aksi takdirde,bir yaprak öğesidir.

Bazı durumlarda, tam yol adı gerekli değildir; göreli yol adı yeterli olacaktır. göreli yol adı, geçerli çalışma konumunu temel alır. PowerShell, bir öğenin geçerli çalışma konumuna göre yerini belirleyerek tanımlanmasını sağlar. Göreli yol adı bazı özel karakterlerin kullanılmasını içerir. Aşağıdaki tabloda bu karakterlerin her biri açıklanmakta ve görece yol adları ile tam nitelikli yol adları örnekleri verilmektedir. Tablodaki örnekler, C:\Windows olarak ayarlanan geçerli çalışma dizinini temel alır:

Simgesi Açıklama göreli yol Tam nitelikli yol
. Geçerli çalışma konumu .\System C:\Windows\System
.. Geçerli çalışma konumunun ebeveyni ..\Program Files C:\Program Files
\ Geçerli çalışma konumunun sürücü kökü \Program Files C:\Program Files
hiç kimse Özel karakter yok System C:\Windows\System

Bir komutta bir yol adı kullanmak için, bu adı tam nitelikli veya göreceli bir yol adı olarak girin.

Aşağıdaki cmdlet'ler yollarla ilgilenir:

  • Convert-Path: PowerShell yolundan PowerShell sağlayıcı yoluna bir yol dönüştürür
  • Birleştirme Yolu: Bir yolu ve alt yolu tek bir yolda birleştirir
  • Çözümle-Yol: Bir yoldaki joker karakterleri çözümler
  • Bölünmüş Yol: Yolun belirtilen bölümünü verir
  • Test Yolu: Bir yolun öğelerinin var olup olmadığını veya bir yolun iyi biçimlendirilmiş olup olmadığını belirler

Bazı cmdlet'ler (Add-Content ve Copy-Item dosya filtrelerini kullanır. dosya filtresi, bir dizi yol arasından seçim ölçütlerini belirtmeye yönelik bir mekanizmadır.

Çözümlenen yolu temsil eden nesne türü §4.5.5içinde açıklanmıştır. Yollar genellikle dize olarak işlenir.

3.5 Kapsamlar

3.5.1 Giriş

Ad bir değişkeni, işlevi, diğer adı, ortam değişkenini veya sürücüyü gösterebilir. Aynı isim, kodun farklı yerlerinde farklı öğeleri gösterebilir. Bir adın ifade ettiği her farklı öğe için, bu ad yalnızca kapsamıolarak adlandırılan betik metninin bölgesinde görünür. Aynı adla belirtilen farklı öğelerin farklı kapsamları vardır veya farklı ad alanlarındadır.

Kapsamlar iç içe geçebilir; bu durumda, dış kapsam ebeveyn kapsam olarak adlandırılır ve herhangi bir iç içe geçmiş kapsamlar o ebeveynin alt kapsamları olarak kabul edilir. Bir adın kapsamı, özel yapılmadığı sürece tanımlandığı kapsam ve tüm alt kapsamlardır. Alt kapsamda tanımlanan bir ad, özgün kapsamında, ebeveyn kapsamlarda aynı adla tanımlanan tüm öğeleri gizler.

Noktalı kaynak gösterimi (§3.5.5) kullanılmadığı sürece, aşağıdakilerin her biri yeni bir kapsam oluşturur:

  • Betik dosyası
  • Betik bloğu
  • İşlev veya filtre

Aşağıdaki örneği göz önünde bulundurun:

# Start of script
$x = 2; $y = 3
Get-Power $x $y

# Function defined in script
function Get-Power([int]$x, [int]$y) {
    if ($y -gt 0) {
        return $x * (Get-Power $x (--$y))
    } else {
        return 1
    }
}
# End of script

$x ve betikte oluşturulan $y değişkenlerin kapsamı, içinde tanımlanan işlev de dahil olmak üzere bu betiğin gövdesidir. İşlev Get-Power aynı adlara sahip iki parametre tanımlar. Her işlevin kendi kapsamı olduğundan, bu değişkenler üst kapsamda tanımlananlardan farklıdır ve bunları üst kapsamdan gizler. İşlev kapsamı betik kapsamının içinde iç içedir.

İşlevin kendisini özyinelemeli olarak çağırdığını unutmayın. Her yaptığında, her biri kendine ait değişkenleri $x ve $yolan başka bir iç içe kapsam oluşturur.

burada iç içe kapsamları ve adların yeniden kullanılmasını gösteren daha karmaşık bir örnek verilmiştir:

# start of script scope
$x = 2              # top-level script-scope $x created
                    # $x is 2
F1                  # create nested scope with call to function F1
                    # $x is 2
F3                  # create nested scope with call to function F3
                    # $x is 2

function F1 {       # start of function scope
                    # $x is 2
    $x = $true      # function-scope $x created
                    # $x is $true

    & {             # create nested scope with script block
                    # $x is $true
        $x = 12.345 # scriptblock-scope $x created
                    # $x is 12.345
    }               # end of scriptblock scope, local $x goes away

                    # $x is $true
    F2              # create nested scope with call to function F2
                    # $x is $true
}                   # end of function scope, local $x goes away

function F2 {       # start of function scope
                    # $x is $true
    $x = "red"      # function-scope $x created
                    # $x is "red"
}                   # end of function scope, local $x goes away

function F3 {       # start of function scope
                    # $x is 2
    if ($x -gt 0) {
                    # $x is 2
        $x = "green"
                    # $x is "green"
    }               # end of block, but not end of any scope
                    # $x is still "green"
}                   # end of function scope, local $x goes away
# end of script scope

3.5.2 Kapsam adları ve numaraları

PowerShell aşağıdaki kapsamları destekler:

  • Genel: Bu en üst düzey kapsamdır. Tüm otomatik ve tercih değişkenleri bu kapsamda tanımlanır. Genel kapsam, diğer kapsamların üst kapsamıdır ve bunların hepsi genel kapsamın alt kapsamlarıdır.

  • Yerel: Bu, bir betik, betik bloğu veya işlev içindeki herhangi bir yürütme noktasındaki geçerli kapsamdır. Her kapsam yerel kapsam olabilir.

  • Betik: Yürütülen her betik dosyası için bu kapsam mevcuttur. Betik kapsamı, bu betikten oluşturulan tüm kapsamların ana kapsamıdır. Betik bloğunun kendi betik kapsamı yoktur; aksine, betik kapsamı en yakın üst betik dosyasının kapsamıdır. Modül kapsamı diye bir şey olmasa da, betik kapsamı aynı amaca hizmet eder.

İsimler özel olarak tanımlanabilir, bu durumda, alt kapsamlar da dahil olmak üzere ebeveyn kapsamlarının dışında görünmezler. Özel kavramı, ayrı bir kapsam değil, yerel kapsam için başka bir addır; ek olarak, yazılabilir bir konum olarak kullanılırsa ismi gizler.

Kapsamlar, birbirine göreli konumlarını gösteren bir sayı ile tanımlanabilir. Kapsam 0 yerel kapsamı, kapsam 1 ise 1 nesil bir üst kapsamı, kapsam 2 ise 2 nesil bir üst kapsamı vb. belirtir. (Kapsam numaraları değişkenleri işleyen cmdlet'ler tarafından kullanılır.)

3.5.3 Değişken adı kapsamı

Aşağıdaki üretimde gösterildiği gibi, altı farklı kapsamdan herhangi biriyle bir değişken adı belirtilebilir:

variable-scope:
    Global:
    Local:
    Private:
    Script:
    Using:
    Workflow:
    variable-namespace

Kapsam isteğe bağlıdır. Aşağıdaki tabloda her birinin olası tüm bağlamlardaki anlamı gösterilmektedir. Ayrıca kapsam açıkça belirtilmediğinde kapsamı da gösterir:

Kapsam Değiştirici Betik Dosyası İçinde Betik Bloğu İçinde İşlev İçinde
Küresel Genel kapsam Genel kapsam Genel kapsam
Senaryo En yakın üst komut dosyasının kapsamı veya eğer en yakın üst komut dosyası yoksa, Genel En yakın üst komut dosyasının kapsamı veya eğer en yakın üst komut dosyası yoksa, Genel En yakın üst komut dosyasının kapsamı veya eğer en yakın üst komut dosyası yoksa, Genel
Özel Genel/Betik/Yerel kapsam Yerel kapsam Yerel kapsam
Yerel Genel/Betik/Yerel kapsam Yerel kapsam Yerel kapsam
Kullanma Uygulama tanımlı Uygulama tanımlı Uygulama tanımlı
İş Akışı Uygulama tanımlı Uygulama tanımlı Uygulama tanımlı
Hiç kimse Genel/Betik/Yerel kapsam Yerel kapsam Yerel kapsam

Değişken kapsam bilgileri, içinde listelenen cmdlet ailesi kullanılırken de belirtilebilir (§3.1.5). Özellikle, daha fazla bilgi için Scopeparametresine ve Option Private ve Option AllScope parametrelerine bakın.

Kapsam Using: değiştirici, , Start-Jobgibi Invoke-Commandcmdlet'ler aracılığıyla veya satır içi bir deyim içinde betikleri çalıştırırken başka bir kapsamda tanımlanan değişkenlere erişmek için kullanılır. Mesela:

$a = 42
Invoke-Command --ComputerName RemoteServer { $Using:a } # returns 42
workflow foo
{
    $b = "Hello"
    inlinescript { $Using:b }
}
foo # returns "Hello"

Kapsam iş akışı, iş akışında tanımlanan bir değişkene erişmek için paralel ifade veya sıralı ifade kullanılır.

3.5.4 İşlev adı kapsamı

İşlev adı dört farklı kapsamdan birine de sahip olabilir ve bu adın görünürlüğü değişkenlerle aynıdır (§3.5.3).

3.5.5 Nokta kaynağı notasyonu

Bir betik dosyası, betik bloğu veya işlev başka bir betik dosyası, betik bloğu veya işlev içinden yürütülürse, yürütülen betik dosyası yeni bir iç içe kapsam oluşturur. Mesela

Script1.ps1
& "Script1.ps1"
& { ... }
FunctionA

Ancak, noktalı kaynak gösterimi kullanıldığında, komut yürütülmeden önce yeni bir kapsam oluşturulmaz, bu nedenle kendi yerel kapsamına yaptığı eklemeler/değişiklikler geçerli kapsamda yapılır. Mesela

. Script2.ps1
. "Script2.ps1"
. { ... }
. FunctionA

3.5.6 Modülleri

Tıpkı bir üst düzey betik dosyasının hiyerarşik iç içe kapsam ağacının kökünde olması gibi, her modül de o şekildedir (§3.14). Ancak, varsayılan olarak, yalnızca bir modül tarafından dışa aktarılan adlar, içeri aktarma bağlamında adıyla erişilebilir. import-module cmdlet'in Genel parametresi, dışarı aktarılan adların daha fazla görünürlüğe sahip olmasını sağlar.

3.6 Yalnızca Okunabilir ve Sabit Özellikler

Değişkenler ve diğer adlar, bir dizi özellik içeren nesneler tarafından açıklanır. Bu özellikler, iki cmdlet ailesi (§3.1.5, §3.1.1) tarafından ayarlanır ve değiştirilir. Bu tür özelliklerden biri, ReadOnly veya Sabit olarak ayarlanabilen Seçenekler'dir (Option parametresi kullanılarak). ReadOnly olarak işaretlenmiş bir değişken veya diğer ad kaldırılabilir ve Force parametresi belirtilirse özellikleri değiştirilebilir. Ancak, Sabit olarak işaretlenmiş bir değişken veya diğer ad kaldırılamaz veya özellikleri değiştirilemez.

3.7 Yöntem aşırı yüklemeleri ve çağrı çözümlemesi

3.7.1 Giriş

§1'de belirtildiği gibi, yürütme ortamı tarafından sağlanan bir dış yordam (ve PowerShell dışında bir dilde yazılmış)yöntemi olarak adlandırılır.

Bir yöntemin adı ve parametrelerinin sayısı ve türleri topluca bu yöntemin imzasıolarak adlandırılır. (İmzanın yöntemin dönüş türünü içermediğini unutmayın.) Yürütme ortamı, bir türün her birinin farklı bir imzaya sahip olması koşuluyla aynı ada sahip birden çok yönteme sahip olmasına izin verebilir. Bazı yöntemlerin birden çok sürümü tanımlandığında, bu yönteminaşırı yüklenmiş olduğu söylenir. Örneğin, Matematik (§4.3.8) türü, belirtilen sayının mutlak değerini hesaplayan ve belirtilen sayının bir dizi türden birine sahip olabileceği Absadlı bir yöntem kümesi içerir. Bu kümedeki yöntemler aşağıdaki imzalara sahiptir:

Abs(decimal)
Abs(float)
Abs(double)
Abs(int)
Abs(long)
Abs(SByte)
Abs(Int16)

Bu durumda, tüm yöntemler aynı sayıda bağımsız değişkene sahiptir; imzaları yalnızca bağımsız değişken türüne göre farklılık gösterir.

Başka bir örnek, her dizinin başlangıcından (varsayılan olarak) veya belirli bir öğeden başlayarak bir diziden diğerine öğe aralığını kopyalayan Copy adlı bir yöntem kümesi içeren Dizi (§4.3.2) türünü içerir. Bu kümedeki yöntemler aşağıdaki imzalara sahiptir:

Copy(Array, Array, int)
Copy(Array, Array, long)
Copy(Array, int, Array, int, int)
Copy(Array, long, Array, long, long)

Bu durumda, imzalar bağımsız değişken türüne ve bazı durumlarda bağımsız değişken numarasına göre farklılık gösterir.

Aşırı yüklenmiş yöntemlere yapılan çoğu çağrıda, geçirilen bağımsız değişkenlerin sayısı ve türü aşırı yüklemelerden biriyle tam olarak eşleşmektedir ve seçilen yöntem açıktır. Ancak, böyle bir durum söz konusu değilse, çağrılabilecek fazla yüklenmiş sürüm (varsa) için bir çözüm yolu bulunmalıdır. Mesela

[Math]::Abs([byte]10) # no overload takes type byte
[array]::Copy($source, 3, $dest, 5L, 4) # both int and long indexes

Diğer örnekler, birçok aşırı yüklenmiş yönteme sahip olan "string" (System.String) türünü içerir.

PowerShell,aşırı yüklenmiş bir imzayla tam olarak eşleşmeyen yöntem çağrılarını çözümlemeye yönelik kurallara sahip olsa da, PowerShell kendisi aşırı yüklenmiş yöntemleri tanımlamak için bir yol sağlamaz.

Not

Düzenleyicinin Notu: PowerShell 5.0, betik tabanlı sınıfları tanımlama özelliğini ekledi. Bu sınıflar aşırı yüklenmiş yöntemler içerebilir.

3.7.2 Yöntem aşırı yükleme çözümü

Bir bağımsız değişken ifadeleri listesine sahip bir yöntem çağrısı (§7.1.3) ve bir aday yöntem kümesi (yani, potansiyel çağrılabilir yöntemler) verildiğinde, en iyi yöntemi seçme mekanizması aşırı yükleme çözümlemesi olarak adlandırılır.

Geçerli aday yöntemleri kümesi (§3.7.3) göz önüne alındığında, bu kümedeki en iyi yöntem seçilir. Küme yalnızca bir yöntem içeriyorsa, bu yöntem en iyi yöntemdir. Aksi takdirde, en iyi yöntem, §3.7.4'de gösterilen kuralları kullanarak verilen bağımsız değişken listesiyle ilgili olarak diğer tüm yöntemlerden daha iyi olan tek yöntemdir. Diğer tüm yöntemlerden daha iyi bir yöntem yoksa, yöntem çağırma belirsizdir ve bir hata bildirilir.

En iyi yöntem, çağrıldığı bağlamda erişilebilir olmalıdır. Örneğin, bir PowerShell betiği özel veya korumalı bir yöntemi çağıramaz.

Statik yönteme yapılan çağrı için en iyi yöntem statik bir yöntem olmalı ve bir örnek yöntemine yapılan çağrı için en iyi yöntem bir örnek yöntemi olmalıdır.

3.7.3 Uygulanabilir yöntem

Aşağıdakilerden biri doğru olduğunda A bağımsız değişken listesiyle ilgili olarak bir yöntemin geçerli olduğu söylenir:

  • A'daki bağımsız değişkenlerin sayısı, yöntemin kabul eden parametre sayısıyla aynıdır.
  • yöntemi M gerekli parametrelerine ve N isteğe bağlı parametrelerine sahiptir ve A'daki bağımsız değişkenlerin sayısı M'den büyük veya M'ye eşit, ancak N'den küçüktür.
  • yöntemi değişken sayıda bağımsız değişken kabul eder ve A'daki bağımsız değişken sayısı yöntemin kabul eden parametre sayısından fazladır.

Uygun sayıda bağımsız değişkene sahip olmanın yanı sıra, A'daki her bağımsız değişkenin bağımsız değişkenin parametre geçirme moduyla eşleşmesi ve bağımsız değişken türünün parametre türüyle eşleşmesi veya bağımsız değişken türünden parametre türüne dönüştürme olması gerekir.

tr-TR: Bağımsız değişken türü ref (§4.3.6) ise, karşılık gelen parametre de ref olmalıdır ve dönüştürme amacıyla bağımsız değişkenin türü, ref bağımsız değişkenindeki Value özelliğinin türüdür.

Bağımsız değişken türü refise, ilgili parametre outyerine ref olabilir.

Metot değişken sayıda bağımsız değişken kabul ederse, metot normal form veya genişletilmiş formuygulanabilir. A'daki bağımsız değişkenlerin sayısı yöntemin kabul eden parametre sayısıyla aynıysa ve son parametre bir diziyse, form iki olası dönüştürmeden birinin sırasına bağlıdır:

  • A'daki son bağımsız değişkenin türünden son parametrenin dizi türüne dönüştürülmesinin derecesi.
  • A'daki son bağımsız değişkenin türünden, son parametrenin dizi türündeki öğe türüne dönüşümün derecesi.

İlk dönüştürme (dizi türüne) ikinci dönüştürmeden (dizinin öğe türüne) daha iyiyse, yöntem normal biçimde geçerlidir, aksi takdirde genişletilmiş biçimde uygulanabilir.

Parametrelerden daha fazla bağımsız değişken varsa, yöntem yalnızca genişletilmiş biçimde uygulanabilir. Genişletilmiş biçimde uygulanabilmesi için, son parametrenin dizi türü olmalıdır. Özgün yöntemin son parametresi, A'daki eşleşmeyen her bağımsız değişkeni karşılayacak yeterli parametrelerle değiştirildiğinde yerine eşdeğer bir yöntem kullanılır. Her ek parametre türü, özgün yöntemdeki son parametrenin dizi türünün öğe türüdür. Geçerli bir yöntem için yukarıdaki kurallar bu yeni yönteme ve bağımsız değişken listesi A'ya uygulanır.

3.7.4 Daha iyi yöntem

bir dizi bağımsız değişken ifadesinden oluşan bir bağımsız değişken listesi A ve ve parametre türlerine sahip iki uygulama yöntemi ve verildiğinde, için dönüştürmelerinin toplu sıralaması için olandan daha iyiyse , 'dan daha iyi bir yöntem olarak tanımlanır.

Dönüşümlerin kümülatif derecelendirmesi aşağıdaki gibi hesaplanır. Her bir dönüştürme, parametre sayısına bağlı olarak farklı bir değere sahiptir; E~1~ N değerindedir, E~2~ N-1 değerindedir, ve en sonunda E~N~ 1 değerindedir. E~X~'den P~X~'ye dönüştürme, E~X~'den Q~X~'a dönüştürmeden daha iyiyse, M~P~ N-X+1 birikir; aksi takdirde, M~Q~ N-X+1 biriktirir. M~P~ ve M~Q~ aynı değere sahipse, sırayla aşağıdaki bağlama kesme kuralları kullanılır:

  • Parametre türleri arasındaki dönüştürmelerin kümülatif sıralaması (bağımsız değişken türleri yoksayılarak) önceki derecelendirmeye benzer şekilde hesaplanır, bu nedenle P~1~Q~1~, P~2~ ile Q~2~, ...ve P~N~karşı Q~N~ karşılaştırılır. Bağımsız değişken $nullise veya parametre türleri sayısal türler değilse karşılaştırma atlanır. Argüman dönüştürmesi E~X~'nin P~X~'e dönüştürüldüğünde bilgi kaybına neden olduğu, ancak Q~X~'ye dönüştürüldüğünde bilgi kaybetmediği ya da tam tersi durumlarda da karşılaştırma atlanır. Parametre dönüştürme türleri karşılaştırılırsa, P~X~'den Q~X~'a dönüştürme, Q~X~'dan P~X~'a dönüştürmeden daha iyiyse, M~P~ N-X+1 birikir; aksi takdirde, M~Q~ N-X+1 biriktirir. Bu bağlama kesme kuralı, dönüştürmelerde hiçbir bilgi kaybı yaşanmazsa en yöntem (en küçük veri türlerine sahip parametrelere sahip yöntem) tercih etmek veya dönüştürmelerin bilgi kaybına neden olması durumunda en genel yöntem (en büyük veri türlerine sahip parametrelere sahip yöntem) tercih etmek için tasarlanmıştır.
  • Her iki yöntem de genişletilmiş formlarını kullanıyorsa, daha fazla parametre içeren yöntem daha iyi bir yöntemdir.
  • Yöntemlerden biri genişletilmiş formu, diğeri normal formu kullanıyorsa, normal form kullanan yöntem daha iyi bir yöntemdir.

3.7.5 Daha iyi dönüştürme

Aşağıdaki bu şekilde işaretlenmiş metin Windows PowerShell'e özgüdür.

Dönüştürmeler aşağıdaki şekilde en düşükten en yükseğe sıralanır:

  • T~1~[]'dan T~2~[]'e, T~1~ ile T~2~ arasında atanabilir bir dönüşümün olmadığı durumlarda
  • T'yi string'e dönüştürme, burada T herhangi bir tür olabilir
  • T~1~ ile T~2~ arasında, özel dönüştürme T~1~ veya T~2~ tarafından uygulama tanımlı bir şekilde belirlenir.
  • T~1~'dan T~2~'e, T~1~'nin IConvertible'ı uyguladığı durumlarda
  • T~1~ veya T~2~'ün yöntemi T~1~ uyguladığı yerde T~2~'dan T~2~ op_Implicit(T1)'e kadar
  • T~1~ veya T~2~'ün yöntemi T~1~ uyguladığı yerde T~2~'dan T~2~ op_Explicit(T1)'e kadar
  • T~1~'dan T~2~'e kadar, T~2~'nin T~1~ türünde tek bir bağımsız değişken alan bir oluşturucu uyguladığı yerlerde
  • Aşağıdaki dönüştürmelerden biri:
    • T'in T veya T Parse(string) statik yöntemini uyguladığı durumlarda, dizeyi T Parse(string, IFormatProvider)'ye dönüştürme
    • T~1~ ile T~2~ arasında, T~2~ herhangi bir sabit listesi ve T~1~ ise ya dize ya da dizeye dönüştürülebilen nesne koleksiyonu olduğunda
  • T PSObject'e, T herhangi bir tür olduğunda
  • Aşağıdaki dönüştürmelerden herhangi biri: Language
    • T, T'nin herhangi bir sayısal tür olduğu durumlarda bool'e dönüştürülür.
    • dizesini TT, regex, wmisearcher, wmi, wmiclass, adsiveya adsisearchertype
    • T'dan bool'e
    • T~1~'den Nullable[T~2~]'a, T~1~'den T~2~'ye bir dönüşümün mevcut olduğu durumda
    • T iptal edilecek
    • T~1~[] ile T~2~[] arasında atanabilir bir dönüştürme mevcutsa, T~1~'dan T~2~'e
    • T~1~ ile T~2~[] arasında, T~1~ bir koleksiyon olduğu yer
    • IDictionary'dan Hashtable'e
    • T'dan ref'e
    • T'dan xml'e
    • scriptblock'dan delegate'e
    • T~1~'dan T~2~'e kadar, burada T~1~ bir tamsayı türü ve T~2~ bir enum türüdür.
  • $null'dan T'e kadar, T herhangi bir değer türü olduğunda
  • $null'dan T'e, burada T bir referans tipidir.
  • Aşağıdaki dönüştürmelerden herhangi biri:
    • bayt T'ye, T'in SByte olduğu yerde

    • UInt16'den T'e, burada TSByte, byteveya Int16'tir

    • Int16'nin T veya T olduğu durumlarda SByte'dan byte'e

    • UInt32'dan T'e, T'nin SByte, byte, Int16, UInt16veya int olduğu durumlarda

    • int ile T'e kadar, TSByte, byte, Int16veya UInt16 olduğunda

    • UInt64'dan T'e T'nin SByte, byte, Int16, UInt16, int, UInt32veya long olduğu durumlarda

    • long'dan T'e kadar, TSByte, byte, Int16, UInt16, intveya UInt32 olduğunda.

    • float ile T arasında, eğer T herhangi bir tamsayı türü veya decimal ise

    • double ile T arasında, eğer T herhangi bir tamsayı türü veya decimal ise

    • decimal ile T arası, T herhangi bir tamsayı türü olduğunda

  • Aşağıdaki dönüştürmelerden herhangi biri:
    • SByte ile T'e kadar, Tbyte, uint6, UInt32veya UInt64 olduğunda
    • Int16'den T'e, burada TUInt16, UInt32veya UInt64'tir
    • int'nin T veya T olduğu durumlarda UInt32'dan UInt64'e
    • long'dan UInt64'e
    • decimal'nin T veya T olduğu durumlarda float'dan double'e
  • Aşağıdaki dönüştürmelerden herhangi biri:
    • T'dan string'e, burada T herhangi bir sayısal türdür
    • T'dan char'e, burada T herhangi bir sayısal türdür
    • string'dan T'e, burada T herhangi bir sayısal türdür
  • Aşağıdaki dönüştürmelerden herhangi biri, bu dönüştürmeler atanabilir dönüştürmeler olarak kabul edilir:
    • byte'den T'e kadar, TInt16, UInt16, int, UInt32, long, UInt64, single, doubleveya decimal olduğunda
    • SByte'den T'e kadar, TInt16, UInt16, int, UInt32, long, UInt64, single, doubleveya decimal olduğunda
    • UInt16'dan T'e kadar, Tint, UInt32, longveya UInt64, single, doubleveya decimal olduğunda
    • Int16'dan T'e kadar, Tint, UInt32, longveya UInt64, single, doubleveya decimal olduğunda
    • UInt32 ile T arasında, burada Tlongveya UInt64, single, double, veya decimal'dir.
    • int'dan T'e, T'nin long, UInt64, single, doubleveya decimal olduğu durumlarda
    • single'dan double'e
  • T~1~'dan T~2~'e, T~2~'nin T~1~'ün temel sınıfı veya arabirimi olduğu durumlarda. Bu dönüştürme, atanabilir bir dönüştürme olarak kabul edilir.
  • string'dan char[]'e
  • T'dan T'e -- Bu dönüştürme atanabilir bir dönüştürme olarak kabul edilir.

Formun her T~1~'dan T~2~[]'e dönüştürmesi için, T~1~ bir dizi değilse ve başka bir dönüştürme uygulanmıyorsa, T~1~'den T~2~'e bir dönüştürme varsa, bu dönüştürmenin sırası T~1~'ten T~2~'ya olan dönüştürmeden daha kötü, ancak T~1~'den T~2~'e olan herhangi bir dönüştürmeden daha iyi derecelendirilmiştir.

3.8 Ad arama

Farklı türlerde komutların tümü aynı ada sahip olabilir. Böyle bir durumda ad aramasının gerçekleştirildiği sıra takma ad, işlev, cmdlet ve dış komut sırasıyla.

3.9 Tür adı arama

§7.1.10 şu deyimi içerir: "tür değişmez değeri, bir uygulamada belirtilmeyen temel tür tarafından temsil edilir. Sonuç olarak, tür adı, temel alınan türün eş anlamlısı olur." Türlerin örneği int, double, long[]ve Hashtable.

Tür adları aşağıdaki gibi eşleştirilir: Belirli bir tür adını int, long, double gibiyerleşik tür hızlandırıcıları listesiyle karşılaştırın. Eşleşme bulunursa, tür bu olur. Aksi takdirde, tür adının tam olarak nitelenmiş olduğunu varsayın ve ana bilgisayar sisteminde böyle bir türün mevcut olup olmadığını kontrol edin. Eşleşme bulunursa, tür bu olur. Aksi takdirde, ad alanı ön ekini System.ekleyin. Eşleşme bulunursa, tür bu olur. Aksi takdirde, tür adı hatalıdır. Bu algoritma, genel türler için her tür bağımsız değişken için uygulanır. Ancak, bir işlev veya operatörün aldığı argüman veya işlenen sayısını (ariti) belirtmeye gerek yoktur.

3.10 Otomatik bellek yönetimi

Çeşitli işleçler ve cmdlet'ler, dizeler ve diziler gibi başvuru türü nesneleri için belleğin ayrılmasıyla sonuçlanır. Bu belleği ayırma ve boşaltma, PowerShell çalışma zamanı sistemi tarafından yönetilir. Diğer bir ifadeyle PowerShell,otomatik çöp toplama sağlar.

3.11 Yürütme sırası

Bir yan etkisi, bir komutun yürütme ortamının durumundaki bir değişikliktir. Bir değişkenin değerinde yapılan değişiklik (atama işleçleri veya ön ve son artım ve azaltma işleçleri aracılığıyla), bir dosyanın içeriğinde yapılan değişiklik gibi bir yan etkidir.

Aksi belirtilmediği sürece deyimler sözcük düzeninde yürütülür.

Bazı işleçler için belirtilmedikçe, ifadedeki terimlerin değerlendirme sırası ve yan etkilerin gerçekleşme sırası belirtilmez.

Komut çağıran bir ifade, komutu belirten ifadeyi ve değerleri bu komuta geçirilecek bağımsız değişkenleri belirten sıfır veya daha fazla ifadeyi içerir. Bu ifadelerin birbirine göre değerlendirilme sırası belirtilmemiştir.

3.12 Hata işleme

Bir komut başarısız olduğunda, bubir hata olarak kabul edilir ve bu hatayla ilgili bilgiler türü belirtilmemişbir hata kaydına kaydedilir (§4.5.15); ancak, bu tür alt simgeyi destekler.

Hata iki kategoriden birine denk geliyor. İşlemi sonlandırıyor (sonlandırma hatası) veya sonlandırmıyor (sonlandırılmayan bir hata). Sonlandırıcı bir hata olduğunda, hata kaydedilir ve işlem durdurulur. Sonlandırmayan bir hatada, hata kaydedilir ve işlem devam eder.

Sonlandırılmayan hatalar hata akışına kaydedilir. Bu bilgiler bir dosyaya yeniden yönlendirilse de, hata nesneleri önce dizelere dönüştürülür ve bu nesnelerdeki önemli bilgiler yakalanmaz ve mümkün değilse tanılamayı zorlaştırır. Bunun yerine, hata metni yeniden yönlendirilebilir (§7.12) ve hata nesnesi $Error1 = command 2>&1'de olduğu gibi bir değişkene kaydedilebilir.

otomatik değişken $Error, son hataları temsil eden bir hata kayıtları koleksiyonu içerir ve en son hata $Error[0]içindedir. Bu koleksiyon, yeni kayıtlar eklendikçe eski kayıtlar silinecek şekilde bir arabellekte tutulur. otomatik değişken $MaximumErrorCount depolanabilecek kayıt sayısını denetler.

$Error, tek bir koleksiyonda bir araya gelen tüm komutlardaki hataların tümünü içerir. Belirli bir komuttan hataları toplamak için ErrorVariableortak parametresini kullanın. Bu parametre, koleksiyonu tutmak için kullanıcı tanımlı bir değişkenin belirtilmesine olanak tanır.

3.13 Boru Hatları

işlem hattı, her biri kanal işleci | (U+007C) ile ayrılmış bir veya daha fazla komut dizisidir. Her komut, öncülden girdi alır ve çıktıyı ardılına yazar. Boru hattının sonundaki çıkış atılmadığı veya bir dosyaya yönlendirilmediği sürece, konak ortamına gönderilir ve bu ortam, çıktıyı standart çıktıya yazmayı seçebilir. İşlem hattındaki komutlar, argümanlar aracılığıyla da giriş alabilir. Örneğin, belirli bir dosya sistemi dizininde dosya adlarının listesini oluşturan, bir dizi metin kaydını sıralayan ve bir metin kaydı üzerinde işlem gerçekleştiren Get-ChildItem, Sort-Objectve Process-Filekomutlarının kullanımını göz önünde bulundurun:

Get-ChildItem
Get-ChildItem E:*.txt | Sort-Object -CaseSensitive | Process-File >results.txt

İlk durumda, Get-ChildItem geçerli/varsayılan dizinde dosyaların adlarından oluşan bir koleksiyon oluşturur. Bu koleksiyon, varsayılan olarak her öğenin değerini doğrudan standart çıkışa yazan ana ortama gönderilir.

İkinci durumda, Get-ChildItemE:*.txtbağımsız değişkenini kullanarak belirtilen dizindeki dosyaların adlarından oluşan bir koleksiyon oluşturur. Bu koleksiyon, varsayılan olarak Sort-Object bağımsız değişkeni sayesinde büyük/küçük harf duyarlılığı gözetilerek artan sırada sıralayan komutuna yazılır. Sonuçta elde edilen koleksiyon, bazı (bilinmeyen) işlemler gerçekleştiren Process-Filekomutuna yazılır. Ardından bu komutun çıktısı results.txtdosyasına yönlendirilir.

Komut tek bir nesne yazarsa, ardılı bu nesneyi alır ve ardılına kendi nesnelerini yazdıktan sonra sonlanır. Ancak, bir komut birden çok nesne yazarsa, ardıl komutuna birer birer teslim edilir ve bu komut nesne başına bir kez yürütülür. Bu davranış, streamingolarak adlandırılır. Akış işlemede nesneler, koleksiyonun tamamı üretildiğinde değil, kullanılabilir duruma gelir gelmez işlem hattı boyunca yazılır.

Bir koleksiyonu işlerken, ilk öğeden önce ve son öğeden sonra özel işlem yapabilecek şekilde bir komut yazılabilir.

3.14 Modüller

modülü, PowerShell kodunun bölümlendirilmesine, düzenlenmesine ve soyutlanmasına olanak tanıyan kendi içinde yeniden kullanılabilir bir birimdir. Modül, tek bir birim olarak kullanılabilen komutları (cmdlet'ler ve işlevler gibi) ve öğeleri (değişkenler ve diğer adlar gibi) içerebilir.

Modül oluşturulduktan sonra, içindeki komutların ve öğelerin kullanılabilmesi için önce bir oturuma aktarılması gerekir. İçeri aktarıldıktan sonra komutlar ve öğeler yerel olarak tanımlanmış gibi davranır. Modül, Import-Module komutuyla açıkça içeri aktarılır. Bir modül, uygulama tanımlı bir şekilde belirlendiği şekilde otomatik olarak içeri aktarılabilir.

Modülü temsil eden nesnenin türü §4.5.12açıklanmıştır.

Modüller §11'de ayrıntılı olarak ele alınacaktır.

3.15 Joker karakter ifadeleri

Joker karakter ifadesi aşağıdaki öğelerden sıfır veya daha fazlasını içerebilir:

Öğe Açıklama
*, ?veya [ dışındaki karakter Bu karakterle eşleşir
* Sıfır veya daha fazla karakterle eşleşir. * karakterini eşleştirmek için [*] kullanın.
? Herhangi bir karakterle eşleşir. Bir çifti eşleştirmek için mi? karakter, [?] kullanın.
[ayarla]

kümesindeki herhangi bir karakterle eşleşir ve bu karakter boş olamaz.

küme ] ile başlıyorsa, sağ köşeli ayraç kümesinin parçası olarak kabul edilir ve bir sonraki sağ köşeli ayraç kümeyi sonlandırır; aksi takdirde, ilk sağ köşeli ayraç kümeyi sonlandırır.

kume ile başlıyor veya bitiyorsa, bu kısa çizgi-eksi kümenin bir parçası olarak kabul edilir; aksi takdirde, ardışık Unicode kod noktaları aralığını, kısa çizgi-eksinin her iki tarafındaki karakterlerin dahil aralık sınırları olduğunu gösterir. Örneğin, A-Z 26 büyük İngilizce harfi, 0-9 ise 10 ondalık basamağı gösterir.

Not

Daha fazla bilgi, "Açık Grup Temel Belirtimleri: Desen Eşleştirme", IEEE Std 1003.1, 2004 Baskısıiçinde bulunabilir. Ancak, PowerShell'de kaçış karakteri kesme işareti olup, ters eğik çizgi değildir.

3.16 Normal ifadeler

Normal ifade aşağıdaki öğelerden sıfır veya daha fazlasını içerebilir:

Öğe Açıklama
., [, ^, *, $veya \ dışındaki karakter Bu karakterle eşleşir
. Herhangi bir karakterle eşleşir. Bir şeyi eşleştirmek için. karakteri kullan, \..
[ayarla]
[^ayarla]

[kümesi] formu, [ kümesi] içindeki herhangi bir karakterle eşleşir. [^set] formu, kümesindeki hiçbir karakterle eşleşemez. kümesi boş olamaz.

Eğer küme ] veya ^] ile başlıyorsa, o sağ köşeli ayraç kümenin parçası olarak kabul edilir ve sonraki sağ köşeli ayraç kümeyi sonlandırır; aksi takdirde, ilk sağ köşeli ayraç kümeyi sonlandırır.

küme - veya ^- ile başlıyorsa veya - ile bitiyorsa, bu kısa çizgi-eksikümesinin bir parçası olarak kabul edilir; aksi takdirde, ardışık Unicode kod noktaları aralığını, kısa çizgi-eksinin her iki tarafındaki karakterlerin kapsayıcı aralık sınırlayıcıları olduğunu gösterir. Örneğin, A-Z 26 büyük İngilizce harfi, 0-9 ise 10 ondalık basamağı gösterir.

* Önceki öğenin sıfır veya daha fazla kez oluşumunu eşleştirir.
+ Önceki öğenin diğer oluşumlarından biriyle eşleşir.
? Önceki öğenin sıfır veya bir kez oluşumunu eşleştirir.
^ String'in başında eşleşir. ^ karakteriyle eşleştirmek için \^ kullanın.
$ Dizenin sonunda eşleşir. $ karakterini eşleştirmek için $ kullanın.
\ c vekarakterleri kaçar, bu yüzden normal ifade öğesi olarak tanınmaz.

Windows PowerShell: Microsoft .NET Framework normal ifadelerinde kullanılabilen karakter sınıfları aşağıdaki gibi desteklenir:

Öğe Açıklama
\p{name} adtarafından belirtilen adlandırılmış karakter sınıfındaki herhangi bir karakterle eşleşir. Desteklenen adlar, Unicode grupları ve Ll, Nd, Z, IsGreek ve IsBoxDrawing gibi blok aralıklarıdır.
\P{name} adında belirtilen gruplara ve blok aralıklarına dahil olmayan metinlerle eşleşir.
\w Herhangi bir sözcük karakteriyle eşleşir. [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]Unicode karakter kategorilerine eşdeğerdir. ECMAScript ile uyumlu davranış ECMAScript seçeneğiyle belirtilirse, \w [a-zA-Z_0-9]eşdeğerdir.
\W Sözcük olmayan herhangi bir karakterle eşleşir. [\^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]Unicode kategorilerine eşdeğerdir.
\s Herhangi bir boşluk karakteriyle eşleşir. [\f\n\r\t\v\x85\p{Z}]Unicode karakter kategorilerine eşdeğerdir.
\S Boşluk olmayan herhangi bir karakterle eşleşir. [\^\f\n\r\t\v\x85\p{Z}]Unicode karakter kategorilerine eşdeğerdir.
\d Herhangi bir ondalık basamakla eşleşir. Unicode davranışı için \p{Nd} ve Unicode olmayan davranış için [0-9] ile eşdeğerdir.
\D Basamak olmayan herhangi bir değerle eşleşir. Unicode davranışı için \P{Nd} ve Unicode olmayan davranış için [\^0-9] ile eşdeğerdir.

Microsoft .NET Framework normal ifadelerinde kullanılabilen niceleyiciler aşağıdaki gibi desteklenir:

Öğe Açıklama
* Sıfır veya daha fazla eşleşme belirtir; örneğin, \w* veya (abc)*. eşdeğeri {0,}.
+ Önceki karakterlerin yinelenen örnekleriyle eşleşir.
? Sıfır veya bir eşleşme belirtir; örneğin, \w? veya (abc)?. {0,1}eşdeğerdir.
{n} Tam olarak n eşleşmeleri belirler; örneğin, (pizza){2}.
{n,} En az n eşleşme belirtir; örneğin, (abc){2,}.
{n,m} En az n, ancak en fazla meşleşme belirtir.