what start principales open how comandos basicos activar powershell

start - Ejecutando un comando almacenado en una variable de Powershell



principales comandos de powershell (2)

Aquí hay otra manera sin Invoke-Expression pero con dos variables (comando: cadena y parámetros: matriz). Funciona bien para mí. Supongamos que 7z.exe está en la ruta del sistema.

$cmd = ''7z.exe'' $prm = ''a'', ''-tzip'', ''c:/temp/with space/test1.zip'', ''C:/TEMP/with space/changelog'' & $cmd $prm

Si el comando es conocido (7z.exe) y solo los parámetros son variables, esto hará

$prm = ''a'', ''-tzip'', ''c:/temp/with space/test1.zip'', ''C:/TEMP/with space/changelog'' & 7z.exe $prm

Por cierto, Invoke-Expression con un parámetro también funciona para mí, por ejemplo, esto funciona

$cmd = ''& 7z.exe a -tzip "c:/temp/with space/test2.zip" "C:/TEMP/with space/changelog"'' Invoke-Expression $cmd

PD. Por lo general, prefiero el camino con una matriz de parámetros porque es más fácil componer programáticamente que construir una expresión para Invoke-Expression .

Tengo un comando que tengo compilado y almacenado en una variable en power shell. Este comando funciona si hago un write-host y lo copio y lo paso a una ventana estándar de cmd.exe.

¿Cómo ejecuto este comando desde adentro de mi script?

He intentado varias combinaciones de invoke-command o invoke-expression sin suerte.

Así es como construí la variable:

$cmd1= $arcprg + $arcdir + "/" + $site1+"-"+$hst+"-"+$yesterday+".zip "+$logpath1+"u_ex"+$yesterday+".log"

Esta es la apariencia de la variable si se imprime en la pantalla:

7z.exe a -tzip c:/arc_logs/site-host-at-web1-100827.zip c:/inetpub/logs/logfiles/w3svc1/u_ex100827.log


Intenta invocar tu comando con invoke-expression .

invoke-expression $cmd1

Aquí hay un ejemplo de trabajo en mi máquina:

$cmd = "& ''C:/Program Files/7-zip/7z.exe'' a -tzip c:/temp/test.zip c:/temp/test.txt" invoke-expression $cmd