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.