Führen Sie den Powershell-Befehl von cmd aus

30

Wie kann ich diesen Befehl von cmd ausführen:

Powershell.exe "(get-process |? {$ _. Description -eq" Sysinter Process Explorer "}) | select processname | out-file $ env: APPDATA \ example.txt"

Ich bekomme immer noch diesen Fehler:

Sie müssen einen Wertausdruck auf der rechten Seite des Operators '-eq' angeben. In Zeile: 1 Zeichen: 37 + (get-process |? {$ _. Description -eq <<<< Sysinternals Process Explorer}) | Wählen Sie Prozessname | out-file $ env: APPDATA \ example.txt + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordEx ception + FullyQualifiedErrorId: ExpectedValueExpression

Qassam Mahmoud
quelle
3
Ihr Problem könnte Ihr innerer Satz von Anführungszeichen sein. Versuchen Sie, sie entweder zu entfernen, oder wenn sie verwendet werden müssen, versuchen Sie, diesen Typ zu verwenden: 'aka das Apostroph an Ort und Stelle.
DeathByTensors
2
Warnung - Bitte verwenden Sie keine Obszönitäten in Ihren Posts. Ich habe es für dich entfernt. Beachten Sie, dass andere Benutzer Ihren Beitrag möglicherweise als "unhöflich oder missbräuchlich" gekennzeichnet haben, was zu einem möglichen Verlust oder einer Suspendierung der Mitarbeiter führen kann. Bitte lesen Sie Be Nice : "Vermeiden Sie vulgäre Begriffe und alles, was sexuell andeutet"
DavidPostill

Antworten:

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

Grundsätzlich haben Sie einen Powershell-Befehl und fügen ihn zwischen diese Anführungszeichen ein, um ihn von CMD aufzurufen

powershell -command " #PasteCodeHere "

Innerhalb dieser Anführungszeichen müssen Sie arbeiten, da 'sonst Ihr Befehlsparameter unterbrochen wird.

Bearbeiten: Zusätzliche Informationen:

ziemlich oft werden Sie auf Folgendes stoßen: powershell -command "& 'somestuff'"

Mit &wird eine Datei aufgerufen. Wenn Sie nur einen Befehl verwenden, &ist dies nicht erforderlich. Wenn Sie ein Skript aufrufen möchten, sollten Sie es verwenden.

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

Sie können auch powershell -file C:\file.ps1ein Skript aufrufen

SimonS
quelle
Du bist der beste Mann <3, es funktioniert
Qassam Mahmoud
3
Wenn der auszuführende Befehl Anführungszeichen enthält, müssen diese verdoppelt werden. Beispiel: Powershell-Befehl "dir" "c: \ Programme" ""
Myobis
1
@myobis oder Sie können einfach einfache Anführungszeichen verwendenpowershell -command " dir 'C:\Program Files' "
SimonS
1
@myobis Eigentlich funktioniert das Verdoppeln der Anführungszeichen nicht (in Windows 10 cmd). Aber mit Backslash entkommen hat:powershell -command "dir \"c:\Program Files\" "
wisbucky
0

Ich habe die folgenden Befehle in eine Batch-Datei eingefügt, um Edge zurückzusetzen (was von Zeit zu Zeit zu Problemen geführt hat). Die Batchdatei wurde dann auf Administratorebene ausgeführt. Bitte beachten Sie die dreifachen Anführungszeichen in der Powershell-Zeile. Dieses Beispiel kann Dinge für diejenigen verdeutlichen, die versuchen, einen Powershell-Befehl über eine "cmd" -Befehlszeile auszuführen.

@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}"

Beachten Sie die "dreifachen" Anführungszeichen in der Powershell-Zeile. Diese Zeile ist übrigens eine einzelne Zeile, wobei "For Each" und "-Register" in dieses Kommentarfeld eingeschlossen werden. Es sollte jedoch eine einzelne Zeile in der Batchdatei sein (oder in der Befehlszeile, wenn sie manuell in eine cmdSitzung eingegeben wird ).

Wichtig ist, dass nach dem Wort "PowerShell" invertierte Kommas (") den Befehl starten und beenden und alle internen Anführungszeichen, die bereits im übergebenen Powershell-Befehl enthalten sind, in" dreifache "Anführungszeichen ( """) konvertiert werden.

Chris Raisin
quelle