57 votes

exécuter une commande powershell à partir de cmd

Comment puis-je exécuter cette commande depuis cmd :

powershell.exe "(get-process | ? [ ] "Sysinter Process Explorer"}) | select processname | out-file $env:APPDATA \example.txt "

Je reçois toujours cette erreur :

Vous devez fournir une expression de valeur sur le A la ligne:1 char:37 + (get-process | ? {$_.Description -eq <<<< Sysinternals Process Explorer}) | select processname | out-file $env:APPDATA \example.txt + CategoryInfo : ParserError : ( :) [], ParentContainsErrorRecordEx ception + FullyQualifiedErrorId : ExpectedValueExpression

83voto

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

en fait, vous avez une commande powershell et vous la collez entre ces guillemets pour l'appeler depuis CMD

powershell -command " #PasteCodeHere "

à l'intérieur de ces citations, vous devez travailler avec ' sinon il interrompra votre paramètre de commande.

Edita: Informations supplémentaires :

Vous rencontrerez très souvent ce problème : powershell -command "& 'somestuff'"

el & est utilisé pour appeler un fichier. lorsque vous utilisez seulement une commande & est inutile, lorsque vous voulez appeler un script, vous devez l'utiliser.

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

Vous pouvez également utiliser powershell -file C:\file.ps1 pour appeler un script

0voto

Gábor Lipták Points 3745

J'ai placé les commandes suivantes dans un fichier batch pour réinitialiser Edge (qui a posé quelques problèmes de temps en temps). Le fichier batch a ensuite été exécuté au niveau Administrateur. Veuillez noter les guillemets triples dans la ligne powershell. Cet exemple peut clarifier les choses pour ceux qui essaient d'exécuter une commande powershell à partir d'une ligne de commande "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}"

Notez les "triples" guillemets dans la ligne Powershell. Cette ligne est d'ailleurs une seule ligne avec "For Each" et "-Register" étant enveloppés de mots dans cette boîte de commentaires. Il devrait s'agir d'une seule ligne dans le fichier batch (ou sur la ligne de commande si elle est tapée manuellement dans un fichier de commandes). cmd session).

Ce qui est important, c'est qu'après le mot "PowerShell", des guillemets (") commencent et finissent la commande et que les guillemets internes déjà présents dans la commande powershell transmise sont convertis en guillemets "triples" ( """ )

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X