そのため、コマンドラインからPowerShellスクリプトを実行するさまざまな方法を試してみましたが、いずれもエラーを返します。
このパスは次のとおりです。
C:\Users\test\Documents\test\line space\PS Script\test.ps1
私はこれらを試しました:
powershell -File '"C:\Users\test\Documents\test\line space\PS Script\test.ps1"'
powershell "& ""C:\Users\test\Documents\test\line space\PS Script\test.ps1"""
Powershell "& 'C:\Users\test\Documents\test\line space\PS Script\test.ps1'"
Powershell -File 'C:\Users\test\Documents\test\line space\PS Script\test.ps1'"
これらすべてのエラーが表示されます。
&:「C:\ Users\test\Documents\test\line space\PS Script \」という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれていた場合は、パスが正しいことを確認してから再試行してください。
処理-ファイル '' C:\ Users\test\Documents\test\line space\PS Script\''が失敗しました:指定されたパスの形式はedをサポートしていません。 -Fileパラメーターに有効なパスを指定してください。
どんな助けも大歓迎です!
あなたの例では、理由なしに引用符と二重引用符を混ぜています。
IF EXIST "C:\Users\test\Documents\test\line space\PS Script\test.ps1" (
powershell -ExecutionPolicy Unrestricted -File "C:\Users\test\Documents\test\line space\PS Script\test.ps1"
)
-File
パラメーターコマンドラインからpowershell.exe -File
を実行する場合は、doubleqoutes("
)にスペースを含むパスを常に設定する必要があります。単一引用符('
)は、powershellによってのみ認識されます。ただし、コマンドラインでpowershell.exeが呼び出される(したがって、ファイルパラメーターが処理される)ため、"
を使用する必要があります。
powershell.exe -File "C:\Users\test\Documents\Test Space\test.ps1" -ExecutionPolicy Bypass
-Command
パラメーター-Command
の代わりに-File
パラメーターを使用する場合、-Command
コンテンツはPowerShellによって処理されるため、'
内で"
を使用できます(この場合は必要です)。
powershell.exe -Command "& 'C:\Users\test\Documents\Test Space\test.ps1'" -ExecutionPolicy Bypass
二重引用符はコマンドラインで処理され、& 'C:\Users\test\Documents\Test Space\test.ps1'
は実際にPowerShellで処理されるコマンドです。
解決策1は明らかに単純です。
-Command
は、指定しない場合に使用されるデフォルトのパラメーターでもあることに注意してください。
powershell.exe "& 'C:\Users\test\Documents\Test Space\test.ps1'" -ExecutionPolicy Bypass
これも機能します。
-EncodedCommand
パラメーターコマンドをBase64としてエンコードできます。これは多くの「引用」の問題を解決し、場合によっては(ただし、あなたの場合ではありません)唯一の可能な方法です。
まず、エンコードされたコマンドを作成する必要があります
$Command = "& 'C:\Users\test\Documents\Test Space\test.ps1'"
[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($Command))
そして、次のように-EncodedCommand
パラメーターを使用できます
powershell.exe -EncodedCommand JgAgACcAQwA6AFwAVQBzAGUAcgBzAFwAdABlAHMAdABcAEQAbwBjAHUAbQBlAG4AdABzAFwAVABlAHMAdAAgAFMAcABhAGMAZQBcAHQAZQBzAHQALgBwAHMAMQAnAA== -ExecutionPolicy Bypass
これを試して:
PS C:\> & "C:\Users\test\Documents\test\line space\PS Script\test"