PowerShellの配列

powershell コンピュータ
powershell
PowerShellの配列の初期化方法を忘れてしまいがちです。
よく使う事例と合わせてまとめてみました。

要素に追加できる型

基本的に何でも要素にできるようです。文字列と数値を混在させることもできますし、オブジェクト型を要素にすることもできます。
混在させるかどうかはケースバイケースですが、基本的に混在させないほうが吉

配列の定義と初期化

要素無しで初期化

$array = @()

文字列で初期化

$array = @("A", "B")
$array = @("A"; "B")

区切り文字は,または;
ということはスクリプト(.ps1)であれば改行もいけるはず。

$array = @(
    'aaa'
    'bbb'
)

配列の要素数を取得

$array.Length
$array.Count

配列の要素を取得

n番目の要素にアクセス。

0番目の要素にアクセス。

$array[0]

すべての要素にアクセスするサンプル1

forを使った例

for($i=0;$i < $array.Length;$i++)
{
  $array[$i]
}

要素の取得だけではなく代入もできます。インデックスが必要です。

すべての要素にアクセスするサンプル2

PowerShellらしくForeach-Objectコマンドレットを使った例

$array | Foreach-Object { $_ }

シンプルに各要素を取得することはできますが、代入はできないはず。

配列のスライス

PowerShell配列を連番で初期化とスライス
スクリプトで連番の配列を使う場面があります。個人的にはforで変数を最大値になるまで加算するループを連番の配列をforeachで回すような記述に置き換えると、変数の加算や終了条件を省略できるのでのループ処理をシンプルにすることが出来ます。 ...

配列に要素が存在するか確認

$array.Contains("A")

配列の要素のインデックスを取得

$array.IndexOf("1")

存在しない場合-1が返る

配列の要素を末尾に追加

$array += "C"

配列同士の結合

$array3 = $array + $array2

新しい配列を作成

配列の要素を先頭に追加

結合を使って疑似的に

$array = @("D") + $array

配列の要素を削除

スライスと結合を使って疑似的に要素を削除(配列の再作成)

$array = $array[0..1] + $array[3..4]


Foreach-Objectを使って疑似的に要素を削除(配列の再作成)

$array = $array | Foreach-Object -begin{$i=0} -process { if($i -ne 2){$_}; $i++ }

 

配列の要素の並べ替え

$array = $array | sort

配列をテキストファイルとして保存

$array | Out-File array.txt
$array | Set-Content array.txt

テキストファイルから配列を生成

$array = Get-Content array.txt

コメント