exécuter la commande powershell à partir de cmd

31

comment je peux exécuter cette commande à partir de cmd:

powershell.exe "(get-process |? {$ _. Description -eq" 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 côté droit de l'opérateur «-eq». À la ligne: 1 caractère: 37 + (get-process |? {$ _. Description -eq <<<< Sysinternals Process Explorer}) | sélectionnez le nom du processus | out-file $ env: APPDATA \ example.txt + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordEx ception + FullyQualifiedErrorId: ExpectedValueExpression

Qassam Mahmoud
la source
3
Votre problème pourrait être votre ensemble de guillemets. Essayez de les retirer ou, s'ils doivent être utilisés, essayez d'utiliser ce type: «aka l'apostrophe en place.
DeathByTensors
2
Avertissement - veuillez ne pas utiliser d'obscénités dans vos messages. Je l'ai retiré pour toi. Notez que d'autres utilisateurs peuvent avoir signalé votre message comme "grossier ou abusif", ce qui pourrait entraîner la perte ou la suspension du représentant. Veuillez lire Be Nice : "Évitez les termes vulgaires et tout ce qui est sexuellement suggestif"
DavidPostill

Réponses:

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

Fondamentalement, vous avez une commande PowerShell et collez-la entre ces guillemets pour l'appeler à partir de CMD

powershell -command " #PasteCodeHere "

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

Modifier: Informations supplémentaires:

vous rencontrerez assez souvent ceci: powershell -command "& 'somestuff'"

l' &est utilisé pour appeler un fichier. lorsque vous n'utilisez qu'une commande &n'est pas nécessaire, lorsque vous souhaitez appeler un script, vous devez l'utiliser.

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

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

SimonS
la source
vous êtes le meilleur homme <3 ça marche
Qassam Mahmoud
3
Si la commande à exécuter a des guillemets, ils doivent être doublés. Exemple: powershell -commande "dir" "c: \ Program Files" ""
Myobis
1
@myobis ou vous pouvez simplement utiliser des guillemets simplespowershell -command " dir 'C:\Program Files' "
SimonS
1
@myobis En fait, doubler les guillemets ne fonctionne pas (dans Windows 10 cmd). Mais utiliser la barre oblique inverse pour s'échapper a:powershell -command "dir \"c:\Program Files\" "
wisbucky
0

J'ai placé les commandes suivantes dans un fichier de commandes pour réinitialiser Edge (qui posait parfois des problèmes). Le fichier de commandes 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 guillemets "triples" dans la ligne Powershell. Cette ligne est d'ailleurs une seule ligne avec "For Each" et "-Register" enveloppé de mots dans cette boîte de commentaire. Il doit s'agir d'une seule ligne dans le fichier de commandes (ou sur la ligne de commande si elle est saisie manuellement dans une cmdsession).

L'important est qu'après le mot "PowerShell", les virgules inversées (") démarrent et terminent la commande et que toutes les virgules inversées internes déjà présentes dans la commande powershell soient converties en guillemets" triples "( """)

Chris Raisin
la source