Aracılığıyla paylaş


2. Sözcük Yapısı

Editör 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.

2.1 Dil Bilgisi

Bu belirtim, iki dil bilgisi kullanan PowerShell dilinin söz dizimini gösterir. sözcük temelli dil bilgisi (§B.1) Unicode karakterlerinin satır sonlandırıcıları, açıklamaları, boşlukları ve belirteçleri oluşturmak için nasıl birleştirildiği gösterilir. sözdizimsel dil bilgisi (§B.2), leksik dil bilgisinden gelen belirteçlerin PowerShell betiklerini oluşturmak için nasıl birleştirildiğini gösterir.

Kolaylık sağlamak için, bu dil bilgisi parçaları bu belgede uygun yerlerde çoğaltılır.

Dilbilgisi gramerlerinde 'a' ile 'z' arasındaki karakterlerin kullanımı büyük/küçük harf fark etmeksizin yapılır. Bu, değişkenler, diğer adlar, işlev adları, anahtar sözcükler, deyimler ve işleçlerdeki büyük/küçük harf duyarlılığının yoksayıldığı anlamına gelir. 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 temelli analiz

2.2.1 Scriptler

Sözdizimi:

Bahşiş

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.

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:

Bir PowerShell çeviricisine giriş kaynak akışı, Unicode karakter dizisi içeren bir betikteki giriştir. Bu akışın sözcüksel işlenmesi, karakterlerin bir belirteç dizisine dönüştürülmesini ve bu dizinin söz dizimsel analiz için giriş haline gelmesini içerir.

Betik, betik-dosyasıdepolanan bir PowerShell komutları grubudur. Betiğin kendi başına bir adı yoktur 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. Barındırma ortamı, imzadan sonra gelen veya imzaya benzeyen herhangi bir metni işlemek zorunda değildir. Dijital imzaların oluşturulması ve kullanılması bu belirtim kapsamında değildir.

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

Sözdizimi:

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ş veri akışında yeni satır karakterlerinin ,bulunması, bu akışı, hata raporlama ve tek satırlı bir açıklamanın sonunun algılanması gibi amaçlarla kullanılabilecek satırlara böler.

Bir satır sonlandırıcısı boşluk (§2.2.4) olarak işlem görebilir.

2.2.3 Yorumlar

Sözdizimi:

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çıklamalarıekleyerek açıklama yapılabilir.

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

Karakter çifti ile başlayan ve karakter çifti <#ile biten bir #> . Kaynak satırın bir parçası olarak, bir kaynak satırın tamamı olarak veya herhangi bir sayıda kaynak satırına yayılabilir.

Yorum, beyaz boşluk olarak değerlendirilir.

Yukarıdaki üretimler, ... anlamına gelirler ki

  • Açıklamalar iç içe yerleştirilmez.
  • # ve #<>karakter dizilerinin tek satırlı bir açıklama içinde özel bir anlamı yoktur.
  • # karakterinin sınırlandırılmış bir açıklama içinde özel bir anlamı yoktur.

Sözcük temelli dil bilgisi, açıklamaların belirteçlerin içinde gerçekleşemeyeceğini gösterir.

(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. §A.)

Bir requires-comment, içerdiği betiğin çalışmasına izin verilmesi için karşılanması gereken ölçütleri tanımlar. 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ümdür ve n (isteğe bağlı) ikincil sürümdür.

Herhangi bir betik dosyasında açıklama gerektiren bir bulunabilir; ancak, bir işlev veya cmdlet içinde bulunamaz. Kaynak satırdaki ilk öğe olmalıdır. Bir betik, birden fazla requires-comment içerebilir.

Karakter dizisi yalnızca # veya <#ile başlıyorsa yorum olarak tanınır. Örneğin, hello#there tek bir belirteç olarak kabul edilirken, hello #there belirteç hello'nun ardından tek satırlık bir açıklama olarak kabul edilir. Açıklama başlangıç dizisi, boşlukların ardından geldiği gibi, ifade sonlandırıcı veya deyim sonlandırıcı karakterlerden (örneğin, ), }, ], ', "veya ;) sonra da gelebilir.

