2012-02-16 30 views
7

Tengo un script PS simple que necesita aceptar un parámetro que resulta ser una ruta a un directorio. Me sale este camino entregado a mí y invocar el script ps de la siguiente manera:Powershell y una ruta como argumento delimitado por comillas dobles

powershell.exe -ExecutionPolicy Bypass -F "C:\temp\ctest\logging test\postinstall.ps1" "C:\temp\ctest\logging test\" 

no puedo controlar la adición de la '\' a la ruta que es el parámetro a este script, y debe ser entre comillas dobles para dar cuenta del espacio en el camino. Por lo tanto, lo que es terminar con una variable dentro de mi guión ps que es la cadena:

C:\temp\ctest\logging test"  <<-- error in path! with the double-quote char. :(

Mi pregunta es simple, espero, sin embargo no puedo localizar a cualquier persona que ha resuelto, sin embargo. ¿No hay forma de decirle a powershell que no escape la última cita en este escenario?

Gracias por su tiempo y por educarme.

Respuesta

3

El problema parece ser solo cuando se invoca desde CMD. En la secuencia de comandos que podría hacer esto:

$args[0].TrimEnd('"') 

le van a quitar las comillas de salida si existe.

O usted podría doblar la barra invertida:

C:\>powershell.exe -f C:\echo.ps1 "C:\temp\ctest\logging test\\" 

Contenido de echo.ps1

Write-Host ('"{0}"' -f $args[0]) 
0

tratar de esta manera:

powershell.exe -ExecutionPolicy Bypass -F 'C:\temp\ctest\logging test\postinstall.ps1' 'C:\temp\ctest\logging test\' 
+0

que devuelve inmediatamente de PS con: Procesamiento -File '' C: \ temp \ ctest \ tala test \ postinstall.ps1 '' failed: El formato de la ruta dada no es compatible. Especifique una ruta válida para el parámetro -File. – joebalt

+0

- Editar: se olvidó la comilla doble ... –

+0

La cita única de todo produce: Procesamiento -File '' C: \ Temp \ ctest \ logging test \ postinstall.ps1 '' failed: El formato de la ruta dada no es compatible. Especifique una ruta válida para el parámetro -File. – joebalt

0

Ha intentado un solo citar su argumento en su invocación?

+0

El solo hecho de citar el parámetro al script ps1 produce un error cuando tratamos de hacer un comando dir en ese parámetro dentro del script ps: Get-ChildItem: No se puede encontrar el disco. Una unidad con el nombre '' C '' no existe. – joebalt

Cuestiones relacionadas