Weather WebService in Powershell

Did you know how easy it is to test a web service in Powershell? I think I can get used to this new tool.

Proof of concept

Here’s my script for checking the weather in powershell:

$uri = "http://www.webservicex.net/WeatherForecast.asmx?WSDL" 
$WeatherForecast = New-WebServiceProxy -uri $uri -UseDefaultCredential -namespace "WeatherForecast" 
$WeatherForecast.GetWeatherByZipCode(78247)
$WeatherForecast.GetWeatherByZipCode(78247).details

image

This publicly available web service returns the lat, lon of a zip! Sweet. I can find other uses for that.

image

The details object returns the forecast for today and the next 5 days.

Get the Methods

To reuse, substitute your web service’s WSDL URI and use something like the following to check for existing methods available:

$WeatherForecast | get-member -type method
image 

Reference

I got inspiration and code pieces from StackOverflow.com, Technet’s New-WebServiceProxy reference and a blog post by Keith Hill.

2 Comments
  1. So it dynamically creates a web proxy from a published WSDL? Is this a SOAP web service or REST based? Is it returning JSON or XML? Can it do WS*?

  2. Yes, the proxy is created automatically. The example script calls a SOAP based web service which is most likely for a WSDL. REST doesn’t really do WSDL but I’d love to see a REST example that was this simple. JSON is XML, but I’m not sure if this example service uses it.
    Thanks for the comment!
    -Tom

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.