Açıklama gerektiren bir requires-comment birleştirici bileşen içinde bulunamaz.

Bir 'in açıklama gerektiren dört başka türü vardır.

#Requires -Assembly AssemblyId
#Requires -Module ModuleName
#Requires -PSSnapin PSSnapin [ -Version *N* [.n] ]
#Requires -ShellId ShellId

2.2.4 Boşluk

Sözdizimi:

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:

Beyaz alan bir veya daha fazla boşluk karakterinden oluşur.

Boşluğun belirteçler için ayırıcı görevi görmesi dışında, göz ardı edilir.

Bazı popüler dillerden farklı olarak, PowerShell satır sonlandırıcı karakterleri (§2.2.2) boşluk olarak değerlendirmez. Bununla birlikte, bir satır sonlandırıcısı hemen önüne bir ters aksan işareti (` (U+0060)) getirilerek boşluk olarak ele alınabilir. Bu, bir satırın içeriği sözdizimsel olarak tam olduğunda gereklidir; ancak, sonraki satır, önceki satırla ilişkilendirilmesi amaçlanan belirteçleri içerir. Mesela

$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, ters tırnak kaynak satırın devam ettiğini gösterir. Aşağıdaki ifade $number = 10 + 20 - 50eşdeğerdir.

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

2.3 Belirteçler

Sözdizimi:

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

Açıklama:

belirteci, PowerShell dilindeki en küçük sözcük temelli öğedir.

Belirteçler yeni satırlarla,açıklamalarla, boşluklarla veya bunların herhangi bir bileşimiyle ayrılabilir.

2.3.1 Anahtar Sözcükler

Sözdizimi:

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ıldığında özel bir anlamı olan karakter dizisidir. Çoğu zaman, bu deyiminde birinci belirteç olarak; ancak dil bilgisi kurallarının gösterdiği gibi başka konumlar da vardır. (Anahtar sözcük gibi görünen ancak anahtar sözcük bağlamında kullanılmayan belirteç, bir komut adı veya bir komut argümanı.)

Anahtar kelimeler class, define, from, usingve var gelecekte kullanılmak üzere ayrılmıştır.

Not

Düzenleyicinin Notu: class ve using anahtar sözcükleri PowerShell 5.0'da kullanıma sunulmuştur. Bkz. about_Classes ve about_Using.

2.3.2 Değişkenleri

Sözdizimi:

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 (§5) içinde ayrıntılı olarak ele alınıyor. $? değişkeni. §2.3.2.2tartışılmaktadır. Kapsamlar §3.5üzerinde ele alınıyor.

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

Değişken adı yazmanın iki yolu vardır: ile başlayan ve ardından bir veya daha fazla neredeyse rastgele karakterden oluşan kıvırcık ayraçlarla sınırlı bir kümeyle tanımlanan $; ve ayrıca ile başlayan, fakat bir kümeli değişken adının izin verdiğinden daha kısıtlayıcı bir karakter kümesinden bir veya daha fazla karakter içeren $. Her sıradan değişken adı, karşılık gelen bir kümeli değişken adı kullanılarak ifade edilebilir.

$totalCost
$Maximum_Count_26

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

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

Bir değişken adının uzunluğu konusunda bir sınır yoktur, değişken adındaki tüm karakterler önemlidir ve büyük/küçük harf ayrıcalığı değil, olarak belirtilmemiştir.

Çeşitli değişken türleri vardır: kullanıcı tanımlı (§2.3.2.1), otomatik (§2.3.2.2) ve tercih (§2.3.2.3). Hepsi aynı kapsamda (§3.5) birlikte bulunabilir.

Aşağıdaki işlev tanımını ve çağrılarını göz önünde bulundurun:

function Get-Power ([long]$Base, [int]$Exponent) { ... }

Get-Power 5 3 # $Base is 5, $Exponent is 3
Get-Power -Exponent 3 -Base 5 # " " "

Her argüman, konum ya da ada göre teker teker geçirilir. Ancak, bir dizi bağımsız değişken, çalışma zamanı ortamı tarafından işlenen bağımsız değişkenlere genişletilen bir grup olarak geçirilebilir. Bu otomatik bağımsız değişken genişletmesi splattingolarak 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 gösterim yalnızca bir komutun argümanında kullanılabilir.

Adlar, her biri bir sanal sürücüde (§3.1) depolanan çeşitli ad alanlarına bölümlenir. Örneğin, değişkenler Variable:üzerinde depolanır, ortam değişkenleri Env:üzerinde depolanır, işlevler Function:üzerinde depolanır ve diğer adlar Alias:üzerinde depolanır. Bu adların tümüne, değişken kapsamıiçinde değişken-ad alanı üretim kullanılarak değişken 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

Bir değişken adının açık Variable: ad alanıyla kullanılması, bu nitelik olmadan aynı değişken adının kullanılmasıyla eşdeğerdir. Örneğin, $v ve $Variable:v değiştirilebilir.

Değişkenler, dilde tanımlandığı gibi New-Variablecmdlet'i tarafından da tanımlanabilir.

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

Dil bilgisi tarafından izin verilen ancak otomatik veya tercih değişkenleri tarafından kullanılmayan değişken adları, kullanıcı tanımlı değişkenler için kullanılabilir.

Kullanıcı tanımlı değişkenler, kullanıcı tanımlı betik 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ılmış betikte okunabilir ancak yazılamaz.

Not

Yinelemeyi azaltmak için başlangıçta bu belgede bulunan tablo kaldırıldı. Otomatik değişkenlerin tam 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. PowerShell çalışma zamanı ortamı tarafından oluşturulup başlatılırlar. Değerleri kullanıcının yazdığı betikte okunabilir ve yazılabilir.

Not

Yinelemeyi azaltmak için başlangıçta bu belgede bulunan tablo kaldırıldı. Tercih değişkenlerinin tam listesi için bkz. about_Preference_Variables.

2.3.3 Komutları

Sözdizimi:

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özdizimi:

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, komuta bir veya daha fazla bağımsız değişken aracılığıyla bilgi aktarılabilir ve bu bilgilerin değerlerine komut içinde karşılık gelen bir dizi parametre aracılığıyla erişilir. Parametreleri bağımsız değişkenlerle eşleştirme işlemi, parametre bağlamaolarak adlandırılır.

Üç tür argüman vardır:

  • Switch parametresi (§8.10.5) -- Bu, first-parameter-char ve parameter-chars'in birlikte, çağrılan komuttaki parametrenin adına (baştaki - olmadan) karşılık gelen anahtar adını oluşturduğu komut-parametresi biçimine sahiptir. Sondaki iki nokta üst üste atlanırsa, bu bağımsız değişkenin varlığı ilgili parametrenin $trueolarak ayarlanması gerektiğini belirtir. Sondaki iki nokta üst üste varsa, hemen ardından gelen bağımsız değişkenin bool türünde bir değer belirtmesi gerekir ve ilgili parametre bu değere ayarlanır. Örneğin, aşağıdaki çağrılar eşdeğerdir:

    Set-MyProcess -Strict
    Set-MyProcess -Strict: $true
    
  • Argümanlı parametre (§8.10.2) -- Bu, komut-parametre formuna sahiptir; burada ilk-parametre-karakteri ve parametre-karakterleri birlikte, çağrılan komuttaki öncüsüz "-" işareti olmadan bir parametre adına karşılık gelen parametre adını oluşturur. Sonda iki nokta olmamalıdır. Hemen sonrasında gelen argüman, ilişkili bir değeri belirtir. Örneğin, Get-Power ve $Baseparametreleri olan $Exponentkomutu verildiğinde, aşağıdaki çağrılar 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ın içerisinde yer alan karşılık gelen parametreler belirli konumlara sahiptir ve bu konumlar, ilki sıfır olan bir numaralandırmaya göre belirlenmiştir. 0 konumundaki bağımsız değişken, 0 konumundaki parametreye bağlıdır; 1. konumdaki bağımsız değişken, 1. konumdaki parametreye bağlıdır; ve benzeri. Örneğin, sırasıyla 0 ve 1 konumlarında Get-Power ve $Base parametreleri olan $Exponentbir komut verüldüğünde, aşağıdaki komut bu komutu çağırır:

    Get-Power 5 3
    

ve --özel parametrelerin ayrıntıları için bkz. --%.

Bir komut çağrıldığında, parametre adı kısaltılabilir; tam adın diğer parametre adlarıyla karışıklığa neden olmayan herhangi bir belirgin başlangıç kısmı kullanılabilir.

Parametre bağlama hakkında bilgi için bkz. §8.14.

2.3.5 Değişmez Değerler

Sözdizimi:

literal:
    integer-literal
    real-literal
    string-literal

2.3.5.1 Sayısal sabitler

İki tür sayısal değişmez değer vardır: tamsayı (§2.3.5.1.1) ve gerçek (§2.3.5.1.2). Her ikisinde de çarpan sonekleri olabilir (§2.3.5.1.3).

2.3.5.1.1 Tamsayı sabitleri

Sözdizimi:

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ı sabitinin türü, değerine, uzun tür sonekinin varlığı veya yokluğuna ve sayısal çarpanın (§2.3.5.1.3) varlığına göre belirlenir.

uzun tip soneki olmayan bir tamsayı dizi için

  • Değeri int türü (§4.2.3) ile gösterilebiliyorsa, bu onun türüdür;
  • Aksi takdirde, değeri long (§4.2.3) türüyle gösterilebilirse, türü bu olur.
  • Aksi takdirde, değeri ondalık türüyle (§2.3.5.1.2) gösterilebilirse, türü bu olur.
  • Aksi takdirde, double türüyle temsil edilir (§2.3.5.1.2).

uzun tür son ekli bir tamsayı sabiti için

  • Değeri long (§4.2.3) türüyle gösterilebilirse, bu türüdür;
  • Aksi takdirde, bu sabit yanlış biçimlendirilmiştir.

Tamsayı değerlerinin ikiyle tümleyen gösteriminde, negatif değer sayısı pozitif değerlerden bir fazladır. Int türü için bu ek değer -2147483648. Uzun tür için bu ek değer -9223372036854775808 değeridir. Belirteç 2147483648 normalde uzun türünde bir değişmez değer olarak kabul edilse de, hemen bir - işlecinden önce gelirse, bu işleç ve değişmez değer, en küçük değere sahip int türünün değişmez değeri olarak kabul edilir. Benzer şekilde, belirteç 9223372036854775808 normalde ondalık türünde gerçek bir değişmez değer olarak kabul edilse de, hemen önünde *unary* - işleci varsa, bu işlemci ve değişmez değer, en küçük değere sahip "long" veri tipinin değişmez değeri olarak kabul edilir.

Bazı tamsayı değişmez değerlerine örnek olarak 123 (int), 123L (uzun) ve 200000000000 (uzun) verilebilir.

Bayt türünde tamsayı sabiti diye bir şey olmaz.

2.3.5.1.2 Gerçek değişmez değerler

Sözdizimi:

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, sayısal çarpan içerebilir (§2.3.5.1.3).

İki tür gerçek değişmez değer vardır: çift ve ondalık. Bunlar, sırasıyla ondalık sonekinyokluğu veya varlığı ile gösterilir. (kayan gerçek değişmez değergibi bir şey yoktur.)

Gerçek sayısal bir sabit, çift türündedir (§4.2.4.1). Sayısal ondalık sabit değeri, ondalık türündedir (§4.2.4.2). Ondalık bir gerçek sayının kesir bölümündeki sondaki sıfırlar önemlidir.

üstel parça'in çift gerçek literaldeki ondalık basamak değeri desteklenen minimum değerden küçükse, bu çift gerçek literalin değeri 0'dır. Desteklenen en düşük değerinden küçükse, bir ondalık gerçek değişmezdeki üstel bölümün'nin ondalık-basamak'ü yanlış biçimlendirilmiştir. üstel bölümün, çift veya ondalık gerçek bir değişmez değerdeki'in ondalık-basamak değeri, desteklenen en yüksek değerden büyükse, bu değişmez değer hatalı biçimlendirilmiş olur.

Çift gerçek sayı örnekleri olarak 1., 1.23, .45e35, 32.e+12 ve 123.456E-231 verilebilir.

Bazı ondalık gerçek değişmez değerlere örnek olarak 1d (ölçek 0), 1,20d (ölçek 2), 1,23450e1d (yani, ölçek 4 olan 12,3450), 1,2345e3d (yani, ölçek 1 olan 1234,5), 1,2345e-1d (yani, ölçek 5 olan 0,12345) ve 1,2345e-3d (yani, ölçek 7 olan 0,0012345).

Not

Çift gerçek değişmez değerin kesir veya üs parçasına sahip olması gerekmediğinden, gruplandırma parantezlerine (123).M ifadesinde ihtiyaç vardır. Bu, değeri 123 olan tamsayı nesnesi için M özelliğinin veya yönteminin seçildiğinden emin olunması içindir. Bu parantezler olmadan gerçek literal yanlış biçimlendirilmiş olur.

Not

PowerShell sonsuzluklar ve NaN'ler için sabitler sağlamasa da, float ve double türlerindeki PositiveInfinity, NegativeInfinity ve NaN statik salt okunur özelliklerinden çift reel türüne benzer sabitler elde edilebilir (§4.2.4.1).

Dilbilgisi kuralları, çift gerçek değişmez değer olarak başlayanların l veya L türü sonek almasına izin verir. Böyle bir belirteç, değeri long türü ile temsil edilen bir tamsayı sabitidir.

Not

Bu özellik, PowerShell'in önceki sürümleriyle geriye dönük uyumluluk için korunmaktadır. Ancak programcıların bu formun tamsayı değişmez değerlerini kullanmaları önerilmez çünkü değişmez değerin gerçek değerini kolayca gizleyebilirler. Örneğin, 1.2L değeri 1, 1.2345e1L değeri 12'dir ve 1.2345e-5L 0 değerine sahiptir; bunların hiçbiri hemen belirgin değildir.

2.3.5.1.3 Çarpan sonekleri

Sözdizimi:

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

Açıklama:

Kolaylık sağlamak için, tamsayı ve gerçel sayılar 10'un yaygın olarak kullanılan kuvvetlerinden birini gösteren sayısal çarpanıiçerebilir. sayısal çarpan büyük veya küçük harflerin herhangi bir bileşiminde yazılabilir.

Çarpan Anlamı Örnek
kilobayt (KB) kilobayt (1024) 1 kb ≡ 1024
mb megabayt (1024 x 1024) 1.30 Dmb ≡ 1.363.148,80
GB gigabayt (1024 x 1024 x 1024) 0x10 Gb ≡ 17179869184
TB terabayt (1024 x 1024 x 1024 x 1024) 1.4e23tb ≡ 1.5393162788864E+35
Pb petabayt (1024 x 1024 x 1024 x 1024 x 1024) 0x12Lpb ≡ 20266198323167232

2.3.5.2 Dize sabitleri

Sözdizimi:

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 sabiti vardır:

  • verbatim-string-literal (tek satırlı tek tırnaklı), bir çift tek tırnak karakteriile belirtilmiş sıfır veya daha fazla karakter dizisidir. Örnek olarak '' ve 'kırmızı' verilebilir.

  • genişletilebilir string literal (tek satırlı çift tırnaklı), çift tırnak karakteriile ayrılmış sıfır veya daha fazla karakter dizisidir. Örnek olarak "" ve "kırmızı" verilebilir.

  • , (çok satırlı tek tırnaklı) olan, sıfır veya daha fazla karakterden oluşan ve sırasıyla iki veya daha fazla kaynak satırında yer alan, @tek tırnak-karakter ve tek tırnak-karakter@ karakter çiftleri tarafından ayrılmış bir karakter dizisidir. Örnekler şunlardır:

    @'
    '@
    
    @'
    line 1
    '@
    
    @'
    line 1
    line 2
    '@
    
  • genişletilebilir-burada-dize-değişmez değeri (çok satırlı çift tırnaklı), sırasıyla iki veya daha fazla kaynak satırda yer alan ve @çift tırnak-karakter ve çift tırnak-karakter@ karakter çiftleriyle sınırlandırılmış sıfır veya daha fazla karakterden oluşan bir dizidir. Örnekler şunlardır:

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

Boşluk karakterleri (yoksayılır) dışında, kelimesiyle verildiği gibi dize değişmezlerive genişletilebilir dize değişmezleriiçin, açılış sınırlayıcı karakter çiftinden sonra aynı kaynak satırında hiçbir karakter gelmemelidir ve kapanış sınırlayıcı karakter çiftinden önce aynı kaynak satırında hiçbir karakter bulunmamalıdır.

harfiyen-burada-dize-değişmez veya genişletilebilir-burada-dize-değişmezgövdesi, açılış sınırlayıcısını izleyen ilk kaynak satırının başında başlar ve kapanış sınırlayıcıdan önceki son kaynak satırının sonunda biter. Ceset boş olabilir. Kapanış sınırlayıcısından önceki son kaynak satırındaki satır sonlandırıcısı, bu literalin gövdesinin bir parçası değildir.

Bu türlerden herhangi birinin sabit değeri dize türüne sahiptir (§4.3.1).

verbatim-string-literal veya genişletilebilir-dize-değişmez-değer’i sınırlamak için kullanılan karakter, bu tür bir dize değişmez değeri içinde, karakteri ard arda iki kez yazarak yer alabilir. Örneğin, 'What''s the time?' ve "I said, ""Hello"".". Ancak, genişletilebilir string değişmez değeriiçinde tek tırnak karakteri özel bir anlam taşımaz ve verbatim string değişmez değeriiçinde çift tırnak karakteri özel bir anlam taşımaz.

Genişletilebilir dizgi değişmez değeri ve genişletilebilir burada-dizgi değişmez değeri, kaçış karakterleriiçerebilir (§2.3.7). Örneğin, aşağıdaki dize sabiti işlem hattına yazıldığında, sonuç aşağıdaki gibi olur:

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

Bir genişletilebilir-dize-değişmez değeri veya genişletilebilir-burada-dize-değişmez değeri bir değişkenin adını içeriyorsa, bu ad hemen bir kaçış karakterinden önce gelmediği sürece, değişkenin değerinin dize gösterimiyle değiştirilir (§6.7). Bu, değişken değiştirmeolarak bilinir.

Not

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

Örneğin, kaynak kodu

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

genişletilebilir-dize-değişmez-değer sonuç verir

The value of $count is 10.

Aşağıdakileri göz önünde bulundurun:

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

Sonuç şu şekildedir:

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

genişletilebilir-dize-değişmez-değerve genişletilebilir-burada-dize-değişmez değeri, form metnini alt ifade (§7.1.6) olarak işleyerekalt ifade genişletme olarak adlandırılan bir değiştirme türünü de destekler. Bu tür metin, bu ifadenin değerinin dize gösterimiyle değiştirilir (§6.8). alt ifadesi içindeki belirteçleri ayırmak için kullanılan tüm boşluklar,'in deyim listesi, sonuç dizesi oluşturulurken göz ardı edilir.

Örnekler,

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

aşağıdaki genişletilebilir ifadesonucunu doğurur:

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 değişmez değerisonuç verir:

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

Bu dört satır aşağıdaki gibi daha kısa 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) " })"

elde edilen genişletilebilir-dize-değişmez-değer 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 açılımı içeren dize sabitlerini içerebilir. Ayrıca, iç genişletilebilir dizge değişmez değerisınırlayıcılarının kaçılması gerekmediğini unutmayın, çünkü bir alt ifade içinde yer almaları, dış genişletilebilir dizge değişmez değeriiçin sonlandırıcı olamayacakları anlamına gelir.

Değişken değiştirme veya alt ifade genişletmesi içeren bir genişletilebilir-dize-değişmez-değer veya genişletilebilir-burada-dize-değişmez-değer, her kullanıldığında değerlendirilir; mesela

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

Bunun sonucunda genişletilebilir-dize sabitiile sonuçlanır.

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

verbatim-here-string-literal içeriği, gövde içindeki baştaki veya sondaki boşluklar da dahil olmak üzere ayrıntılı olarak alınır. Bu nedenle, katıştırılmış tek tırnak karakteriiki katına çıkarılmasına gerek yok ve ikame veya genişletme yapılmaz. Mesela

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

bunun sonucu olarak sözcüksel olarak ortaya çıkan

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

genişletilebilir-burada-dize-değişmez-değer içeriği değiştirme ve genişletmeye tabidir, ancak gövde içinde fakat herhangi bir alt ifadelerin dışında yer alan baştaki veya sondaki boşluklar olduğu gibi alınır ve ekli çift tırnak-karakterlerin iki kez yazılması gerekmez. Mesela

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

genişletildiğinde aşağıdaki literal değerle sonuçlanan:

That's it!
2 * 3 = 6

Hem verbatim-here-string-literallar hem de genişletilebilir-here-string-literallar için, gövdedeki her satır sonu karakteri uygulama tarafından tanımlandığı şekilde sonuçta elde edilen değişmez değerle temsil edilir. Örneğin, şurada:

$lit = @"
abc
xyz
"@

gövdenin ikinci satırında öndeki iki boşluk vardır ve gövdenin birinci ve ikinci satırları satır sonlandırıcılarına sahiptir; ancak, gövdenin ikinci satırı için sonlandırıcı o gövdenin parçası değildir. Sonuçta elde edilen sabit şu değerle eşdeğerdir: "abc<implementation-defined character sequence>xyz".

Not

Kaynak kodunun okunabilirliğini artırmak amacıyla, satır sonlandırıcıları eklenmeden uzun dize sabitleri birden fazla kaynak satırına dağıtılabilir. Bu işlem, her bölümü ayrı bir değişmez değer olarak yazıp parçaları + işleciyle (§7.7.2) birleştirerek yapılır. Bu işleç, işlenenlerinin dört tür metin sabitinden herhangi birini belirlemesine olanak tanır.

Not

Karakter sabit değeri gibi bir şey olmasa da, aynı etki 1 karakterlik dizedeki ilk karaktere şu şekilde erişilerek elde edilebilir: [char]"A" veya "A"[0].

verbatim-here-string-literals ve expandable-here-string-literals için, metin içindeki her satır sonlandırıcısı aynen verildiği gibi temsil edilir.

2.3.5.3 Null sabit

$null (§2.3.2.2) otomatik değişkenine bakın.

2.3.5.4 Boole değişmez değerleri

$false ve $true (§2.3.2.2) otomatik değişkenlerine bakın.

2.3.5.5 Dizi Sabitleri

PowerShell dizi türündeki (§9) ifadelerin birli virgül işleci (§7.2.1) kullanılarak yazılmasına izin verir dizi-ifade (§7.1.7), ikili virgül işleci (§7.3) ve aralık işleci (§7.4).

2.3.5.6 Hash sabitleri

PowerShell, Hashtable (§10) türündeki ifadelerin hash-literal-expression (§7.1.9) kullanılarak yazılmasını sağlar

2.3.5.7 Tür adları

Sözdizimi:

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 İşleçler ve noktalama işaretleri

Sözdizimi:

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 Notu: && ve || işlem hattı zinciri işleçleri PowerShell 7'de kullanıma sunulmuştur. bkz. about_Pipeline_Chain_Operators.

Bir işleçte tire izleyen ad, yalnızca işleç bağlamında bu amaçla ayrılmıştır.

tire ile başlayan işleç, bu tire ve ardından gelen belirteç arasında boşluk bulunmamalıdır.

2.3.7 Kaçış karakterleri

Sözdizimi:

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

Açıklama:

Kaçış karakteri, bir karaktere özel bir yorum atamak için Backtick karakteri (U+0060) ön eki verilerek kullanılan bir yöntemdir. Aşağıdaki tablo, her bir kaçış karakterininanlamını göstermektedir.

Kaçış Karakteri Anlam
`a Uyarı (U+0007)
`b Backspace (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 x yukarıda gösterilen karakterlerden farklı bir karakterse, ters köşe karakteri yoksayılır ve x tam anlamıyla alınır.

Yukarıdaki tablodaki son girişin anlamı, normalde belirteçleri ayıracak olan boşlukların, belirtecin bir parçası haline getirilebileceğidir. Örneğin, boşluk içeren bir dosya adı Test` Data.txt ('Test Data.txt' veya "Test Data.txt") olarak yazılabilir.