##PowerShellでは関数の定義は呼び出す前に
VBSで書かれたプログラムをPowerShellに置き換える場合、Functionプロシージャについては関数の定義として以下のようになる。
この際に、PowerShellでは関数を先に定義しないと実行時にエラーになる。
'VBSの例
dim i
i =0
val = valSet(i)
・・・
Function valSet(num)
valSet = num + 1
End Function
#PowerShellの例
function valSet($num){
$valNum = $num + 1
return $valNum
}
$i = 0
val = valSet $i
・・・
##Subプロシージャを置き換える場合は戻り値を破棄
ただし、Subプロシージャを関数の定義として置き換える場合は、PowerShellではreturnなしでも関数内で出力された全ての値を返すようになっているため、呼び出しの際に「 | Out-Null」を付与するなどの方法で戻り値を破棄する必要がある。
'VBSの例
dim i
i =0
call valSet2(i)
Sub valSet2(num)
dim val2
val2 =0
val2 = num + 1
・・・
End Sub
#PowerShellの例
function valSet2($num){
$val2 = 0
$val2 = $num + 1
・・・
}
$i = 0
valSet2 $i | Out-Null
・参考にさせていただいたページ
PowerShell:スクリプトでの関数と呼び出し元の書く順序
[https://yaplog.jp/consadole_spo/archive/109]
PowerShell関数
[http://capm-network.com/?tag=PowerShell%E9%96%A2%E6%95%B0]