初めに
PowerShellの配列は要素を追加することが難しいのでC#などで使われるList<T>を試してみたいと思います。
Namespaceの指定
以下のサンプルは事前にネームスペースを指定した状態で実行しています。
using namespace System.Collections.Generic文字列のList
Listの要素にstring(文字列)を指定してみます。
初期化
$strings = [List[string]]::new()追加
$strings.Add("a")
$strings.Add("b")
$strings.Add("c")PowerShellの配列では追加が出来ませんでした。
削除
$strings.RemoveAt(1)追加と同様に削除も出来ませんでしたが、Listでは出来ました。
インデックスを指定し変更
$strings[1] = "C"インデックスを指定し参照
Write-Host $strings[1]
# C件数を取得
Write-Host $strings.Count
# 2ForEach-Objectによるループ
$strings | ForEach-Object { Write-Host $_ }
# a
# CSort-Objectによる並べ替え(降順)
$strings | Sort-Object -Descending
# C
# aインデックスに-1
Write-Host ("-1:{0}" -f $strings[-1])
# -1:C末尾の要素
スライス
Write-Host $strings[0..1]
# a C配列をクリア
$strings.Clear()
Write-Host $string.Count
# 0PSCustomObjectのList
PowerShellで汎用的に使われるPSCustomObjectを要素にしたListを試します。
初期化
$objects = [List[PSCustomObject]]::new()配列からListへ要素を追加
@([PSCustomObject]@{
    Name = "A"
    Value = 1
},
[PSCustomObject]@{
    Name = "B"
    Value = 2
},
[PSCustomObject]@{
    Name = "C"
    Value = 3
},[PSCustomObject]@{
    Name = "D"
    Value = 4
}) | % { $objects.Add($_)}
本当は初期化で実施したいのですが、方法を見つけられませんでした。
Select-Objectによる項目の追加
$objects | Select-Object -Property Name, Value, @{label = "Dobule";expression = {$_.Value * 2}}
#Name Value Dobule
#---- ----- ------
#A        1      2
#B        2      4
#C        3      6
#D        4      8
Selectなのに項目が増やせてしまいます。
Where-Objectによる絞り込み
$objects | Where-Object { $_.Value -lt 3 }
#Name Value
#---- -----
#A        1
#B        2Sort-Objectによる並べ替え
$objects | Sort-Object -Property Value -Descending
#Name Value
#---- -----
#D        4
#C        3
#B        2
#A        1最後に
PowerShellの配列と初期化の方法が異なるだけで、ほぼ同じ処理が出来ることが確認できました。
 
  
  
  
  

コメント