Powershell 使用物件與資料結構 (Array, Hash)
2021-07-21
筆記 Powershell 的基礎知識,關於如何使用物件與資料結構,包含 Array 陣列以及 Hash 雜湊表。
Array
類似 Python 的 List 或是 JavaScript 的 Array 對於 Element 的 Type 極具彈性。
$array = (1, 3, 5, "egg", "ham", "spam")
Array 的 Index 如同程式語言常見的規則,從 0 開始計數。
Index | Value |
---|---|
0 | 1 |
1 | 3 |
2 | 5 |
3 | egg |
4 | ham |
5 | spam |
Get Element
$array[3]
# egg
$array[2..4]
# 5, egg, ham
$array[1,3]
# 3, egg
Set Element
$array[5] = 'maps'
Add Element
因為 Array 是 Immutable,因此 Add 實際上是重新產生一份 Array ,會有執行效能上的影響。
$array.count
# 5
$array = $array += 'new'
$array.count
# 6
Remove Element
因為 Array 是 Immutable 沒有直接的操作方式,只能用 Range Operator
來處理。
# Unshift First Element
$array[1..$array.Length]
# Pop Last Element
$array[0..($array.Length - 2)]
Loop Over Elements
有多種方式可以迭代 Array,包含 Foreach-Object、ForEach Method 以及 foreach Syntax。
$array | % { $_ }
$array.ForEach({ $_ })
foreach ($e in $array)
{
"$e"
}
Contains, In
檢查 Array 之中是否包含特定的 Element。
$array.Contains('egg')
# True
Hash
類似 Python 的 Dictionary 或是 JavaScript 的 Object,Key-Value Pair 的資料夾結構。
$hash = @{ Name = 'Farfetch''d '; PokeType = 'Normal'; Weight = 33.1; }
Get Value By Key
$hash['Name']
# Farfetch'd
Get Keys / Values
$hash.Keys
$hash.Values
Add Element
$hash.Add('Category', 'Wild Duck')
或是更直覺的方式 🙂
$hash['Category'] = 'Wild Duck'
Remove Element
$hash.remvoe('Weight')
Loop Over Elements
無法直接 Loop Over Hash,必須要透過 GetEnumerator 來進行內容的迭代。
$hash.GetEnumerator() | % {$_.key + ' : ' + $_.value}
Clear Hash
$hash.clear()