PowerShellまとめ

基本操作

比較演算子

PowerShellC/C++意味
-eq==10 -eq $aaは10と等しい
-ne!=10 -ne $aaは10と等しくない
-gt>10 -gt $a10はaより大きい/aは10より小さい
aが~9→true、10~→false
-ge>=10 -ge $a10はa以上/aは10以下
aが~10→true、11~→false
-lt<10 -lt $a10はaより小さい/aは10より大きい
aが~9→false、10~→true
-le<=10 -le $a10はa以上/aは10以下
aが~10→false、11~→true

算出演算子

PowerShellC/C++意味
-and&&AND
-or||OR
-not/!!NOT

複数の条件式をスマートに記述する

同じ変数に対して、複数条件で判定し「-or」が長く続くことがあります。
そんな際に配列を使用してスマートに記述できる便利な方法があります。

# 長い複数条件
if(("りんご" -eq $a) -or ("いちご" -eq $a) -or ("ぶどう" -eq $a) -or ...)

# 配列
$fruit_japanese = @("りんご","いちご","ぶどう","もも")
$fruit_english = @("apple","strawberry","grape","peach")

# 複数条件の判定(-inバージョン)
if($a -in $fruit_japanese)

# 複数条件の判定(-containsバージョン)
if($fruit_english -ccontains $a) # 大文字小文字を区別したい場合は「c」をつけます

「-in」「-contains」の違いは変数が右に来るか左に来るかです。
文字列の比較でアルファベットの大文字と小文字を区別(完全一致)するには「-cin」「-ccontains」とするようにしてください 。

条件式

条件式
1以上10以下(1 -lt $a) -and (10 -ge $a)

入出力

$a = Read-Host "入力"
Write-Host "出力:${a}"
Write-Output "Hello World !!" | Get-Member #オブジェクトを|でコマンドに渡す

定数

定数は途中で値が書き換わらないように、読み取り専用で宣言します。
宣言された定数に別の値を代入しようとするとエラーとなります。

set-variable -name str -value "test1" -option constant

$str = "test2" # エラー
#変数 str は読み取り専用または定数であるため、上書きできません。

配列(宣言)

$ary = @()
[Array]$ary = @()

配列(1次元)

$ary1 = @("TEST1","TEST2","test3")
[Array]$ary2 = @(1,2,3,4,5)

#要素の追加
$ary1 += "d"

# 要素数
$ary2.Length # 5

# 出力
$ary1[1] # TEST2
$ary2[4] # 5

配列(2次元)

$ary = @(@("a","b","c"),@("x","y","z"))

#要素の追加
$ary += ,[array]@(0,1,2)
$ary += ,[array]@(3,4,5)

# 要素数
$ary.Length # 4
$ary[0].Length # 3

# 出力
$ary[2][1] # 1
[0][1][2]
[0][0][0]
a
[0][1]
b
[0][2]
c
[1][1][0]
x
[1][1]
y
[1][2]
z
[2][2][0]
0
[2][1]
1
[2][2]
2
[3][3][0]
3
[3][1]
4
[3][2]
5

正規表現

正規表現意味
^[0-9]先頭文字半角数字true→1,123,1abc
\d$末尾文字数字

例外処理

try-catch

try{
    # 例外が発生する可能性がある処理
}
catch{
    # 例外発生時の処理
}
finally{
    # 例外が発生してもしなくても行う処理
}

値渡しと参照渡し

値渡し

関数では引数を受け取る際、値のコピーを受け取ります。
関数内でその値を変更したとしても、関数の外に出たときには消えてしまい反映されません。
関数で変数の値を変更したい場合は参照渡しを使用します。

# 関数の外に出ると代入した値は消えてしまう
function byVal($arg){
    $arg = "Good Bye"
    Write-Host "in Function : $arg" # Good Bye
}
$a = "Hello"
byVal $a      # 値渡し
$a            # Hello

参照渡し

関数内で値を変更するには、[ref]型と「.Value」を使用します。

function byRef([ref]$arg){
    # Valueプロパティにアクセスし値を代入できる
    $arg.Value = "Good Bye"
    Write-Host "in Function : $($arg.Value)" # Good Bye
}
$a = "Hello"
byRef([ref]$a) # 領域を渡す
$a             # Good Bye

コメント

タイトルとURLをコピーしました