poewrshellの配列/リストの使い方まとめ

zenn.dev

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")