Get-NSTrainStation.ps1
#Requires -Module @{ModuleName='NSTrainTime'; RequiredVersion='1.1.0.0'} function Get-NSTrainStation{ <# .SYNOPSIS Find a list of matching Dutch train stations. .DESCRIPTION Gets train station names from the Dutch NS API (https://www.ns.nl/en/travel-information/ns-api) Needs connection to External API http://webservices.ns.nl/ns-api-treinplanner Use an Internet connected machine Requires NSTrainTime module .NOTES Author: Kenny White 08/06/2019 .Example Get-NSTrainStation -StationName 'Amsterd' Returns sorted results of a wildcard search Amsterdam Amsterdam Airport Amsterdam Amstel Amsterdam Bijlmer ArenA Amsterdam Centraal Amsterdam Holendrecht Amsterdam Lelylaan Amsterdam Muiderpoort Amsterdam RAI Amsterdam Science Park Amsterdam Sloterdijk Amsterdam Van der Madeweg Amsterdam Zuid Nieuw Amsterdam #> [cmdletbinding()] [alias('gnsts')] Param( #Station or part-station name [Parameter(Mandatory=$true,Position=0)] [string]$StationName, #Optional NS Train stations API URI [Parameter(Position=1)] [uri]$URI = "http://webservices.ns.nl/ns-api-stations" ) try{ $apiUser = Get-NSAPICredential -ErrorAction Stop -verbose } catch{ Throw "Unable to retrieve API credentials. Check that dummy values from APICredential.psd1 are updated: $_" } $formatCred = Get-NSWebClientHeader -Username $apiUser.Username -APIKey $apiUser.APIKey [xml]$xml = Get-NSXML -WebClientHeaderAuth $formatCred -URI "http://webservices.ns.nl/ns-api-stations" $xml.SelectNodes("//station").Where({$_.name -like "*$StationName*"}).ForEach({ $_.name }) } |