<# .SYNTAX list-weather.ps1 [] .DESCRIPTION lists the hourly weather .LINK https://github.com/fleschutz/PowerShell .NOTES Author: Markus Fleschutz / License: CC0 #> param($Location = "") # empty means determine automatically try { $Weather = (Invoke-WebRequest http://wttr.in/${Location}?format=j1 -UserAgent "curl" ).Content | ConvertFrom-Json $Area = $Weather.nearest_area.areaName.value $Region = $Weather.nearest_area.region.value $Country = $Weather.nearest_area.country.value [int]$Day = 0 foreach ($Hourly in $Weather.weather.hourly) { $Hour = $Hourly.time / 100 $Temp = $Hourly.tempC $Precip = $Hourly.precipMM $Humidity = $Hourly.humidity $Pressure = $Hourly.pressure $WindSpeed = $Hourly.windspeedKmph $WindDir = $Hourly.winddir16Point $UV = $Hourly.uvIndex $Clouds = $Hourly.cloudcover $Desc = $Hourly.weatherDesc.value if ($Hour -eq 0) { if ($Day -eq 0) { write-host -foregroundColor green "🕗 🌡°C ☂️ 💨 from ☀️ ☁️ TODAY at $Area ($Region, $Country)" } elseif ($Day -eq 1) { write-host -foregroundColor green " TOMORROW" } else { write-host -foregroundColor green " DAY AFTER TOMORROW" } $Day++ } "$(($Hour.toString()).PadLeft(2))°° $(($Temp.toString()).PadLeft(2))° $($Precip)mm $($Humidity)% $(($WindSpeed.toString()).PadLeft(2))km/h $WindDir`tUV$($UV) $(($Clouds.toString()).PadLeft(2))% $($Pressure)hPa $Desc" $Hour++ } exit 0 } catch { write-error "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" exit 1 }