Solución:
-File
Parámetro
Si quieres correr powershell.exe -File
desde la línea de comandos, siempre debe establecer rutas con espacios en doubleqoutes ("
). Comillas simples ('
) solo son reconocidos por powershell. Pero como se invoca powershell.exe (y, por lo tanto, se procesa el parámetro de archivo) mediante la línea de comando, debe usar "
.
powershell.exe -File "C:UserstestDocumentsTest Spacetest.ps1" -ExecutionPolicy Bypass
-Command
Parámetro
Si usa el -Command
parámetro, en lugar de -File
, los -Command
el contenido es procesado por PowerShell, por lo tanto, puede, y en este caso, debe usar '
dentro "
.
powershell.exe -Command "& 'C:UserstestDocumentsTest Spacetest.ps1'" -ExecutionPolicy Bypass
Las comillas dobles se procesan mediante la línea de comandos y & 'C:UserstestDocumentsTest Spacetest.ps1'
es un comando que en realidad procesa PowerShell.
La solución 1 es obviamente más sencilla.
Tenga en cuenta que -Command
también es el parámetro predeterminado que se utiliza, si no especifica ninguno.
powershell.exe "& 'C:UserstestDocumentsTest Spacetest.ps1'" -ExecutionPolicy Bypass
Esto también funcionaría.
-EncodedCommand
Parámetro
Puede codificar su comando como Base64. Esto resuelve muchos problemas de “citas” y es a veces (pero no en su caso) la única forma posible.
Primero tienes que crear el comando codificado
$Command = "& 'C:UserstestDocumentsTest Spacetest.ps1'"
[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($Command))
Y luego puedes usar el -EncodedCommand
parámetro como este
powershell.exe -EncodedCommand JgAgACcAQwA6AFwAVQBzAGUAcgBzAFwAdABlAHMAdABcAEQAbwBjAHUAbQBlAG4AdABzAFwAVABlAHMAdAAgAFMAcABhAGMAZQBcAHQAZQBzAHQALgBwAHMAMQAnAA== -ExecutionPolicy Bypass
Prueba esto:
PS C:> & "C:UserstestDocumentstestline spacePS Scripttest"
En sus ejemplos, está mezclando citas y citas dobles sin ningún motivo.
IF EXIST "C:UserstestDocumentstestline spacePS Scripttest.ps1" (
powershell -ExecutionPolicy Unrestricted -File "C:UserstestDocumentstestline spacePS Scripttest.ps1"
)