Help us understand the problem. What is going on with this article?

Powershellの-Pathパラメータの挙動が怪しかったので備忘

More than 1 year has passed since last update.

書きたいこと。

  • あくまで備忘録。ちゃんと検証とかしていない。
  • 発生条件がはっきりしておらず、他の環境で発生するか分からず。

事象の環境

MW バージョン
OS Windows7, Windows10
Powershell 2, 5

何が起きたのか。

コマンドプロンプト上でPowershellを実行しました。
すると、出力系のコマンドレットで -Path や -LiteralPath がうまく処理されなかったのです。

cmd> powershell -Command "& { Get-ChildItem | Export-Csv -LiteralPath ./out.csv }"
cmd> powershell -Command "& { Get-ChildItem | Export-Csv -Path ./out.csv }"
cmd> powershell -Command "& { Get-ChildItem | Out-File -Path ./out.txt }"

この時本来であれば -Path-LiteralPath に指定した先にファイルが出来上がるはずなのですが。

Out-File : パラメーター名 'Path' に一致するパラメーターが見つかりません。
発生場所 行:1 文字:28
+ &{Get-ChildItem | Out-File -Path ./dir.txt}
+ ~~~~~
+ CategoryInfo : InvalidArgument: (:) [Out-File]、ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.OutFileCommand

こんな感じにPathがちゃんと見てくれない。
※Export-Csvはもしかしたらちゃんと動くかも。

代わりに、-Pathを明示的に指定しないで実行すると、

cmd> powershell -Command "& { Get-ChildItem | Out-File ./out.txt }"

これはうまくできる。なぜだろう……

filunK
にゃーん。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away