2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VBSからPowerShellへ (5)プロシージャと関数

Last updated at Posted at 2019-06-01

##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]

2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?