〇 環境
・Windows 10 Pro
・VSCode 1.42.1
・PowerShell Core 7.0.0
〇 サンプル
$queue = New-Object System.Collections.Queue
function Add-Queue([String]$item){
$queue.Enqueue($item)
return $item
}
function New-Test([String]$foo, [String]$var, [String]$val){
Add-Queue $foo
Add-Queue $var
Add-Queue $val
return $queue.Count
}
New-Test "hoge" "fuga" "gaha"
〇 期待した挙動
3
〇 実際の挙動
hoge
fuga
gaha
3
〇 解決策
・返値を返す関数を呼び出した後に “| Out-Null” を挿入
〇 修正後のサンプル
$queue = New-Object System.Collections.Queue
function Add-Queue([String]$item){
$queue.Enqueue($item)
return $item
}
function New-Test([String]$foo, [String]$var, [String]$val){
Add-Queue $foo | Out-Null
Add-Queue $var | Out-Null
Add-Queue $val | Out-Null
return $queue.Count
}
New-Test "hoge" "fuga" "gaha"
〇 ディスカッション
・単にゴミを返さないだけであればいろいろあるのですが、powershell の文法チェックに引っ掛かります。
ex. 1)
$hoge = Add-Queue $foo
警告内容 : The variable ‘hoge’ is assigned but never[void] Add-Queue $foo
エラー内容 : Unexpected token ‘Add-Queue’ in expression or statement.
〇 参考
http://winscript.jp/powershell/253
あたりが挙動をうまく説明していると思います。