obtener help comandos comando ayuda powershell multiline

help - obtener ayuda de un comando powershell



Cómo ingresar un comando multilínea (7)

Acabo de descubrir que no debe haber ningún carácter entre la marca de retroceso y el salto de línea, incluso el espacio en blanco hará que el comando no funcione.

¿Es posible dividir una línea de comando de PowerShell en varias líneas?

En Visual Basic puedo usar el guión bajo ( _ ) para continuar el comando en la siguiente línea.


En PowerShell y PowerShell ISE, también es posible usar SHIFT+ENTER al final de cada línea para la edición multilínea (en lugar del backtick estándar ` ).


En la mayoría de los lenguajes tipo C, soy deliberado acerca de colocar mis llaves donde creo que hacen que el código sea más fácil de leer.

El analizador de PowerShell reconoce cuando una declaración claramente no está completa y mira a la siguiente línea. Por ejemplo, imagine un cmdlet que toma un parámetro de bloque de script opcional:

Get-Foo { ............ }

Si el bloque de script es muy largo, es posible que desee escribir:

Get-Foo { ............... ............... ............... }

Pero esto no funcionará: el analizador verá dos afirmaciones. El primero es Get-Foo y el segundo es un bloque de script. En su lugar, escribo:

Get-Foo { ............... ............... ............... }

Podría usar el carácter de continuación de línea (`) pero eso hace que el código sea difícil de leer e invita a errores.

Como este caso requiere que la llave abierta esté en la línea anterior, sigo ese patrón en todas partes:

if (condition) { ..... }

Tenga en cuenta que if instrucciones requieren un bloque de secuencia de comandos en la gramática del lenguaje, el analizador buscará en la siguiente línea el bloque de secuencia de comandos, pero para mantener la coherencia, mantengo la llave abierta en la misma línea.

Simlarly, en el caso de tuberías largas, se rompe después del carácter de tubería ( | ):

$project.Items | ? { $_.Key -eq "ProjectFile" } | % { $_.Value } | % { $_.EvaluatedInclude } | % { ......... }


Para ampliar la answer de cristobalito:

Supongo que está hablando en la línea de comandos: si está en una secuencia de comandos, una nueva línea> actúa como un delimitador de comandos.

En la línea de comando, use un punto y coma '';''

Por ejemplo:

Firme un script de powershell en la línea de comandos. No hay saltos de línea.

powershell -Command "&{$cert=Get-ChildItem –Path cert:/CurrentUser/my -codeSigningCert ; Set-AuthenticodeSignature -filepath Z:/test.ps1 -Cert $cert}


Puedes usar el acento grave (o backtick):

Get-ChildItem -Recurse ` -Filter *.jpg ` | Select LastWriteTime

Sin embargo, esto solo es necesario en los casos como se muestra arriba. Por lo general, se obtiene una continuación de línea automática cuando un comando no se puede completar sintácticamente en ese momento. Esto incluye iniciar un nuevo elemento de tubería:

Get-ChildItem | Select Name,Length

Trabajará sin problemas desde después del | el comando no puede estar completo ya que le falta otro elemento de canalización. También abrir llaves o cualquier otro tipo de paréntesis permitirá la continuación de la línea directamente:

$x=1..5 $x[ 0,3 ] | % { "Number: $_" }

Similar a la | Una coma también funcionará en algunos contextos:

1, 2

Sin embargo, tenga en cuenta que, al igual que en la inserción automática de punto y coma de JavaScript, hay algunas cosas que se rompen de manera similar porque el salto de línea se produce en un punto en el que está precedido por una declaración válida:

return 5

no trabajará.

Finalmente, las cuerdas (en todas las variedades) también pueden extenderse más allá de una sola línea:

''Foo bar''

Incluyen los saltos de línea dentro de la cadena, entonces.


Si está intentando separar cadenas en varias líneas, puede usar el "+". Por ejemplo:

$header = "Make," + "ComputerName," + "Model," + "Windows Version"

Se verá igual que

$header = "Make,ComputerName,Model,Windows Version"


Supongo que está hablando en la línea de comandos: si está en un script, una nueva línea actúa como un delimitador de comandos.

En la línea de comando, use un punto y coma '';''