2010-01-13 16 views
8

que tienen algunos scripts de PowerShell que aceptan muchos parámetros largos, como,¿Se deben llamar los scripts de PowerShell utilizando solo una línea?

myScript.ps1 -completePathToFile "C:\...\...\...\file.txt" -completePathForOutput "C:\...\...\...\output.log" -recipients ("[email protected]") -etc. 

Me parece que no puede hacer este tipo de scripts de PowerShell de ejecución a menos que todos los parámetros están en una sola línea. ¿Hay alguna manera de invocar el script más así?

myScript.ps1 
    -completePathToFile "C:\...\...\...\file.txt" 
    -completePathForOutput "C:\...\...\...\output.log" 
    -recipients (
    "[email protected]", 
    "[email protected]" 
    ) 
    -etc 

La falta de legibilidad me está volviendo loco, pero los guiones realmente no tiene por qué ser este paramétrico.

Respuesta

13

PowerShell cree que el comando está completo al final de la línea, a menos que vea ciertos caracteres como una tubería, abrir una página o abrir una capa. Sólo hay que poner un carácter de continuación de línea `` `al final de cada línea, pero asegúrese de que no hay espacios después de que el carácter de continuación:

myScript.ps1 ` 
    -completePathToFile "C:\...\...\...\file.txt" ` 
    -completePathForOutput "C:\...\...\...\output.log" ` 
    -recipients (
    "[email protected]", ` 
    "[email protected]" ` 
    ) 

Si estás en PowerShell 2.0 también se puede poner esos parámetros en una tabla hash y el uso splatting por ejemplo:

$parms = @{ 
    CompletePathToFile = 'C:\...\...\...\file.txt' 
    CompletPathForOutput = 'C:\...\...\...\output.log' 
    Recipients   = '[email protected]','[email protected]' 
} 
myScript.ps1 @parms 
+0

he descubierto que el operador coma es suficiente para hacer Powershell continuar a la siguiente línea, siempre y cuando en realidad es analizarlo como un operador y no un parámetro de cadena que termina en', ' –

+0

Gracias. Estoy seguro de que hay otros personajes que indican a PowerShell que hay más. No estoy seguro de que haya una lista documentada de estos. –

+0

Keith, gracias por recordarme que hay un splatting en Posh. Lo leí y luego lo olvidé. Ahora veo que ofrece muchas posibilidades de cómo trabajar con los parámetros script/función. – stej

Cuestiones relacionadas