Powershellの配列
参考記事
この記事は以下の書籍を参考に執筆されました。 詳しい内容の確認はこちらからお願いいたします。
配列の宣言
配列の基本的な宣言方法
powershellにおけるベーシックな配列は,区切りで文字列を並べたものである。
サンプルコード
$myArray = 1,2,"Hello World" $myArray
実行結果
1, 2, Hello World
@(アットマーク)を用いた配列の宣言、書き方
@と()の中に,区切りで要素を並べることでも配列の宣言は可能
$jagged = @(1,2,3,4)
アクセスする際は[]で何番目の要素にアクセスしたいか指定する
添字は0始まりであるので
$jagged[1]
実行結果
2
固定長配列の宣言、書き方
固定長配列の宣言はNew-Object演算子で型と大括弧を宣言した後、配列の大きさを宣言する。 (固定長と言いながら要素が追加できるのはのちで説明する。)
$myArray = New-Object string[] 10
サンプルコード
$myArray = New-Object string[] 10 $myArray[5] = "Hello" $myArray[5]
実行結果
Hello
宣言なしに代入することも可能
poewrshellでは宣言なしに配列を定義して代入することも可能。 例えばGet-Processコマンドはプロセスを配列状で返すので
$myArray = Get-Process
このように、Get-Processによる配列をいきなり代入することも可能である。
配列の要素の追加
Powershellでは固定長の長さの配列にも要素を追加することができる。
配列に要素を追加するには+=
を使用する。
$myArray += "wednesday"
配列のスライス
配列の範囲を指定してアクセスする場合はスライスと呼ばれる仕組みを使う。
サンプル
$myArray = 1,2,"Hello World",4,5,6,7 $myArray[1..2 + 0]
実行例
2 Hello World 1
配列の合計値
配列の合計値はForeach-Objectコマンドを使える。
$myArray = 1,2,3 $sum = 0 $myArray | Foreach-Object { $sum += $_ } $sum
実行結果
6
配列の並び替え
配列の並び替えにはSort-Objectを使う
Get-ChildItem | Sort-Object -Descending Length | Select Name,Length
実行例
Name Length
Convert-TextObject.ps1 6868 Connect-WebService.ps1 4178 Select-FilteredObject.ps1 3252 Get-PageUrls.ps1 2878 Get-Characteristics.ps1 2515 Get-Answer.ps1 1890 New-GenericObject.ps1 1490 Invoke-CmdScript.ps1 1313
配列にある値が含まれているかどうか知りたい
-contains 演算子を使いましょう
"Hello","World" -contains "Hello" "Hello","World" -contains "There"
実行結果
true false
二つの配列を結合したい
+演算子で配列同士をくっつけることができる。
$firstArray = "Element 1","Element 2","Element 3","Element 4" $secondArray = 1,2,3,4 $result = $firstArray + $secondArray echo "以下が実行結果" $result
実行結果
以下が実行結果 Element 1 Element 2 Element 3 Element 4 1 2 3 4
powershellの多次元配列の宣言、書き方
ジャグ配列の宣言は@を使ってのみ達成可能
$jagged = @( (1,2,3,4), (5,6,7,8) ) $jagged[0][1] $jagged[1][3]
実行結果
2 8
参考記事
この記事は以下の書籍を参考に執筆されました。 詳しい内容の確認はこちらからお願いいたします。
可変なサイズの配列をpowershellで使いたい(リスト)
ここまでの配列の書き方は全て配列の大きさが変わらない前提!
可変なサイズの配列をpowershellで使いたい(リスト)
可変な配列は「System.Collections.ArrayList」を使う
サンプル1
$myArray = New-Object System.Collections.ArrayList [void] $myArray.Add("Hello") [void] $myArray.AddRange( ("World","How","Are","You") ) $myArray
サンプル2
[System.Collections.ArrayList]$myArray = [System.Collections.ArrayList]::new(); [void] $myArray.Add("Hello") [void] $myArray.AddRange( ("World","How","Are","You") ) $myArray
実行結果
Hello World How Are You
System.Collections.ArrayListの特徴:型の指定がない
Listの特徴としては、型の指定がないという点があげられます。 例えば次のようなintとstringが混ざったリストを作り出すことも可能です。
$myArray = New-Object System.Collections.ArrayList $myArray.Add("Hello") $myArray.AddRange( (1234, "How", 1234,"You") ) $myArray.Count
リストに要素を追加したい
配列への要素の追加はAdd
を使用しましょう。
$Months = New-Object System.Collections.ArrayList $Months.IsFixedSize $Months.Add("Jan") $Months.Add("Feb") $Months.Add("Mar") $Months
配列から要素を取り除きたい
RemoveAtコマンドを使用して要素を取り除ける
$myArray.RemoveAt(1) $myArray
実行結果
Hello How Are You
リストの中身の長さを取得したい
長さを取得するにはCountプロパティを使う
$myArray = New-Object System.Collections.ArrayList $myArray.Add("Hello") $myArray.AddRange( ("World","How","Are","You") ) $myArray.Count
実行結果
5
title:poewrshellのリストの書き方 description:powershell入門。今回は標準搭載している配列の書き方から可変な長さのリストについて、誰にでもわかるように解説します。 img:https://cdn.slidesharecdn.com/ss_thumbnails/windows-powershell-cookbook-the-complete-guide-to-scripting-microsofts-command-shell-190312151315-thumbnail-4.jpg?cb=1552403608 category_script:page_name.startswith("1")