Powershell Zeile löschen mit *:*

fanti67

Cadet 1st Year
Registriert
Mai 2023
Beiträge
14
Hallo,
ich habe ein Problem. Mit dem Skript
foreach($line in $file){

if($line -notlike 'BösesWort'){
echo $line >> $newFile
}
}
funktioniert es gut, aber wenn ich nach dem Syntax ":" in einer Zeile suche klappt es nicht.

Es gibt vor und nach dem : Text. In dem Skript wäre das ':' leider wertet er die inneren Sternchen als Wildcard und nicht als Sternchen. Wie kann ich das ändern?
 
Moin :)
Paste mal bitte so wie du das Bsp-Script nachgetragen hast, dein fertiges Script samt ausgabe.
 
Leider kenne ich mich mit Regular Expression nicht aus.
Hier mal eine Beispielzeile die gelöscht werden soll:

UDP 0.0.0.0:65453 : 15900

kann mir jemand sagen wie der entsprechende Ausdruck wäre?
Ergänzung ()

kartoffelpü schrieb:
Oder versuchen, das * mit Backtick \` zu escapen: https://www.rlmueller.net/PowerShellEscape.htm
Das habe ich gerade versucht. Klappt nicht.
 
Zuletzt bearbeitet:
fanti67 schrieb:
Was ist das überhaupt für ein Zeichen?
Und kommt die Ausgabe so aus netstat? Oder aus nem anderen Programm?

Falls tatsächlich netstat, wäre der native Powershell-Befehl dazu Get-NetTCPConnection, wo alles als Objekte mit entsprechenden Eigenschaften ausgegeben wird. Dann muss man nicht versuchen, irgendwelche Strings auseinanderzupflücken.
1683702945314.png
 
kartoffelpü schrieb:
Was ist das überhaupt für ein Zeichen?
Und kommt die Ausgabe so aus netstat? Oder aus nem anderen Programm?
das kommt aus Netstat. Es ist ein Doppelpunkt mit einem Sternchen davor und dahinter ":". Das wird leider hier nicht richtig dargestellt. Die Dateien bekomme ich von den einzelnen Rechnern über eine CMD mit dem Befehl
netstat -ano >> C:\%host%.txt
da kann ich keine Powershell nutzen

Hier ein Screenshot:
1683704069065.png
 
Zuletzt bearbeitet:
Dann fallen leider auch alle Zeilen raus die IP : Port haben.
Leider kann ich hier keine ganze Datei eingeben, da ich damit IP Strukturen verraten würde

bin bei Powershell leider ein Anfänger
 
da es sich bei dem
Code:
*:*
ja um einen fixen string handelt nach dem du filterst, kannst auch
Code:
$line.Contains('*:*')
nutzen (* ist bei ,Contains() kein Wildcard).
Ist, wie gesagt, nur ein Workaround und sehr speziell... allgemeiner und eleganter geht es mit RegEx.


GRR: das forum filter die Sternchen raus... sollte <sternchen>:<sternchen> sein

so. sollte nun passen
Ergänzung ()

PS:
Code:
$line -match '\*:\*'
könnte auch funktionieren.
 
Zuletzt bearbeitet:
Korben2206 schrieb:
PS:
Code:
$line -match '\*:\*'
könnte auch funktionieren.
schon versucht. Klappt nicht
Ergänzung ()

1683705207566.png

da macht er genau das Gegenteil. Gibt es davon eine verneinte Version?
 
Das habe ich gerade auch gefunden. Danke. Jetzt klappt es.

Vielen Dank für die Hilfe.
 
  • Gefällt mir
Reaktionen: Korben2206
Zurück
Oben