PowerShell — веб-служба погоды

Я хочу использовать PowerShell для запроса веб-службы и запроса погоды в моем городе (Гамбург, Германия) для демонстрации.

Я нашел следующий URL-адрес и сценарий от 2011 года. Но эта веб-служба больше не работает.

Любые идеи для решения этой проблемы?

https://learn-powershell.net/2011/02/15/получениеинформацииопогодеотпоставщикавеб-услуг/

$a = New-WebServiceProxy 'http://www.webservicex.net/globalweather.asmx?WSDL' 
$a.GetWeather('San Francisco','United States')

Ответ: Нет данных


person LaPhi    schedule 09.03.2017    source источник
comment
А как насчет OpenWeatherAPI? Пример см. здесь: powershelladmin.com/wiki/   -  person Manuel Batsching    schedule 09.03.2017
comment
Спасибо. Я знаю этот сайт, но хочу использовать встроенные функции.   -  person LaPhi    schedule 09.03.2017


Ответы (1)


Зайдите на OpenWeather и получите ключ API.

Этот URL содержит список всех городов. Есть несколько записей. Я нашел Сан-Франциско (5391959) в Google и нажал этот URL:

http://openweathermap.org/city/5391959?utm_source=openweathermap&utm_medium=widget&utm_campaign=html_old

...из которого я извлек идентификатор города 5391959.

Вооружившись ключом API и идентификатором города, вы можете использовать следующие две команды, чтобы получить информацию о погоде в формате JSON:

$weather = Invoke-WebRequest -Uri 'api.openweathermap.org/data/2.5/weather?id=5391959&APPID=YOUR_API_KEY_HERE'
$weatherObject = $weather.Content | ConvertFrom-Json
$weatherObject # display to console

... который даст вам объект, например:

coord      : @{lon=-122.42; lat=37.77}
weather    : {@{id=804; main=Clouds; description=overcast clouds; icon=04n}}
base       : stations
main       : @{temp=285.91; pressure=1017; humidity=93; temp_min=283.15; temp_max=288.15}
visibility : 16093
wind       : @{speed=4.6; deg=240}
clouds     : @{all=90}
dt         : 1489134900
sys        : @{type=1; id=226; message=0.1525; country=US; sunrise=1489156026; sunset=1489198372}
id         : 5391959
name       : San Francisco
cod        : 200
person TechSpud    schedule 10.03.2017