2. Sözcük Yapısı

2.1 Dil Bilgisi

Bu belirtim, iki dil bilgisi kullanarak PowerShell dilinin söz dizimlerini gösterir. Sözcük dil bilgisi (Satır sonlandırıcılar, açıklamalar, boşluk ve belirteçler oluşturmak için Unicode karakterlerinin nasıl birleştirildiklerini gösterir. Söz dizimsel dil bilgisi (/B.2), sözcük dil bilgilerinden elde edilen belirteçlerin PowerShell betikleri oluşturmak için nasıl birleştirildiklerini gösterir.

Kolaylık olması için bu dil bilgisi parçalarının bu belirtim boyunca uygun yerlerde çoğaltılması gerekir.

Dil bilgisinde 'a' ile 'z' karakterlerinin herhangi bir kullanımı büyük/küçük harfe duyarlı değildir. Başka bir ifadeyle değişkenler, diğer adlar, işlev adları, anahtar sözcükler, deyimler ve işleçlerde büyük/harf büyük/harf yoksayılır. Ancak, bu belirtim boyunca, bazı otomatik ve tercih değişkenleri dışında bu tür adlar küçük harfle yazılır.

2.2 Sözcük analizi

2.2.1 Betikleri

Söz dizimi:

İpucu

Söz ~opt~ dizimi tanımlarında yer alan not, söz dizimsel varlığın söz dizimsinde isteğe bağlı olduğunu gösterir.

input:
    input-elements~opt~   signature-block~opt~

input-elements:
    input-element
    input-elements   input-element

input-element:
    whitespace
    comment
    token

signature-block:
    signature-begin   signature   signature-end

signature-begin:
    new-line-character   # SIG # Begin signature block   new-line-character

signature:
    base64 encoded signature blob in multiple single-line-comments

signature-end:
    new-line-character   # SIG # End signature block   new-line-character

Açıklama:

PowerShell translator'a giriş kaynağı akışı, Unicode karakter dizisi içeren bir betikte yer alan giriştir. Bu akışın sözcük işlemesi, söz dizimi analizinin girişi olacak şekilde bu karakterlerin belirteç dizisine azaltılmasını içerir.

Betik, bir betik dosyasında depolanan bir PowerShell komutları grubudır. Betiğin adı yoktur, se başına ve adını kaynak dosyasından alır. Bu dosyanın sonu betiğin sonunu gösterir.

Betik isteğe bağlı olarak bir dijital imza içerebilir. Bir imzayı izleyen metinleri veya imzaya benzer herhangi bir şeyi işlemesi için konak ortamı gerekli değildir. Dijital imzaların oluşturulması ve kullanımı bu belirtim kapsamında değildir.

2.2.2 Satır sonlandırıcıları

Söz dizimi:

new-line-character:
    Carriage return character (U+000D)
    Line feed character (U+000A)
    Carriage return character (U+000D) followed by line feed character (U+000A)

new-lines:
    new-line-character
    new-lines new-line-character

Açıklama:

Giriş kaynak akışında yeni satır karakterlerinin olması, bunu hata raporlama ve tek satırlı açıklamanın sonunun algılanması gibi şeyler için kullanılan satırlara böler.

Bir çizgi sonlandırıcı boşluk (yaklaşık 2.2.4) olarak kabul edilebilir.

2.2.3 Yorumları

Söz dizimi:

comment:
single-line-comment
    requires-comment
    delimited-comment

single-line-comment:
    # input-characters~opt~

input-characters:
    input-character
    input-characters input-character

input-character:
    Any Unicode character except a new-line-character

requires-comment:
    #requires whitespace command-arguments

dash:
    - (U+002D)
    EnDash character (U+2013)
    EmDash character (U+2014)
    Horizontal bar character (U+2015)

dashdash:
    dash dash

delimited-comment:
    < # delimited-comment-text~opt~ hashes >

delimited-comment-text:
    delimited-comment-section
    delimited-comment-text delimited-comment-section

delimited-comment-section:
    >
    hashes~opt~  not-greater-than-or-hash

hashes:
    #
    hashes #

not-greater-than-or-hash:
    Any Unicode character except > or #

Açıklama:

Kaynak koduna açıklama ek açıklamalarını kullanabilirsiniz.

Tek satırlı açıklama karakteriyle başlar ve # yeni satır karakteriyle biter.

Sınırlandırılmış-açıklama, karakter çifti ile başlar ve <# karakter çifti ile biter#>. Bir kaynak satırın parçası olarak, tam kaynak satırı olarak oluşabilir veya herhangi bir sayıda kaynak satırına yayabilir.

Açıklama boşluk olarak kabul edilir.

Yukarıdaki üretimler şu ifadeleri ifade ediyor:

  • Açıklamalar iç içe yerleştirilmez.
  • <# ve #> dizileri tek satırlı bir açıklamada özel bir anlamı yoktur.
  • Sınırlandırılmış bir açıklamada # karakterinin özel bir anlamı yoktur.

Sözcük bilgisi, açıklamalar belirteçlerin içinde bulunamaz anlamına gelir.

(Betik dosyalarından belge oluşturmak için kullanılan özel değerli açıklamalar içeren betik dosyaları oluşturma hakkında bilgi için bkz.)

requires-comment, içeren betiğin çalışmasına izin ver için karşılanacak ölçütleri belirtir. Birincil ölçüt, betiği çalıştırmak için kullanılan PowerShell sürümüdür. En düşük sürüm gereksinimi aşağıdaki gibi belirtilir:

#requires -Version N[.n]

Burada N (gerekli) ana sürüm, n ise ( isteğe bağlı) ikincil sürümdür.

Requires-comment herhangi bir betik dosyasında mevcut olabilir; ancak, bir işlevin veya cmdlet'in içinde bulunamaz. Kaynak satırda ilk öğe olması gerekir. Bir betik birden çok requires-comment içerebilir.

Bir karakter dizisi yalnızca bu dizi veya ile başlıyorsa açıklama olarak # tanınır <#. Örneğin hello#, tek bir belirteç olarak kabul edilirken hello #there ve ardından tek satırlı bir açıklama olarak kabul edilir. Açıklama başlangıç sırası, aşağıdaki boşluğun yanı sıra herhangi bir ifade sonlandırıcı veya deyim sonlandırıcı karakterden de ()``}, , , ], 'veya "gibi) önce olabilir;.

Bir ek bileşenin içinde requires-comment bulunamaz.

Requires-comment'ın dört farklı formu daha vardır:

#requires --Assembly AssemblyId
#requires --Module ModuleName
#requires --PsSnapIn PsSnapIn [ -Version *N* [.n] ]
#requires --ShellId ShellId

2.2.4 Boşluk

Söz dizimi:

whitespace:
    Any character with Unicode class Zs, Zl, or Zp
    Horizontal tab character (U+0009)
    Vertical tab character (U+000B)
    Form feed character (U+000C)
    ` (The backtick character U+0060) followed by new-line-character

Açıklama:

Boşluk, bir veya daha fazla boşluk karakteri dizilerinden oluşur.

Boşluk, belirteçler için ayırıcı olarak davransa da yoksayılır.

PowerShell, bazı popüler dillerden farklı olarak satır sonlandırıcı karakterleri (satır sonlandırıcı karakterlerinin (yaklaşık 2.2.2) boşluk olduğunu düşünmez. Ancak, bir satır sonlandırıcı hemen önce bir backtick ` karakteri (U+0060) tarafından boşluk olarak kabul edilebilir. Bu, bir satırın içeriği tam olarak olduğu zaman gereklidir, ancak aşağıdaki satır önceki satırla ilişkilendirilen belirteçleri içerir. Örneğin,

$number = 10 # assigns 10 to $number; nothing is written to the pipeline
+ 20 # writes 20 to the pipeline
- 50 # writes -50 to the pipeline
$number # writes $number's value, 10, to the pipeline

Bu örnekte, geri işareti kaynak satırın devam edeceğini gösterir. Aşağıdaki ifade ile eşdeğerdir $number = 10 + 20 - 50.

$number = 10 `
+ 20 `
- 50
$number # writes $number's value to the pipeline
-20

2.3 Belirteçler

Söz dizimi:

token:
    keyword
    variable
    command
    command-parameter
    command-argument-token
    integer-literal
    real-literal
    string-literal
    type-literal
    operator-or-punctuator

Açıklama:

Belirteç , PowerShell dilindeki en küçük sözcüksel öğedir.

Belirteçler yeni satırlara, açıklamalara, boşluklara veya herhangi bir birleşime göre ayrılabilir.

2.3.1 Anahtar Sözcükler

Söz dizimi:

keyword: one of
    begin          break          catch       class
    continue       data           define      do
    dynamicparam   else           elseif      end
    exit           filter         finally     for
    foreach        from           function    if
    in             inlinescript   parallel    param
    process        return         switch      throw
    trap           try            until       using
    var            while          workflow

Açıklama:

Anahtar sözcük , bağlama bağımlı bir yerde kullanılırken özel anlamı olan bir karakter dizisidir. Genellikle bu, bir deyiminin ilk belirteci olarak ifade edilir; ancak dil bilgisi tarafından belirtilen başka konumlar da vardır. (Anahtar sözcük gibi görünen ancak anahtar sözcük bağlamında kullanılmayan bir belirteç, bir komut-adı veya komut-bağımsız değişkenidir.)

anahtar sözcükleri class, define, from, usingve daha var sonra kullanılmak üzere ayrılmıştır.

Not

Düzenleyicinin Notu: ve anahtar class sözcükleri using PowerShell 5.0'da tanıtıldı. Bkz . about_Classes ve about_Using.

2.3.2 Değişkenleri

Söz dizimi:

variable:
    $$
    $?
    $^
    $   variable-scope~opt~  variable-characters
    @   variable-scope~opt~  variable-characters
    braced-variable


braced-variable:
    ${   variable-scope~opt~   braced-variable-characters   }

variable-scope:
    global:
    local:
    private:
    script:
    using:
    workflow:
    variable-namespace

variable-namespace:
    variable-characters   :

variable-characters:
    variable-character
    variable-characters   variable-character

variable-character:
    A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nd
    _   (The underscore character U+005F)
    ?

braced-variable-characters:
    braced-variable-character
    braced-variable-characters   braced-variable-character

braced-variable-character:
    Any Unicode character except
        }   (The closing curly brace character U+007D)
        `   (The backtick character U+0060)
    escaped-character

escaped-character:
    `   (The backtick character U+0060) followed by any Unicode character

