PowerShell 3 ma wiele nowych funkcji, w tym kilka nowych zaawansowanych funkcji związanych z przeglądarką internetową. Drastycznie upraszczają automatyzację sieci, a dzisiaj pokażemy, w jaki sposób można wyodrębnić każdy pojedynczy link ze strony internetowej i opcjonalnie pobrać zasób, jeśli sobie tego życzysz.
Istnieją dwa nowe cmdlety, które ułatwiają automatyzację sieci, Invoke-WebRequest, który ułatwia analizowanie treści czytelnej dla człowieka, oraz Invoke-RestMethod, który ułatwia czytanie treści do odczytu maszynowego. Ponieważ linki są częścią HTML strony, są częścią czytelnej dla człowieka rzeczy. Wszystko, co musisz zrobić, aby uzyskać stronę internetową, to użyj Invoke-WebRequest i podaj jej adres URL.
Invoke-WebRequest -Uri 'http://howtogeek.com'
Jeśli przewiniesz w dół zobaczysz, że odpowiedź ma właściwość links, możemy użyć funkcji wyliczania nowych członków PowerShell 3, aby je odfiltrować.
(Invoke-WebRequest -Uri 'http://howtogeek.com') .Links
Jak widzisz, odzyskujesz wiele linków, tutaj musisz użyć wyobraźni, aby znaleźć coś unikalnego, by odfiltrować szukane linki. Załóżmy, że chcemy listę wszystkich artykułów na pierwszej stronie.
((Invoke-WebRequest -Uri 'http://howtogeek.com') .Links | Where-Object $ _. Href -like "http *" | Where class -eq "title") Tytuł
Kolejną wspaniałą rzeczą, jaką możesz zrobić dzięki nowym cmdletom, jest automatyzacja codziennych pobrań. Spójrzmy na automatyczne zeskrobywanie obrazu dnia z serwisu Nat Geo, aby to zrobić, połączymy nowe cmdlety sieciowe z Start-BitsTransfer.
$ IOTD = ((Invoke-WebRequest -Uri 'http://photography.nationalgeographic.com/photography/photo-of-the-day/').Links | Gdzie innerHTML-like "* Pobierz Wallpaper *"). Href
Start-BitsTransfer -Source $ IOTD -Destination C: \ IOTD \
To wszystko. Czy masz jakieś fajne sztuczki? Daj nam znać w komentarzach.