Cómo dividir comandos largos en varias líneas en PowerShell

Resuelto asgerhallas asked hace 14 años • 8 respuestas

¿Cómo se toma un comando como el siguiente en PowerShell y se divide en varias líneas?

&"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" -verb:sync -source:contentPath="c:\workspace\xxx\master\Build\_PublishedWebsites\xxx.Web" -dest:contentPath="c:\websites\xxx\wwwroot\,computerName=192.168.1.1,username=administrator,password=xxx"
asgerhallas avatar Apr 09 '10 21:04 asgerhallas
Aceptado

Carácter de comilla invertida al final, es decir,

&"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" `
-verb:sync `
-source:contentPath="c:\workspace\xxx\master\Build\_PublishedWebsites\xxx.Web" `
-dest:contentPath="c:\websites\xxx\wwwroot,computerName=192.168.1.1,username=administrator,password=xxx"

El espacio en blanco importa. El formato requerido es Space`Enter.

Colin Pickard avatar Apr 09 '2010 14:04 Colin Pickard

Otro método para pasar argumentos de forma más limpia sería salpicar .

Defina sus parámetros y valores como una tabla hash como esta:

$params = @{ 'class' = 'Win32_BIOS';
             'computername'='SERVER-R2';
             'filter'='drivetype=3';
             'credential'='Administrator' }

Y luego llama a tu comando así:

Get-WmiObject @params

Microsoft Docs: acerca de las salpicaduras

Revista TechNet 2011: Windows PowerShell: salpicaduras

Parece que funciona con Powershell 2.0 y superiores

BJHop avatar Jun 19 '2014 17:06 BJHop

Ah, y si tienes una cadena muy larga que quieres dividir, digamos HTML, puedes hacerlo poniendo un @a cada lado del exterior ", así:

$mystring = @"
Bob
went
to town
to buy
a fat
pig.
"@

Obtienes exactamente esto:

Bob
went
to town
to buy
a fat
pig.

Y si estás usando Notepad++ , incluso se resaltará correctamente como un bloque de cadena.

Ahora, si desea que esa cadena también contenga comillas dobles, simplemente agréguelas, así:

$myvar = "Site"
$mystring = @"
<a href="http://somewhere.com/somelocation">
Bob's $myvar
</a>
"@

Obtendrías exactamente esto:

<a href="http://somewhere.com/somelocation">
Bob's Site
</a>

Sin embargo, si usa comillas dobles en esa cadena @ de esa manera, Notepad++ no se da cuenta y cambiará el color de sintaxis como si no estuviera entre comillas o entre comillas, según el caso.

Y lo que es mejor es esto: dondequiera que insertes una variable $, ¡SÍ se interpreta! (Si necesita el signo de dólar en el texto, puede escaparlo con una marca como esta: ``$not-a-variable`).

¡AVISO! Si no colocas el final "@al principio de la línea , fallará. ¡Me tomó una hora darme cuenta de que no podía sangrar eso en mi código!

Aquí hay MSDN sobre el tema: Uso de Windows PowerShell “Here-Strings”

bgmCoder avatar Aug 23 '2012 17:08 bgmCoder