#PowerShell でのWrite-HostとWrite-Outputの使い分けについて

PowerShellはお気に入りでずっと使っていますが、あまり真面目に勉強していないのでいまだに基本的なところでつまずきます。


最近つまずいたコード

最近は下記でつまずきました。

# main.ps1
$return = . .\hoge.ps1
Write-Warning $return

このコード、hoge.ps1を実行しその結果を$returnに保存したうえで、警告として表示する…という非常に単純なコードです。でも、これエラーになっちゃうこともあるダメなコードです。どこがどのようにダメか、どのような場合にエラーになってしまうかわかるでしょうか?(私は実際にエラーになるまでわかりませんでした…。)

問題のないケース

例えばhoge.ps1が下記場合はどうでしょうか?

# hoge.ps1
$fuga = "fuga"
return $fuga

この場合特に問題はありません。main.ps1の実行結果は下記になります。

PS C:\tmp\PowerShellTest> .\main.ps1
警告: fuga

期待する結果ですし、特に違和感ないですよね。

問題があるケース

でも、hoge.ps1の中身が下記の場合にはどうなるでしょうか?

ここから先は

2,032字

¥ 100

この記事が気に入ったらサポートをしてみませんか?