Wetter mit PowerShell abfragen

Hier mal eine interessante PowerShell Abfrage. Mit folgendem Code könnt ihr das Wetter mit PowerShell abfragen.

jplenio / Pixabay

 

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:

  1. Script laden
  2. Function aufrufen
  3. 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:

🙂

Johannes Huber
 

In seiner Freizeit macht Johannes nichts lieber, als für ITnator Beiträge zu schreiben. Input bekommt er hierfür von Problemen in der IT Administration von Servern, Clients und vielen weiteren IT Komponenten.

sidebar
>