It is easy! Just create and compile SOAP proxy, and load it into PowerShell. Create instance, set credentials and URL.
wsdl.exe /out:rs2005.cs http://rshost/reportserver/reportservice2005.asmx csc /t:library rs2005.cs [Reflection.Assembly]::LoadFrom("rs2005.dll") $rs = new-object ReportingService2005 $rs.Credentials = [System.Net.CredentialCache]::DefaultCredentials
Now, $rs will talk to whatever server was set in step 1. Server URL can be changed easily:
$rs.Url = "http://anotherserver/reportserver/reportservice2005.asmx"
Now we can call any SOAP API methods:
$rs.GetSystemProperties($null) $rs.ListChildren("/",$false)
etc, etc.