ejecutar el comando powershell desde cmd

31

Cómo puedo ejecutar este comando desde cmd:

powershell.exe "(get-process |? {$ _. Descripción -eq" Sysinter Process Explorer "}) | seleccione el nombre del proceso | out-file $ env: APPDATA \ example.txt"

Todavía recibo este error:

Debe proporcionar una expresión de valor en el lado derecho del operator '-eq'. En la línea: 1 carácter: 37 + (get-process |? {$ _. Descripción -eq <<<< Sysinternals Process Explorer}) | seleccione nombre de proceso | out-file $ env: APPDATA \ example.txt + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordEx ception + FullyQualifiedErrorId: ExpectedValueExpression

Qassam Mahmoud
fuente
3
Su problema podría ser su conjunto interno de comillas. Intente eliminarlos o si deben usarse, intente usar este tipo: también conocido como el apóstrofe en su lugar.
DeathByTensors
2
Advertencia : no uses obscenidades en tus publicaciones. Lo he quitado por ti. Tenga en cuenta que otros usuarios pueden haber marcado su publicación como "grosera o abusiva", lo que lleva a la posible pérdida o suspensión de representantes. Lea Be Nice : "Evite términos vulgares y cualquier cosa sexualmente sugerente"
DavidPostill

Respuestas:

40
powershell -command "get-process | ? {$_.Description -eq 'Sysinter Process Explorer'} | select processname | out-file $env:APPDATA\example.txt"

básicamente tiene un comando de PowerShell y péguelo entre estas citas para llamarlo desde CMD

powershell -command " #PasteCodeHere "

dentro de estas citas tiene que trabajar con lo 'contrario interrumpirá su parámetro de comando.

Editar: Información adicional:

muy a menudo te encontrarás con esto: powershell -command "& 'somestuff'"

la &se utiliza para llamar a un archivo. cuando solo estás usando un comando no &es necesario, cuando quieres llamar a un script, debes usarlo.

powershell -command "& 'C:\foobar.ps1'"

También puedes usar powershell -file C:\file.ps1para llamar a un script

SimonS
fuente
eres el mejor hombre <3 está funcionando
Qassam Mahmoud
3
Si el comando a ejecutar tiene comillas, deben duplicarse. Ejemplo: powershell -command "dir" "c: \ Archivos de programa" ""
Myobis
1
@myobis o simplemente puede usar comillas simplespowershell -command " dir 'C:\Program Files' "
SimonS
1
@myobis En realidad, duplicar las comillas no funciona (en Windows 10 cmd). Pero el uso del escape de barra invertida sí lo hizo:powershell -command "dir \"c:\Program Files\" "
wisbucky
0

Puse los siguientes comandos en un archivo por lotes para restablecer Edge (que ha estado dando algunos problemas de vez en cuando). El archivo por lotes se ejecutó a nivel de administrador. Tenga en cuenta las comillas triples en la línea de PowerShell. Este ejemplo puede aclarar las cosas para aquellos que intentan ejecutar un comando de PowerShell desde una línea de comando "cmd".

@echo off
c:
cd %userprofile%\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe
rmdir /s /q 
userprofile%\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe
powershell "Get-AppXPackage -AllUsers -Name Microsoft.MicrosoftEdge | Foreach 
{Add-AppxPackage -DisableDevelopmentMode -
  Register"""$($_.InstallLocation)\AppXManifest.xml""" -Verbose}"

Tenga en cuenta las citas "triples" en la línea Powershell. Esa línea, por cierto, es una sola línea con "For Each" y "-Register" en este cuadro de comentario. Sin embargo, debe ser una sola línea en el archivo por lotes (o en la línea de comando si se escribe manualmente en una cmdsesión).

Lo importante es que después de la palabra "PowerShell" comas invertidas (") inicie y finalice el comando y cualquier comilla invertida interna que ya esté en el comando powershell que se pasa se convierte en comillas" triples "( """)

Chris Raisin
fuente