Nur neugierig, warum passiert das? Wenn ich renne:
netstat -an | find "443"
In einer Eingabeaufforderung werden "443" -Verbindungen in Ordnung angezeigt. Wenn ich denselben Befehl in einer PowerShell-Konsole oder ISE ausführe, wird die Fehlermeldung "FIND: Parameterformat nicht korrekt" angezeigt. Wird die Netstat-Ausgabe nicht richtig weitergeleitet, um sie in PS zu finden?
Hinweis: Wenn ich laufe netstat -an | findstr "443"
oder netstat -an | select-string "443"
in PS, funktionieren diese wie erwartet.
powershell
Vic
quelle
quelle
select-string
in PowershellAntworten:
PowerShell wertet den Inhalt in doppelten Anführungszeichen aus, um Variablenerweiterungen, Unterausdrücke usw. auszuführen, und verwirft dann diese doppelten Anführungszeichen. Was PowerShell zurückgibt,
"443"
ist buchstäblich443
(beachten Sie die fehlenden Anführungszeichen).FIND.EXE
erfordert die Suchzeichenfolge in doppelten Anführungszeichen.Wenn Sie verhindern möchten, dass PowerShell die doppelten Anführungszeichen entfernt, verwenden Sie den gravierenden Akzent (`), um sie zu umgehen.
Sie können den
--%
Parameter auch verwenden , um das Escape durchzuführen. Benötigt PowerShell 3+.quelle
findstr
Dienstprogramm erfordert keine doppelten Anführungszeichen im/C
Zeichenfolgenparameter:findstr /C:somestring somefile
funktioniert wie folgtfindstr /C:"somestring" somefile
. FürFIND
die doppelten Anführungszeichen sind vorhanden.