11

私は PS スクリプトです。別の PS インスタンスで別のスクリプトを実行できるようにするには、次の手順を実行します。

$filepath = Resolve-Path "destruct.ps1"
    
start-process powershell.exe "$filepath"

destruct.ps1このスクリプトと同じフォルダーにあります。

ただし、スペース ( ) を含む場所でこのスクリプトを実行"C:\My Scripts\"すると、次のエラーが発生します。

「C:\My」という用語は、コマンドレット、関数、操作可能なプログラム、またはスクリプト ファイルとして認識されません。用語を確認して、再試行してください。

Invoke-Expression メソッドで a を使用する'&'とこの問題が解決することはわかっていますが、start-process メソッドを使用して同じことを行うにはどうすればよいでしょうか?

4

5 に答える 5

17

これを試して:

 start-process -FilePath powershell.exe -ArgumentList "-file `"$filepath`""

コメントの後に編集:

start-process -FilePath powershell.exe -ArgumentList "-file `"$($filepath.path)`""

サイドノート:

$filepathタイプであって、[pathinfo]タイプではない[string]

于 2014-04-03T15:02:23.847 に答える
13

エスケープされた二重引用符を追加して、引用符で囲まれた引数を渡すことができます。

 "`"$filepath`""
于 2014-04-03T14:37:32.443 に答える