Pssst .. wanna get ALL the cool hardware info you see on an iRMC4 WebGui in a Powershell object ?
If you need even the fibrechannel stuff, you won't get it by REST,CIM or WSMAN - i deep-dived some days into all kind of documentations, wasted alot of time in enumerating and finally gave up, the only way seems to be get it from the WebGui - shame on Fujitsu - DELL do it better, see my next post.
This quick-n-dirty shit worked fine for me for PRIMERGY RX2540 M1, PRIMERGY RX2540 M2, PRIMERGY RX4770 M2 and PRIMERGY RX300 S8 - nice for report all MAC, WWPNs, Serials, Firmware etc ... if you use it let me know.
function Get-iRMC_HWInfo($irmcname,$irmcuser,$irmcpw)
{
$rsacred=New-Object System.Management.Automation.PsCredential($irmcuser,$(ConvertTo-SecureString -String $irmcpw -AsPlainText -force))
$body = @{APPLY = 99;P99='Login'}
$irmcwebreq=Invoke-WebRequest "http://$irmcname/login" -SessionVariable irmcsession -Credential $rsacred -Method Post -Body $body
$hwinfo=$($irmcwebreq.AllElements|?{$_.TagName -eq 'TR'}|?{$_.innerText -match '^System Type|^Serial|^System GUID|^System Name|^System\ O/S'}).innerText
$networkinventorylink=$($irmcwebreq.Links|?{$_.innerHTML -eq 'Network Inventory'}).href
$irmcwebreq2=Invoke-WebRequest "http://$irmcname/$networkinventorylink" -WebSession $irmcsession
$tabellen=$irmcwebreq2.ParsedHtml.getElementsByTagName("TABLE")
$nictabelle=$tabellen|?{$_.summary -match 'Ethernet'}
$fctabelle=$tabellen|?{$_.summary -match 'Fibre'}
$nicports=@()
foreach($datarow in $nictabelle.rows){
if($datarow.cells[0].tagName -eq "TD"){
$nicports+=@{Enabled=$datarow.cells[0].innerHTML -match 'ok.gif';
SlotID=$datarow.cells[1].innerText;
FunctionID=$datarow.cells[2].innerText;
PortID=$datarow.cells[3].innerText;
Firmware=$datarow.cells[5].innerText;
OpROM=$datarow.cells[6].innerText;
Interface=$datarow.cells[7].innerText;
VenID=$datarow.cells[9].innerText;
DevID=$datarow.cells[10].innerText;
SubVenID=$datarow.cells[11].innerText;
SubDevID=$datarow.cells[12].innerText;
MAC=$datarow.cells[14].innerText
}
}
}
$fcports=@()
foreach($datarow in $fctabelle.rows){
if($datarow.cells[0].tagName -eq "TD"){
$fcports+=@{Enabled=$datarow.cells[0].innerHTML -match 'ok.gif';
SlotID=$datarow.cells[1].innerText;
FunctionID=$datarow.cells[2].innerText;
PortID=$datarow.cells[3].innerText;
Firmware=$datarow.cells[5].innerText;
OpROM=$datarow.cells[6].innerText;
Interface=$datarow.cells[7].innerText;
VenID=$datarow.cells[9].innerText;
DevID=$datarow.cells[10].innerText;
SubVenID=$datarow.cells[11].innerText;
SubDevID=$datarow.cells[12].innerText;
WWNN=$datarow.cells[14].innerText;
WWPN=$datarow.cells[15].innerText}
}
}
return [pscustomobject]@{
SysType=$hwinfo[0].Split(':')[1];
SysSerial=$hwinfo[1].Split(':')[1];
SysGUID=$hwinfo[2].Split(':')[1];
SysName=$hwinfo[3].Split(':')[1];
SysOS=$hwinfo[4].Split(':')[1];
nicports=$nicports;
fcports=$fcports
}
}
Yeah thats all folks - ugly quick-n-dirty.