Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 - 50
eş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
, using
ve 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
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$true
olarak 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$Base
parametreleri olan$Exponent
komutu 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$Exponent
bir 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 (
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
"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
Ö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.
PowerShell