Excel报告在PowerShell中格式化

需要帮助来创build脚本来获得HPOA服务器刀片运行状况报告问题是,当我得到查询运行状况时,它将在PSO对象中输出字段(IP,Health,刀片({{Blade1 Health} {Blade2 Health} {3} …))我想要一个如下的报告

IP Bay Power Health
– — —– —–
10.3.131.2 1点击确定
2在OK
3 OK
4 OK
5在退化

variables如下所示。

$ sstaInfo = {} | selectIP,Bay,Power,Health,DeviceFailure
$ sstaInfo.IP = $ ssta.IP(提供一个IP输出)$ sstaInfo.Bay = $ sstaBlades.Bay $ sstaInfo.Power = $ sstaBlades.Power $ sstaInfo.Health = $ sstaBlades.Health

我怎样才能得到这个工作?

$ sstavariables具有以下输出:@ {Power = On; CurrentWattageUsed = 480; 健康= OK; UnitIdentificationLED =closures; VirtualFan = 33%; DiagnosticStatus =; Bay = 1} @ {Power = On; CurrentWattageUsed = 576; 健康= OK; UnitIdentificationLED =closures; VirtualFan = 47%; DiagnosticStatus =; 湾= 2}

#------------------------------------------------------------ Input Variable Definations $HPOAServers =@( [pscustomobject]@{Name='10.11.12.13'}, [pscustomobject]@{Name='10.11.12.14'} ) $Username ="admin" $Password ="admin" #------------------------------------------------------------ Main Script Starts Here # Function for connecting to OA and returning connection object on success foreach ($HPOAServer in $HPOAServers) { $con = Connect-HPOA $HPOAServer.Name -username $Username -password $Password $report = @() $ssta = Get-HPOAServerStatus -Bay All $con $sstaBlade=$ssta.Blade Write-Host $sstaBlade Foreach ($sstaBlades in $sstaBlade) { $i++ $sstaInfo = {} | Select IP, Bay, Power, Health, DeviceFailure $sstaInfo.IP=$ssta.IP $sstaInfo.Bay=$sstaBlades.Bay $sstaInfo.Power=$sstaBlades.Power $sstaInfo.Health=$sstaBlades.Health $sstaInfo.DeviceFailure=$ssta.Blade.DiagnosticStatus.DeviceFailure } $report += $ssta | Select-Object -Property IP $report += $ssta.Blade | Select-Object -Property Bay, Power, Health | Format-Table * $report | out-file "HPOA_Health_Report.txt" -Append } Disconnect-HPOA $con 

我build议你使用Export-CSV来代替,如下所示

  $report | Out-File "HPOA_Health_Report.txt" -Append 

将被replace为:

  $report | Export-Csv "HPOA_Health_Report.csv" -Append -NoTypeInformation 
 Function HPOA () { try { Remove-Item -Path $outputfile -Force foreach ($HPOAServer in $HPOAServers) { $con = Connect-HPOA $HPOAServer.Name -username $Username -password $Password -ErrorAction 'Stop' $ssta = Get-HPOAServerStatus -Bay All $con $ssta.Blade | Foreach-Object { $sstaInfo = $_ $sstaInfo | Select-Object -Property @{Name="Chassis_IP_Address";Expression={$ssta.IP}}, @{Name="Blade_Power_Status";Expression={$_.Power}}, @{Name="Blade_Bay_Number";Expression={$_.Bay}}, @{Name="Blade_Health_Status";Expression={$_.Health}}, @{Name="Blade_Diagnostic_DeviceFailure_Status";Expression={$ssta.Blade.DiagnosticStatus.DeviceFailure}} } | ConvertTo-Html -Title " $HPOARegionName HPOA Health Report " -Head $Header -Body "<H2> $HPOARegionName HPOA Health Report </H2>" -As Table | Out-File -Append $outputfile Disconnect-HPOA $con } } catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName Write-Host $ErrorMessage Write-Host $FailedItem } } HPOA