PowerShell から実行可能ファイルを実行すると、パスにスペースがあると動作しません。

PowerShell から実行可能ファイルを実行すると、パスにスペースがあると動作しません。

PowerShell プロンプトから:

\Windows\system32\mspaint.exe

ペイントを実行します。

Invoke-Expression -command "\Windows\system32\mspaint.exe"

しかし、パスにスペースがある場合、PowerShellはダミーを吐き出します。例:

Invoke-Expression -command "\install\sub directory\test.bat"

不満を言うのは:

The term '\install\sub' is not recognized as the name of a cmdlet, function, script file, or operable program.

何が足りないのでしょうか?

答え1

によるとこれTechnet の記事によると、パスを二重引用符で囲むだけでは不十分です。

使用しようとしているパスにはディレクトリの前にアンパサンド (&) を付けないと機能しません。

例えば:

Invoke-Expression -command & "\install\sub directory\test.bat"

答え2

最も簡単な方法は、invoke 演算子を使用することです。

&'String containing the path'

注意: 実行可能ファイルを起動するのはInvoke-Expression実際には間違ったコマンドレットであり、 を使用する方が適切ですStart-Process

関連情報