(new-object System.Net.WebClient).DownloadFile('http://192.168.100.1/cgi-bin/status_cgi','C:\file.txt')
Ruft die Statusseite von einem Arris-Modem ab.
select-string -Path "C:\file.txt" -pattern "Uptime"
ergibt:
C:\file.txt:96:<tbody><tr><td width="160">System Uptime: </td><td>0 d: 18 h: 33 m</td></tr>
wie erwartet, aber
(new-object System.Net.WebClient).Downloadstring('http://192.168.100.1/cgi-bin/status_cgi') | select-string -pattern 'Uptime'
druckt die gesamte Seite und wählt die Zeichenfolge nicht aus.
Das Anfordern einer Stream-Ausgabe vom Webclient wird auch nicht "weiterleiten"
(new-object System.Net.WebClient).openread('http://192.168.100.1/cgi-bin/status_cgi') | select-string -pattern 'Uptime'
Was vermisse ich?
powershell
wget
Alexamation
quelle
quelle
-split
Operator ->(new-object System.Net.WebClient).openread('http://192.168.100.1/cgi-bin/status_cgi') -split "
r aufteilen ?n" | select-string -pattern 'Uptime'
Antworten:
Wenn Sie die Ausgabe von
System.Net.WebClient
an Select-String leiten , wird die Ausgabe als eine Zeichenfolge behandelt, weshalb die Ausgabe als Ganzes abgeglichen wird.Wenn Sie die Ausgabe
System.Net.WebClient
in einer Datei speichern und dann mit lesenSelect-String -Path path/to/the/file
, behandelt Select-String den Inhalt der Datei als Array von Zeilen und gibt nur Zeilen zurück, die mit dem Muster übereinstimmen.Zu Ihrer Information: In Powershell 3+ ist es bequemer, das Cmdlet Invoke-WebRequest zu verwenden:
Verweise:
quelle