この単純な PowerShell スクリプトを機能させようとしていますが、何かが根本的に間違っていると思います。;-)
ls | ForEach { "C:\Working\tools\custom-tool.exe" $_ }
基本的には、ディレクトリ内のファイルを取得し、それらを 1 つずつ引数としてカスタム ツールに渡したいと考えています。
この単純な PowerShell スクリプトを機能させようとしていますが、何かが根本的に間違っていると思います。;-)
ls | ForEach { "C:\Working\tools\custom-tool.exe" $_ }
基本的には、ディレクトリ内のファイルを取得し、それらを 1 つずつ引数としてカスタム ツールに渡したいと考えています。
コマンドパスを引用符で囲む必要がある場合(たとえば、スペースがある場合)は、次のようにします。
ls | % { &"C:\Working\tools\custom-tool.exe" $_.FullName }
文字列の前に&を使用して、PowerShellに文字列ではなくコマンドとして解釈させることに注意してください。
ls | %{C:\Working\tools\custom-tool.exe $_}
各オブジェクトがパイプラインを通過するたびに、ツールがそれに対して実行されます。コマンド文字列を引用符で囲むと、文字列になります! ローカル変数「$_」は、おそらく何をすべきかわからないため、エラーが発生します。
私はあなたのツールがフルパスを必要としているに違いない。$ _は、パイプラインを経由する各ファイルオブジェクトです。次のような式を使用する必要があります。
ls | %{C:\Working\tools\custom-tool.exe $_.fullname}
ジェフリー・ヒックスもスリップセックも正しい。二重引用符をヤンクします。
$_ または $_.fullname は、私のテスト スクリプト (以下) で機能しました。カスタムツールを使用した YMMV。
gci | % { c:\windows\notepad.exe $_.fullname }
また
gci | % { c:\windows\notepad.exe $_ }