Wetter mit PowerShell abfragen
Hier mal eine interessante PowerShell Abfrage. Mit folgendem Code könnt ihr das Wetter mit PowerShell abfragen.
Wetter mit PowerShell abfragen
Naja seien wir uns ehrlich. PowerShell direkt kann das natürlich nicht. Wir brauchen natürlich einen Dienst, der uns die Wetterdaten in echtzeit bereitstellen kann. Und diesen fragen wir ab. Der online Dienst wttr.in kann uns hierbei weiterhelfen 🙂
Das Script um Wetterdaten abzurufen
Das ist das Script um das Wetter mit PowerShell abrufen zu können:
<# .SYNOPSIS Get Weather of a City .DESCRIPTION Fetches Weather report of a City from website - http://wttr.in/ courtsey Igor Chubin [Twitter- @igor_chubin] .PARAMETER City Name of City .PARAMETER Tomorrow Switch to include tomorrow's Weather report .PARAMETER DayAfterTomorrow Switch to include Day after tomorrow's Weather report .EXAMPLE Get-Weather "Los Angles" -Tomorrow -DayAfterTomorrow .EXAMPLE 'london', 'delhi', 'beijing' | Get-Weather .NOTES Blog - RidiCurious.com #> Function Get-Weather { [Alias('Wttr')] [Cmdletbinding()] Param( [Parameter( Mandatory = $true, HelpMessage = 'Enter name of the City to get weather report', ValueFromPipeline = $true, Position = 0 )] [ValidateNotNullOrEmpty()] [string[]] $City, [switch] $Tomorrow, [switch] $DayAfterTomorrow ) Process { Foreach($Item in $City){ try { # Check Operating System Version If((Get-WmiObject win32_operatingsystem).caption -like "*Windows 10*") { $Weather = $(Invoke-WebRequest "http://wttr.in/$City" -UserAgent curl).content -split "`n" } else { $Weather = (Invoke-WebRequest "http://wttr.in/$City").ParsedHtml.body.outerText -split "`n" } If($Weather) { $Weather[0..16] If($Tomorrow){ $Weather[17..26] } If($DayAfterTomorrow){ $Weather[27..36] } } } catch { $_.exception.Message } } } }
Als wetter.ps1 abspeichern 🙂
Wetterdaten abrufen
Um nun die Daten in der PowerShell Console abrufen zu können, müssen wir wie folgt vorgehen:
- Script laden
- Function aufrufen
- Parameter übergeben
Außerhalb der PowerShell werden Funktionen nach dem Ausführen eines PowerShell – Skripts wieder entladen.
Wird ein Skript aber mit einem “.
” geladen, kann die Funktion auch noch nach dem Ende des Skripts aufgerufen werden:
. .\wetter.ps1 Get-Weather -city "Ingolstadt"
Also sieht es so aus:
PS C:\Users\locad\Desktop>. .\wetter.ps1 PS C:\Users\locad\Desktop>Get-Weather -city "Ingolstadt"
Parameter
Es können mehrere Städte angegeben werden:
oder auch das Wetter für Morgen und Übermorgen abgerufen werden:
Oder sogar der Mond:
🙂