Açıklama:

Değişkenler (Yaklaşık 5) içinde ayrıntılı olarak ele alınmıştır. $? değişkeni , 2.3.2.2'de ele alınmıştır. Kapsamlar ,3.5'te ele alınmıştır.

ve değişkenleri $$ $^ , bu belirtim kapsamının dışında olan etkileşimli bir ortamda kullanılmak üzere ayrılmıştır.

Bir değişken adı yazmanın iki yolu vardır: $``$ile başlayan küme ayraçlı değişken adı, ardından küme ayracı ile ayrılmış bir karakter kümesi ve ile başlayan normal bir değişken adı ve ardından, ayraçlı değişken adının izin verenden daha kısıtlayıcı bir kümeden bir veya daha fazla karakter kümesiyle başlar. Her normal değişken adı karşılık gelen bir ayraçlı değişken adı kullanılarak ifade olabilir.

$totalCost
$Maximum_Count_26

$végösszeg # Hungarian
$итог # Russian
$総計 # Japanese (Kanji)

${Maximum_Count_26}
${Name with`twhite space and `{punctuation`}}
${E:\\File.txt}

Değişken adının uzunluğuyla ilgili bir sınır yoktur, bir değişken adı içinde yer alan tüm karakterler önemlidir ve büyük/küçük harf ayrı değildir .

Birkaç farklı değişken türü vardır: kullanıcı tanımlı (İsca 2.3. 2.2.1), otomatik (yaklaşık 2.3.2.2)) ve tercih (yaklaşık 2.3.2.2.3). Hepsi aynı kapsamda bir arada var olabilir (yaklaşık 3,5).

Aşağıdaki işlev tanımını ve çağrılarını düşünün:

function Get-Power ([long]$base, [int]$exponent) { ... }

Get-Power 5 3 # $base is 5, $exponent is 3
Get-Power -exponent 3 -base 5 # " " "

Her bağımsız değişken, konum veya adla tek tek geçirildi. Ancak, bir bağımsız değişken kümesi, çalışma zamanı ortamı tarafından ele alınarak bağımsız değişkenlere genişleterek bir grup olarak geçirebilirsiniz. Bu otomatik bağımsız değişken genişletmesi, splatting olarak bilinir. Örneğin,

$values = 5,3 # put arguments into an array
Get-Power @values

$hash = @{ exponent = 3; base = 5 } # put arguments into a Hashtable
Get-Power @hash

function Get-Power2 { Get-Power @args } # arguments are in an array

Get-Power2 --exponent 3 --base 5 # named arguments splatted named in
@args
Get-Power2 5 3 # position arguments splatted positionally in @args

Bu, geçirilen değişkenin @ ilk $ karakteri olarak yerine kullanılarak elde edilir. Bu ifade yalnızca bir komut için bağımsız değişkende kullanılabilir.

Adlar, her birinin bir sanal sürücüde depolanan çeşitli ad alanlarına bölümlenir (§ 3,1). Örneğin, değişkenler üzerinde Variable: depolanır, ortam değişkenleri Env: üzerinde depolanır, işlevler üzerinde Function: depolanır ve diğer adlar üzerinde Alias: depolanır. Bu adların tümüne değişken kapsamı içinde değişken ad alanı üretimi kullanılarak değişkenler olarak erişilebilir. Örneğin,

function F { "Hello from F" }
$Function:F # invokes function F

Set-Alias A F
$Alias:A # invokes function F via A

$Count = 10
$Variable:Count # accesses variable Count
$Env:Path # accesses environment variable Path

Açık Variable: ad alanı olan bir değişken adının herhangi bir kullanımı, bu nitelik olmadan aynı değişken adının kullanımına eşdeğerdir. Örneğin, $v ve $Variable:v arasında değiştirilebilir.

Dilde tanımlanmakta olduğu gibi, değişkenler de New-Variablecmdlet 'i tarafından tanımlanabilir.

2.3.2.1 Kullanıcı tanımlı değişkenler

Dilbilgisi tarafından izin verilen ancak otomatik veya tercih değişkenleri tarafından kullanılmayan herhangi bir değişken adı Kullanıcı tanımlı değişkenler için kullanılabilir.

Kullanıcı tanımlı değişkenler, Kullanıcı tanımlı komut dosyası tarafından oluşturulur ve yönetilir.

2.3.2.2 otomatik değişkenler

Otomatik değişkenler PowerShell ortamıyla ilgili durum bilgilerini depolar. Değerleri, Kullanıcı tarafından yazılan betikte okunabilir ancak yazılamaz.

Not

Bu belgede bulunan özgün tablo, yinelemeyi azaltmak için kaldırılmıştır. Otomatik değişkenlerin tüm listesi için bkz. about_Automatic_Variables.

2.3.2.3 tercih değişkenleri

Tercih değişkenleri oturum için Kullanıcı tercihlerini depolar. Bunlar, PowerShell çalışma zamanı ortamı tarafından oluşturulup başlatılır. Değerleri, Kullanıcı tarafından yazılan betikte okunabilir ve yazılabilir.

Not

Bu belgede bulunan özgün tablo, yinelemeyi azaltmak için kaldırılmıştır. Tercih değişkenlerinin tüm listesi için bkz. about_Preference_Variables.

2.3.3 komutları

Söz dizimi:

generic-token:
    generic-token-parts

generic-token-parts:
    generic-token-part
    generic-token-parts generic-token-part

generic-token-part:
    expandable-string-literal
    verbatim-here-string-literal
    variable
    generic-token-char

generic-token-char:
    Any Unicode character except
        {   }   (   )   ;   ,   |   &   $
        ` (The backtick character U+0060)
        double-quote-character
        single-quote-character
        whitespace
        new-line-character
        escaped-character

generic-token-with-subexpr-start:
    generic-token-parts $(

2.3.4 parametreleri

Söz dizimi:

command-parameter:
    dash first-parameter-char parameter-chars colon~opt~

first-parameter-char:
    A Unicode character of classes Lu, Ll, Lt, Lm, or Lo
    _ (The underscore character U+005F)
    ?

parameter-chars:
    parameter-char
    parameter-chars parameter-char

parameter-char:
    Any Unicode character except
        { } ( ) ; , \| & . [
        colon
        whitespace
        new-line-character

colon:
    : (The colon character U+003A)

verbatim-command-argument-chars:
    verbatim-command-argument-part
    verbatim-command-argument-chars verbatim-command-argument-part

verbatim-command-argument-part:
    verbatim-command-string
    & non-ampersand-character
    Any Unicode character except
        |
        new-line-character

non-ampersand-character:
    Any Unicode character except &

verbatim-command-string:
    double-quote-character non-double-quote-chars
    double-quote-character

non-double-quote-chars:
    non-double-quote-char
    non-double-quote-chars non-double-quote-char

non-double-quote-char:
    Any Unicode character except
        double-quote-character

Açıklama:

Bir komut çağrıldığında, bu değere bir veya daha fazla bağımsız değişken aracılığıyla değerlere bir dizi karşılık gelen parametre aracılığıyla erişildikleri bir veya daha fazla bağımsız değişken aracılığıyla iletilebilir. Parametreleri bağımsız değişkenlerle eşleştirme işlemine parametre bağlama denir.

Üç tür bağımsız değişken vardır:

  • Switch parametresi (§ 8.10.5)--Bu, ilk parametre-karakter ve parametre-karakter parametrelerinin birlikte çağrılması, çağrılan komutta bir parametre adına (önde gelen - ) karşılık gelen anahtar adını oluşturur. Sondaki iki nokta atlanmışsa, bu bağımsız değişkenin varlığı karşılık gelen parametrenin olarak $true ayarlandığını gösterir. Sondaki iki nokta varsa, hemen aşağıdaki bağımsız değişken bool türünde bir değer belirtmelidir ve karşılık gelen parametre bu değere ayarlanır. Örneğin, aşağıdaki çağırmaları eşdeğerdir:

    Set-MyProcess -Strict
    Set-MyProcess -Strict: $true
    
  • Bağımsız değişkene sahip parametre (§ 8.10.2)--Bu, ilk parametre-karakter ve parametre-karakter parametrelerinin birlikte kullanıldığı, çağrılan komutta bir parametre adına karşılık gelen parametre adını (önde gelen) oluşturan form komut parametresine sahiptir. Sonunda iki nokta üst üste olmaması gerekir. Hemen sonraki bağımsız değişken ilişkili bir değeri belirler. Örneğin, parametreleri ve $exponent parametreleri $base olan bir komut Get-Power verildiğinde aşağıdaki çağırmaları eşdeğerdir:

    Get-Power -base 5 -exponent 3
    Get-Power -exponent 3 -base 5
    
  • Konumsal bağımsız değişken (§ 8.10.2)-bağımsız değişkenler ve komutları içindeki karşılık gelen parametreler, ilk konumu sıfır olan pozisyonlardır. 1 konumundaki bağımsız değişken 0 konumundaki parametreye bağlanır; konum 1 ' deki bağımsız değişken 1 konumundaki parametreye bağlanır; vb. Örneğin, parametrelere $base ve $exponent sırasıyla 0 ve 1 konumlarına sahip bir komut Get-Power verildiğinde, aşağıdaki komutu çağırır:

    Get-Power 5 3
    

Özel parametrelerin -- --% ayrıntıları için bkz. § 8,2 .

Bir komut çağrıldığında, bir parametre adı kısaltılmış olabilir; Tam adın herhangi bir ayrı önde gelen bölümü, aynı komut tarafından kabul edilen diğer parametrelerin adlarına göre belirsiz şekilde kullanılabilir.

Parametre bağlama hakkında bilgi için bkz. § 8,14.

2.3.5 değişmez değerleri

Söz dizimi:

literal:
    integer-literal
    real-literal
    string-literal

2.3.5.1 sayısal değişmez değerler

İki tür sayısal değişmez değer vardır: Integer (§ 2.3.5.1.1) ve Real (§ 2.3.5.1.2). Her ikisi de çarpan soneklerine (§ 2.3.5.1.3) sahip olabilir.

2.3.5.1.1 tamsayı sabit değerleri

Söz dizimi:

integer-literal:
    decimal-integer-literal
    hexadecimal-integer-literal

decimal-integer-literal:
    decimal-digits numeric-type-suffix~opt~ numeric-multiplier~opt~

decimal-digits:
    decimal-digit
    decimal-digit decimal-digits

decimal-digit: one of
    0  1  2  3  4  5  6  7  8  9

numeric-type-suffix:
    long-type-suffix
    decimal-type-suffix

hexadecimal-integer-literal:
    0x hexadecimal-digits long-type-suffix~opt~
    numeric-multiplier~opt~

hexadecimal-digits:
    hexadecimal-digit
    hexadecimal-digit decimal-digits

hexadecimal-digit: one of
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f

long-type-suffix:
    l

numeric-multiplier: one of
    kb mb gb tb pb

Açıklama:

Bir tamsayı sabit değerinin türü, değeri tarafından belirlenir, uzun-tür son ekinin varlığı veya yokluğu ve sayısal çarpanın varlığını (§ 2.3.5.1.3) belirler.

Uzun-türü-sonekine sahip olmayan bir tamsayı sabit değeri için

  • Değeri int (§ 4.2.3) türü ile temsil edilebilir ise, bu türüdür.
  • Aksi takdirde, değeri Long (§ 4.2.3) tarafından temsil edilebilir. Bu değer türüdür.
  • Aksi takdirde, değeri Decimal (§ 2.3.5.1.2) türü ile temsil edilebilir, bu türüdür.
  • Aksi halde, Double türü (§ 2.3.5.1.2) ile temsil edilir.

Uzun-türü-sonekine sahip bir tamsayı sabit değeri için

  • Eğer değeri Long (§ 4.2.3) ile temsil edilebilir, bu türüdür.
  • Aksi takdirde, bu değişmez değer hatalı biçimlendirilmiş olur.

Tamsayı değerlerinin Twos-tamamlayıcı gösteriminde pozitif değerden daha negatif bir değer vardır. İnt türü için, bu ek değer-2147483648 ' dir. Uzun tür için, ek değer-9223372036854775808 ' dır. Belirteç 2147483648, genellikle Long türünde bir sabit değer olarak kabul edilse de, bu işleç ve değişmez değer en küçük değere sahip int türünde bir sabit değer olarak değerlendirilir. Benzer şekilde, Token 9223372036854775808 normalde Decimal türünde gerçek bir sabit değer olarak kabul edilse de, bu işleç ve değişmez değer en küçük değere sahip Long türünde bir sabit değer olarak değerlendirilir.

Tamsayı değişmez değerleri için bazı örnekler şunlardır 123 (int), 123L (Long) ve 200000000000 (Long).

Byte türünde bir tamsayı sabit değeri olarak böyle bir şey yoktur.

2.3.5.1.2 gerçek sabit değerleri

Söz dizimi:

real-literal:
    decimal-digits . decimal-digits exponent-part~opt~ decimal-type-suffix~opt~ numeric-multiplier~opt~
    . decimal-digits exponent-part~opt~ decimal-type-suffix~opt~ numeric-multiplier~opt~
    decimal-digits exponent-part decimal-type-suffix~opt~ numeric-multiplier~opt~

exponent-part:
    e sign~opt~  decimal-digits

sign: one of
    +
    dash

decimal-type-suffix:
    d
    l

numeric-multiplier: one of
    kb mb gb tb pb

dash:
    - (U+002D)
    EnDash character (U+2013)
    EmDash character (U+2014)
    Horizontal bar character (U+2015)

Açıklama:

Gerçek bir sabit değer, sayısal bir çarpan (§ 2.3.5.1.3) içerebilir.

İki tür gerçek sabit değer vardır: Double ve Decimal. Bunlar, sırasıyla ondalık-tür son ekinin devamsızlık veya varlığına göre belirtilir. ( Kayan gerçek sabit değer gibi bir şey yoktur.)

Çift gerçek sabit değer Double türünde (§ 4.2.4.1). Ondalık gerçek sabit değer Decimal türünde (§ 4.2.4.2). Ondalık gerçek değişmez değerin kesir bölümünde sondaki sıfırlar önemli.

Bir çift gerçek sabit değer içindeki üs-parçanın ondalık basamakları değeri desteklenen en düşük değerden küçükse, bu çift gerçek değişmez değerin değeri 0 ' dır. Bir ondalık gerçek değişmez değerindeki üs parçanın Ondalık basamaklarının değeri, desteklenen minimum değerden küçükse, değişmez değer hatalı biçimlendirilmiş olur. Double veya Decimal gerçek değişmez değerindeki üs-parçanın ondalık basamakları değeri desteklenenden daha büyükse, bu değişmez değer hatalı biçimlendirilmiş olur.

Çift gerçek değişmez değerler için bazı örnekler şunlardır 1., 1,23,. 45e35, 32. e + 12 ve 123,456 E-231.

Ondalık gerçek değişmez değerler için bazı örnekler 1D (Ölçeği 0 olan), 1,20 d (ölçek 2 ' dir), 1.23450 e1d (ör. ölçek 4 ' ü içeren), 1,2345 E3D (yani, 1234,5 12,3450, 1 ölçeği bulunan), 1,2345 e-1D (ör., 0,12345, 5 ölçeğini içeren) ve 1,2345 e-3B (yani, 7 ölçeğini içeren 0,0012345).

Not

Çift gerçek bir sabit değerin bir kesir veya üs bölümü olmaması gerektiğinden, (123) içinde gruplandırma ayraçları. Değer 123 olan tamsayı nesnesi için bir özelliğin veya yöntemin seçili olduğundan emin olmak için e gerekir. Bu parantezler olmadan gerçek değişmez değer hatalı biçimlendirilmiş olur.

Not

PowerShell, sonsuz ve NaNs 'ler için değişmez değer sağlamasa da, çift gerçek sabit değer benzeri eşdeğerleri statik salt okunurdur, NegativeInfinity ve float ve Double (§ 4.2.4.1) türlerindeki Nan 'dan elde edilebilir.

Dilbilgisi, veya L tür sonekine sahip l olmak için çift gerçek değişmez değer olarak neyin başlayacağını sağlar. Bu tür bir belirteç gerçekte değeri tür ile temsil edilen bir tamsayı değişmez değeridir.

Not

Bu özellik, PowerShell 'in önceki sürümleriyle geriye dönük uyumluluk için tutulmuştur. Ancak, programcıların gerçek değerini kolayca gizlebilecekleri için bu formun tamsayı sabit değerlerini kullanmaları önerilmez. Örneğin, 1.2 L değeri 1, 1,2345 e1L değeri 12 ' dir ve 1,2345 e-5L değeri 0 ' dır, hiçbiri hemen açık olur.

2.3.5.1.3 Multiplier sonekleri

Söz dizimi:

numeric-multiplier: *one of*
    kb mb gb tb pb

Açıklama:

Daha kolay bir şekilde, tamsayı ve gerçek sabit değerler, 10 ' un yaygın olarak kullanılan üslerinden birini belirten bir sayısal çarpan içerebilir. sayısal çarpan , büyük veya küçük harflerden oluşan herhangi bir kombinasyonda yazılabilir.

Çarpanını Anlamı Örnek
makalesinin kilobayt (1024) 1 KB 'lık ≡ 1024
'lık megabayt (1024 x 1024) 1.30 DMB ≡ 1363148,80
'dir gigabayt (1024 x 1024 x 1024) 0x10Gb ≡ 17179869184
'tan terabaytlık (1024 x 1024 x 1024 x 1024) 1.4 e23tb ≡ 1.5393162788864 E + 35
içermiyor petab, (1024 x 1024 x 1024 x 1024 x 1024) 0x12Lpb ≡ 20266198323167232

2.3.5.2 dize sabit değerleri

Söz dizimi:

string-literal:
    expandable-string-literal
    expandable-here-string-literal
    verbatim-string-literal
    verbatim-here-string-literal

expandable-string-literal:
    double-quote-character expandable-string-characters~opt~  dollars~opt~ double-quote-character

double-quote-character:
    " (U+0022)
    Left double quotation mark (U+201C)
    Right double quotation mark (U+201D)
    Double low-9 quotation mark (U+201E)

expandable-string-characters:
      expandable-string-part
      expandable-string-characters
      expandable-string-part

expandable-string-part:
    Any Unicode character except
        $
        double-quote-character
        ` (The backtick character U+0060)
    braced-variable
    $ Any Unicode character except
        (
        {
        double-quote-character
        ` (The backtick character U+0060)*
    $ escaped-character
    escaped-character
    double-quote-character double-quote-character

dollars:
    $
    dollars $

expandable-here-string-literal:
    @  double-quote-character  whitespace~opt~  new-line-character
        expandable-here-string-characters~opt~  new-line-character  double-quote-character  @

expandable-here-string-characters:
    expandable-here-string-part
    expandable-here-string-characters  expandable-here-string-part

expandable-here-string-part:
    Any Unicode character except
        $
        new-line-character
    braced-variable
    $ Any Unicode character except
        (
        new-line-character
    $ new-line-character  Any Unicode character except double-quote-char
    $ new-line-character double-quote-char  Any Unicode character except @
    new-line-character  Any Unicode character except double-quote-char
    new-line-character double-quote-char  Any Unicode character except @

expandable-string-with-subexpr-start:
    double-quote-character  expandable-string-chars~opt~  $(

expandable-string-with-subexpr-end:
    double-quote-char

expandable-here-string-with-subexpr-start:
    @  double-quote-character  whitespace~opt~  new-line-character  expandable-here-string-chars~opt~  $(

expandable-here-string-with-subexpr-end:
    new-line-character  double-quote-character  @

verbatim-string-literal:
    single-quote-character verbatim-string-characters~opt~ single-quote-char

single-quote-character:
    ' (U+0027)
    Left single quotation mark (U+2018)
    Right single quotation mark (U+2019)
    Single low-9 quotation mark (U+201A)
    Single high-reversed-9 quotation mark (U+201B)

verbatim-string-characters:
    verbatim-string-part
    verbatim-string-characters verbatim-string-part

verbatim-string-part:
    *Any Unicode character except* single-quote-character
    single-quote-character  single-quote-character

verbatim-here-string-literal:
    @ single-quote-character whitespace~opt~  new-line-character
        verbatim-here-string-characters~opt~  new-line-character
            single-quote-character *@*

verbatim-*here-string-characters:
    verbatim-here-string-part
    verbatim-here-string-characters  verbatim-here-string-part

verbatim-here-string-part:
    Any Unicode character except* new-line-character
    new-line-character  Any Unicode character except single-quote-character
    new-line-character  single-quote-character  Any Unicode character except @

Açıklama:

Dört tür dize değişmez değeri vardır:

  • Tam dize sabit değeri (tek satırlık tek tırnak işareti), tek tırnaklı karakter s çifti ile ayrılmış sıfır veya daha fazla karakter dizisi. Örnekler ' ' ve ' Red '.

  • Genişletilebilir-dize-değişmez değer (tek satır çift tırnak işareti), çift tırnak karakteri s çifti tarafından ayrılmış sıfır veya daha fazla karakter dizisi. Örnekler şunlardır "" ve "Red".

  • burada, hepsi iki veya daha fazla kaynak satırında bulunan @Single-quote-character ve tek quote-character@ karakter çiftleri tarafından ayrılmış sıfır veya daha fazla karakter dizisi olan tam dize sabit değeri (çok satırlı tek tırnak işareti). Örnekler şunlardır:

    @'
    '@
    
    @'
    line 1
    '@
    
    @'
    line 1
    line 2
    '@
    
  • Genişletilebilir-burada-dize-değişmez değer (çok satırlı çift tırnak işareti), her sırasıyla iki veya daha fazla kaynak satırında bulunan @Double-quote-character ve çift tırnak-karakter@ karakter çiftleriyle ayrılmış sıfır veya daha fazla karakter dizisi. Örnekler şunlardır:

    @"
    "@
    
    @"
    line 1
    "@
    
    @"
    line 1
    line 2
    "@
    

Tam burada dize-sabit değerli s ve Genişletilebilir-burada-dize-sabit değeri(yok sayılır) dışında, boşluk haricinde boşluk karakterleri, açma sınırlayıcısı-karakter çifti ile aynı kaynak satırında ilerleyebilir ve kapatma sınırlayıcısı karakter çifti ile aynı kaynak satırında hiçbir karakter gelemez.

Tam olarak bir dize sabit değeri veya bir Genişletilebilir-burada dize sabit değeri gövdesi , açma sınırlayıcısı izleyen ilk kaynak satırının başlangıcında başlar ve kapanış sınırlayıcısından önceki son kaynak satırının sonunda sona erer. Gövde boş olabilir. Kapanış sınırlayıcısından önceki son kaynak satırdaki satır Sonlandırıcı, bu sabit değerin gövdesinin bir parçası değil.

Bu tür bir sabit değer String türünde (§ 4.3.1).

Bir Tam dize sabit değeri veya Genişletilebilir-dize-değişmez değer ayırmak için kullanılan karakter, bu karakteri art arda iki kez yazarak bu tür bir dize değişmez değerinde bulunabilir. Örneğin 'What''s the time?' ve "I said, ""Hello"".". Ancak, tek tırnak karakterinin bir Genişletilebilir dize sabit değeri içinde özel bir anlamı yoktur ve çift tırnak karakterinin bir tam dize sabit değeri içinde özel bir anlamı yoktur.

Genişletilebilir dize sabit değeri ve bir Genişletilebilir-burada dize sabit değeri , kaçan karakter s (§ 2.3.7) içerebilir. Örneğin, aşağıdaki dize değişmez değeri ardışık düzene yazıldığında, sonuç aşağıda gösterildiği gibidir:

"column1`tcolumn2`nsecond line, `"Hello`", ```Q`5`!"
column1<horizontal-tab>column2<new-line>
second line, "Hello", `Q5!

Genişletilebilir-dize-sabit değer veya Genişletilebilir-burada-dize-değişmez değeri bir değişkenin adını içeriyorsa, bu ad bir kaçış karakteri tarafından hemen önce kullanılmamışsa, söz konusu değişkenin değerinin (§ 6,7) dize temsili ile değiştirilmiştir. Bu, değişken değiştirme olarak bilinir.

Not

Değişken adı bir daha büyük ifadenin parçasıysa, yalnızca değişken adı değişir. Örneğin, $a 100 ve 200 öğelerini içeren bir diziyse, ">$($a.Length)<" ">$a.Length<" >100 200.Length< >2< ile sonuçlanır. Aşağıdaki alt ifade genişletmesine bakın.

Örneğin, kaynak kodu

$count = 10
"The value of `$count is $count"

Genişletilebilir dize sabit değerinin sonuçları

The value of $count is 10.

Aşağıdaki topluluklara bir göz atın:

$a = "red","blue"
"`$a[0] is $a[0], `$a[0] is $($a[0])" # second [0] is taken literally

Sonuç:

$a[0] is red blue[0], $a[0] is red

Genişletilebilir dize-değişmez değer s ve Genişletilebilir-burada dize-sabit değeri, form $( ... ) metnini bir alt ifade (§ 7.1.6) olarak düşünerek, alt ifade genişletmesi adlı bir değiştirme türünü de destekler. Bu tür metinler, bu ifadenin değerinin (§ 6,8) dize temsili ile değiştirilmiştir. Alt deyimin deyim-listesi içindeki belirteçleri ayırmak için kullanılan tüm boşluklar, sonuç dizesinin oluşturulması düşünüldüğünde yok sayılır.

Örnekler,

$count = 10
"$count + 5 is $($count + 5)"
"$count + 5 is `$($count + 5)"
"$count + 5 is `$(`$count + 5)"

Aşağıdaki Genişletilebilir dize sabit değeri ile sonuçlanır:

10 + 5 is 15
10 + 5 is $(10 + 5)
10 + 5 is $($count + 5)

Aşağıdaki kaynak,

$i = 5; $j = 10; $k = 15
"`$i, `$j, and `$k have the values $( $i; $j; $k )"

Aşağıdaki Genişletilebilir dize sabit değeri ile sonuçlanır:

$i, $j, and $k have the values 5 10 15

Bu dört satır aşağıdaki gibi daha succinctly yazılmış olabilir:

"`$i, `$j, and `$k have the values $(($i = 5); ($j = 10); ($k = 15))"

Aşağıdaki örnekte,

"First 10 squares: $(for ($i = 1; $i -le 10; ++$i) { "$i $($i*$i) " })"

Sonuçta elde edilen Genişletilebilir dize sabit değeri aşağıdaki gibidir:

First 10 squares: 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100

Gösterildiği gibi, bir alt ifade hem değişken değiştirme hem de alt ifade genişletmesi olan dize sabit değerleri içerebilir. Ayrıca, iç Genişletilebilir dize-sabit değerinin sınırlayıcılarının kaçışsız olması gerektiğini unutmayın; bir alt ifade içinde oldukları olgu, dış Genişletilebilir dize sabit değeri için sonlandırıcılar olmadığı anlamına gelir.

Tek başına bir değişken değiştirme veya alt ifade genişletmesi içeren bir Genişletilebilir dize sabit değeri veya Genişletilebilir-burada dize sabit değeri , sabit değeri her kullanıldığında değerlendirilir; Örneğin,

$a = 10
$s1 = "`$a = $($a; ++$a)"
"`$s1 = >$s1<"
$s2 = "`$a = $($a; ++$a)"
"`$s2 = >$s2<"
$s2 = $s1
"`$s2 = >$s2<"

Bu, aşağıdaki Genişletilebilir dize-değişmez değeri ile sonuçlanır:

$s1 = >$a = 10<
$s2 = >$a = 11<
$s2 = >$a = 10<

Bir tam burada dize sabit değerinin içeriği, gövdedeki baştaki veya sondaki boşluk da dahil olmak üzere tam olarak alınır. Bu nedenle, katıştırılmış tek tırnaklı karakter s 'nin iki katına çıkarması gerekmez ve değiştirme veya genişletme yoktur. Örneğin,

$lit = @'
That's it!
2 * 3 = $(2*3)
'@

Bu, değişmez değer ile sonuçlanır

That's it!
2 * 3 = $(2*3)

Bir Genişletilebilir-burada dize sabit değerinin içeriği değiştirme ve genişletmeye tabidir, ancak gövde içindeki, ancak herhangi bir alt ifadenin dışında herhangi bir baştaki veya sondaki boşluk alınır ve gömülü çift tırnak karakterinin çift olması gerekmez. Örneğin,

$lit = @"
That's it!
2 * 3 = $(2*3)
"@

Bu, genişletildiğinde aşağıdaki değişmez değer ile sonuçlanır:

That's it!
2 * 3 = 6

Yalnızca tam dize-sabit değer s ve Genişletilebilir-burada-dize-sabit değeri için gövde içindeki her satır Sonlandırıcı, uygulama tanımlı bir şekilde ortaya çıkan değişmez değer içinde temsil edilir. Örneğin,

$lit = @"
abc
xyz
"@

gövdenin ikinci satırında iki önde boşluk bulunur ve gövdenin ilk ve ikinci satırı satır sonlandırıcılarını içerir; Ancak, gövdenin ikinci satırı için Sonlandırıcı bu gövdenin bir parçası değildir . Elde edilen değişmez değer şu değere eşdeğerdir: "abc<implementation-defined character sequence>xyz" .

Not

Kaynak okunabilirliğini sağlamak için, uzun dize sabit değerleri, eklenen satır sonlandırıcılar olmadan birden çok kaynak satıra ayrılabilir. Bu, her bir parçayı ayrı bir değişmez değer olarak yazarak ve parçaları + işleci (§ 7.7.2) ile birleştirerek yapılır. Bu işleç, işlenenlerinin dört tür dize sabiti belirlemesine izin verir.

Not

Tek başına bir karakter sabit değeri olarak böyle bir şey olmasa da, aşağıdaki gibi, 1 karakterlik dizedeki ilk karaktere erişerek aynı etki elde edilebilir: [char]"A" veya "A"[0] .

Yalnızca tam dize-sabit değer s ve Genişletilebilir-burada-dize-sabit değeri için, gövde içindeki her satır Sonlandırıcı, tam olarak sağlandığı şekilde temsil edilir.

2.3.5.3 null sabit değeri

Bkz. otomatik değişken $null (§ 2.3.2.2).

2.3.5.4 Boolean sabit değerleri

Bkz. otomatik değişkenler $false ve $true (§ 2.3.2.2).

2.3.5.5 dizisi sabit değerleri

PowerShell, dizi türü ifadelerin (§ 9) birli virgül işleci (§ 7.2.1), dizi ifadesi (§ 7.1.7), ikili virgül işleci (§ 7,3) ve Aralık işleci (§ 7,4) kullanılarak yazılmasına izin verir.

2.3.5.6 karma sabit değerleri

PowerShell, karma değer ifadesi (§ 7.1.9) kullanılarak yazmak üzere Hashtable (§ 10) türündeki ifadelerin yazılmasına izin verir

2.3.5.7 tür adları

Söz dizimi:

type-name:
    type-identifier
    type-name . type-identifier

type-identifier:
    type-characters

type-characters:
    type-character
    type-characters type-character

type-character:
    A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nd
    _ (The underscore character U+005F)

array-type-name:
    type-name [

generic-type-name:
    type-name [

2.3.6 işleçleri ve noktalayıcısı

Söz dizimi:

operator-or-punctuator: one of
    {   }   [   ]   (   )   @(   @{   $(   ;
    &&  ||  &   |   ,   ++  ..   ::   .
    !   *   /   %   +   -   --
    -and   -band   -bnot   -bor
    -bxor   -not   -or     -xor
    assignment-operator
    merging-redirection-operator
    file-redirection-operator
    comparison-operator
    format-operator

assignment-operator: one of
    =  -=  +=  *=  /=  %=

file-redirection-operator: one of
    >  >>  2>  2>>  3>  3>>  4>  4>>
    5>  5>>  6>  6>>  *>  *>>  <

merging-redirection-operator: one of
    *>&1  2>&1  3>&1  4>&1  5>&1  6>&1
    *>&2  1>&2  3>&2  4>&2  5>&2  6>&2

comparison-operator: *one of
    -as           -ccontains      -ceq
    -cge          -cgt            -cle
    -clike        -clt            -cmatch
    -cne          -cnotcontains   -cnotlike
    -cnotmatch    -contains       -creplace
    -csplit       -eq             -ge
    -gt           -icontains      -ieq
    -ige          -igt            -ile
    -ilike        -ilt            -imatch
    -in           -ine            -inotcontains
    -inotlike     -inotmatch      -ireplace
    -is           -isnot          -isplit
    -join         -le             -like
    -lt           -match          -ne
    -notcontains  -notin         -notlike
    -notmatch     -replace       -shl*
    -shr          -split

format-operator:
    -f

Açıklama:

&& ve || gelecekte kullanılmak üzere ayrılmıştır.

Not

Düzenleyicinin Note: işlem hattı zinciri işleçleri && ve || PowerShell 7 ' de tanıtılmıştı. Bkz. about_Pipeline_Chain_Operators.

Bir işlecin aşağıdaki tireden sonraki adı, yalnızca bir işleç bağlamında bu amaç için ayrılmıştır.

Tireyle başlayan bir operatör, bu tire ve onu izleyen belirteç arasında boşluk içermemelidir.

2.3.7 kaçan karakterler

Söz dizimi:

escaped-character:
    ` (The backtick character U+0060) followed by any Unicode character

Açıklama:

Kaçan bir karakter , bir önek geri nokta karakteri (U + 0060) vererek bir karaktere özel bir yorum atamak için bir yoldur. Aşağıdaki tabloda, her bir kaçışın karakterinin anlamı gösterilmektedir:

Kaçan karakter Anlamı
`a Uyarı (U + 0007)
`b Geri al (U + 0008)
`f Form-besleme (U + 000C)
`n Yeni satır (U + 000A)
`r Satır başı (U + 000D)
`t Yatay sekme (U + 0009)
`v Dikey sekme (U + 0009)
`' Tek tırnak (U + 0027)
`" Çift tırnak (U + 0022)
`` Backtick (U + 0060)
`0 NUL (U + 0000)
`x xYukarıda gösterilen karakterlerden farklı bir karakter ise, geri değer karakteri yoksayılır ve x tam olarak alınır.

Yukarıdaki tabloda yer alan son girişin etkili olması, başka şekilde ayrı belirteçlerin bir belirteç parçası haline getirilme şeklinde olan boşlukların yer aldığı bir belirteç. Örneğin, bir boşluk içeren bir dosya adı ( 'Test Data.txt' ve ya "Test Data.txt" da) olarak Test` Data.txt yazılabilir.