I'm pulling information from a web service using PowerShell's New-WebServiceProxy with GetRecords, and manipulating how it displays in PS using a custom type. For the sake of the question, the PS code looks like:
functionGet-ServerInfo{
param (
[Parameter(ValueFromPipeline=$true)]$ServerName
)
begin{
Add-Type@"
namespace MyTypes {
public class ServerItem {
public string server_name ;
public string ip_address ;
public bool ip_active ;
}
}
"@
$server =New-ObjectMyTypes.ServerItem
$uri ='https://mysite.com/servers_list.do?WSDL'
$conn =New-WebServiceProxy-Uri $uri
$getRecords =new-object( $conn.GetType().Namespace+'.getRecords')
}
process {
$getRecords.server_name = $ServerName
$SNConn.getRecords($getRecords)|%{
New-ObjectMyTypes.ServerItem-Property@{
name = $_.name
ip_address = $_.ip_address
ip_active = $_.ip_active
}
}
}
}
Get-ServerInfoServer1| ft-autosize
name ip_address ip_active
---- ---------- ---------
Server1148.89.245.124 True
Server1127.0.0.1 False
The WSDL that I'm using is doing an outer join between the server object table, and the IP table, so if the server has two assigned IPs, it returns two records. I would like to add a property to the object like IPInfo, that would retain the ip_address and ip_active structure, but allow be to store it as a single instance on the object I'm returning. So that the return for the server would look like:
Get-ServerInfoServer1 name ip_info --------------Server1{148.89.245.124,127.0.0.1}(Get-ServerInfoServer1).ip_info ip_address ip_active -------------------148.89.245.124True127.0.0.1False
Do I need to define a public Object[] ip_info, or something else. Examples would be appreciated, as this is my first foray into the C# side.