Dodatkowe informacje
irm to alias na Invoke-RestMethod, który dostępny jest od Powershella 3.0:
PS /Users/drg> Get-Alias irm
CommandType Name Version Source
----------- ---- ------- ------
Alias irm -> Invoke-RestMethod
PS /Users/drg>
Serwis iponfo.io to jeden z wielu serwisów, który wyświetla informacje o adresie IP, z którego przychodzi request. Endpoint ipinfo.io/json zwróci informacje jako obiekt JSON.
Kiedy Invoke-RestMethod otrzyma takiego JSONa, od razu go sparsuje i zwróci obiekt. Żeby to udowodnić, wystarczy przekierować wynik irm do Get-Member (alias gm):
PS /Users/drg> irm ipinfo.io/json|gm
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
city NoteProperty string city=Kraków
country NoteProperty string country=PL
hostname NoteProperty string hostname=89-64-59-244.dynamic.chello.pl
ip NoteProperty string ip=89.64.59.244
loc NoteProperty string loc=50.0614,19.9366
org NoteProperty string org=AS6830 Liberty Global B.V.
postal NoteProperty string postal=04-190
readme NoteProperty string readme=https://ipinfo.io/missingauth
region NoteProperty string region=Lesser Poland
timezone NoteProperty string timezone=Europe/Warsaw
PS /Users/drg>
Żeby pobrać konkretne pole tego obiektu, wykorzystamy notację kropkową - stąd (irm ipinfo.io/json).ip.
Inne serwisy tego typu, to np. ifconfig.me:
PS /Users/drg> irm ifconfig.me/all.json
ip_addr : 89.64.59.244
remote_host : unavailable
user_agent : Mozilla/5.0 (Macintosh; Darwin 19.4.0 Darwin Kernel Version 19.4.0: Wed Mar 4 22:28:
40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64; ) PowerShell/7.0.0
port : 21940
method : GET
via : 1.1 google
forwarded : 89.64.59.244, 216.239.38.21
PS /Users/drg>
Uwaga
Może się zdarzyć, że użycie Invoke-RestMethod (lub np. Invoke-WebRequest - iwr) nie powiedzie się, jeśli Internet Explorer nie został skonfigurowany przed pierwszym uruchomieniem. W takich okolicznościach (lub od razu, dla bezpieczeństwa) należy użyć opcji -UseBasicParsing (co można skrócić do -useb), co spowoduje, że wynik nie będzie parsowany przez silnik IE. Uwaga do uwagi: od Powershella 6.0 to nie jest już prawdą i -UseBasicParsing jest już zdeprecjonowane.
Przydatne linki
Subskrybuj
Jeśli chcesz otrzymywać nowe, mięsiste protipy na maila, a także zostać czasem powiadomiony o wartościowych wydarzeniach - dołącz do subskrybentów.