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.
Editoryal notu
Önemli
Windows PowerShell Dil Belirtimi 3.0 Aralık 2012'de yayımlanmıştır ve Windows PowerShell 3.0'ı temel alır. Bu belirtim PowerShell'in geçerli durumunu yansıtmaz. Bu belgeleri geçerli durumu yansıtacak şekilde güncelleştirme planı yoktur. Bu belgeler, geçmişe yönelik başvuru için burada sunulmuştur.
Belirtim belgesi, Şu konumdaki Microsoft İndirme Merkezi'nden bir Microsoft Word belgesi olarak kullanılabilir: https://www.microsoft.com/download/details.aspx?id=36389 Bu Word belgesi burada Microsoft Learn'de sunu için dönüştürülmüştür. Dönüştürme sırasında, Docs platformu için biçimlendirmeye uyum sağlamak için bazı editoryal değişiklikler yapılmıştır. Bazı yazım hataları ve küçük hatalar düzeltildi.
9.1 Giriş
PowerShell, her boyutunsıfır veya daha fazla [] (§7.1.4) aracılığıyla erişilebilir. Dizideki boyut sayısı,
Bir öğe, dizi türü de dahil olmak üzere herhangi bir türde değer içerebilir. Değerleri herhangi bir dizi türünde olan bir veya daha fazla öğeye sahip bir dizi,
Çok boyutlu diziler, birincil satır sırasına göre depolanır. Dizideki öğelerin sayısı, dizi oluşturulduğunda sabit olandizinin A[0], A[1], ..., A[N-1]ifadeleri kullanılarak erişilebilir. B 2 boyutlu bir dizideki öğelere M satırlarına sahip ve her satırda N sütunları bulunan öğelere B[0,0], B[0,1], ..., B[0,N-1], B[1,0], B[1,1], ..., B[1,N-1], ..., B[M-1,0], B[M-1,1], ..., B[M-1,N-1]ifadeleri kullanılarak erişilebilir.
Üç veya daha fazla boyuta sahip diziler için de böyle devam eder.
Varsayılan olarak, dizi polimorfik
$items = 10,"blue",12.54e3,16.30D # 1-D array of length 4
$items[1] = -2.345
$items[2] = "green"
$a = New-Object 'object[,]' 2,2 # 2-D array of length 4
$a[0,0] = 10
$a[0,1] = $false
$a[1,0] = "red"
$a[1,1] = $null
1 boyutlu bir dizi türü type[], 2 boyutlu dizi türü type[,], 3 boyutlu dizi türü type[,,], vb. vardır; burada tür kısıtlanmamış bir tür dizisinin nesnesidir veya kısıtlanmış bir dizi için kısıtlanmış türdür (§9.4).
Tüm dizi türleri Dizi (§4.3.2) türünden türetilir.
9.2 Dizi oluşturma
Bir dizi, şu formlardaki dizi oluşturma ifadesiaracılığıyla oluşturulur: tekli virgül işleci (§7.2.1),dizi-ifade (§7.1.7), ikili virgül işleci (§7.3), aralık işleci (§7.4) veya New-Object cmdlet'i.
Dizi oluşturma ve kullanımına bazı örnekler aşağıda verilmiştir:
$values = 10, 20, 30
for ($i = 0; $i -lt $values.Length; ++$i) {
"`$values[$i] = $($values[$i])"
}
$x = , 10 # x refers to an array of length 1
$x = @(10) # x refers to an array of length 1
$x = @() # x refers to an array of length 0
$a = New-Object 'object[,]' 2, 2 # create a 2x2 array of anything
$a[0, 0] = 10 # set to an int value
$a[0, 1] = $false # set to a boolean value
$a[1, 0] = "red" # set to a string value
$a[1, 1] = 10.50D # set to a decimal value
foreach ($e in $a) { # enumerate over the whole array
$e
}
İşlem hattına aşağıdakiler yazılır:
$values[0] = 10
$values[1] = 20
$values[2] = 30
10
False
red
10.50
Açıkça başlatılmayan herhangi bir öğenin varsayılan başlangıç değeri, bu öğenin türü için varsayılan değerdir (yani, $false, sıfır veya $null).
9.3 Dizi birleştirme
Rastgele tür ve uzunluk dizileri, + ve += işleçleri aracılığıyla birleştirilebilir ve her ikisi de yeni bir kısıtlanmamış 1 boyutlu dizi oluşturulmasına neden olur. Mevcut diziler değiştirilmez. Daha fazla bilgi için bkz. §7.7.3 ve kısıtlanmış tür dizisine ekleme tartışması için §9.4.
9.4 Öğe türlerini kısıtlama
Dizi oluşturma ifadesinin önüne dizi türü ataması eklenerek türü kısıtlanacak şekilde 1 boyutlu bir dizi oluşturulabilir. Örneğin
$a = [int[]](1,2,3,4) # constrained to int
$a[1] = "abc" # implementation-defined behavior
$a += 1.23 # new array is unconstrained
Çok boyutlu dizi oluşturmak için söz dizimi bir türün belirtimini gerektirir ve bu tür bu dizi için kısıtlama türü olur. Ancak, türü object[]belirterek, herhangi bir türün değeri bu tür bir dizinin öğesine atanabileceği için gerçekten bir kısıtlama yoktur.
İki diziyi (§7.7.3) birleştirmek, her iki dizi de aynı türle kısıtlanmış olsa bile her zaman kısıtlanmamış yeni bir diziyle sonuçlanır. Örneğin
$a = [int[]](1,2,3) # constrained to int
$b = [int[]](10,20) # constrained to int
$c = $a + $b # constraint not preserved
$c = [int[]]($a + $b) # result explicitly constrained to int
9.5 Referans türü olarak diziler
Dizi türleri başvuru türleri olduğundan, herhangi bir derece, uzunluk ve öğe türündeki herhangi bir diziye başvurmak için diziyi gösteren bir değişken oluşturulabilir. Örneğin
$a = 10,20 # $a refers to an array of length 2
$a = 10,20,30 # $a refers to a different array, of length 3
$a = "red",10.6 # $a refers to a different array, of length 2
$a = New-Object 'int[,]' 2,3 # $a refers to an array of rank 2
Dizi ataması sığ bir kopya içerir; başka bir ifadeyle, atanan değişken aynı diziye başvurur, dizinin bir kopyası yapılmaz. Örneğin
$a = 10,20,30
">$a<"
$b = $a # make $b refer to the same array as $a
">$b<"
$a[0] = 6 # change value of [0] via $a
">$a<"
">$b<" # change is reflected in $b
$b += 40 # make $b refer to a new array
$a[0] = 8 # change value of [0] via $a
">$a<"
">$b<" # change is not reflected in $b
İşlem hattına aşağıdakiler yazılır:
>10 20 30<
>10 20 30<
>6 20 30<
>6 20 30<
>8 20 30<
>6 20 30 40<
9.6 Dizi öğeleri olarak diziler
Bir dizinin herhangi bir öğesi bir dizi olabilir. Örneğin
$colors = "red", "blue", "green"
$list = $colors, (,7), (1.2, "yes") # parens in (,7) are redundant; they
# are intended to aid readability
"`$list refers to an array of length $($list.Length)"
">$($list[1][0])<"
">$($list[2][1])<"
İşlem hattına aşağıdakiler yazılır:
$list refers to an array of length 3
>7<
>yes<
$list[1], gösterildiği gibi, $list[1][0]aracılığıyla erişilen 7 tamsayıdan oluşan 1 elemanlı bir diziye başvurur. Bunun yerine aşağıdaki ince farklarla farklı olan durumu karşılaştırın.
$list = $colors, 7, (1.2, "yes") # 7 has no prefix comma
">$($list[1])<"
Burada, $list[1], $list[1]aracılığıyla erişilen, skaler olan tamsayı 7'yi ifade eder.
Aşağıdaki örneği göz önünde bulundurun:
$x = [string[]]("red","green")
$y = 12.5, $true, "blue"
$a = New-Object 'object[,]' 2,2
$a[0,0] = $x # element is an array of 2 strings
$a[0,1] = 20 # element is an int
$a[1,0] = $y # element is an array of 3 objects
$a[1,1] = [int[]](92,93) # element is an array of 2 ints
9.7 Negatif indisleme
Bu, §7.1.4.1içinde tartışılmıştır.
9.8 Sınır denetimi
Bu, §7.1.4.1içinde tartışılmıştır.
9.9 Dizi dilimleri
dizi dilimi, öğeleri bir koleksiyondan sıfır veya daha fazla öğe kopyası olan kısıtlanmamış 1 boyutlu bir dizidir.
[] dizimleme işleci (§7.1.4.5) aracılığıyla bir dizi dilimi oluşturulur.
9.10 Dizi kopyalama
Bitişik öğe kümesi, [array]::Copyyöntemi kullanılarak bir diziden diğerine kopyalanabilir. Örneğin
$a = [int[]](10,20,30)
$b = [int[]](0,1,2,3,4,5)
[array]::Copy($a, $b, 2) # $a[0]->$b[0],
$a[1]->$b[1]
[array]::Copy($a, 1, $b, 3, 2) # $a[1]->$b[3],
$a[2]->$b[4]
9.11 Bir dizi üzerinde numaralandırma
Alt simge işleci aracılığıyla öğelerinin her birine erişen bir dizide döngü yapmak mümkün olsa da, foreach deyimini kullanarak bu dizinin öğelerini numaralandırabiliriz. Çok boyutlu bir dizi için, öğeler satır ana sırasına göre işlenir. Örneğin
$a = 10, 53, 16, -43
foreach ($elem in $a) {
# do something with element via $elem
}
foreach ($elem in -5..5) {
# do something with element via $elem
}
$a = New-Object 'int[,]' 3, 2
foreach ($elem in $a) {
# do something with element via $elem
}
9.12 Çok boyutlu dizi düzleştirme
Çok boyutlu bir dizideki bazı işlemler (çoğaltma (
Aşağıdaki örneği göz önünde bulundurun:
$a = "red",$true
$b = (New-Object 'int[,]' 2,2)
$b[0,0] = 10
$b[0,1] = 20
$b[1,0] = 30
$b[1,1] = 40
$c = $a + $b
$c tarafından belirlenen dizi "kırmızı", $true, 10, 20, 30 ve 40 öğelerini içerir.
PowerShell