Hi there
I'm writing up a server report script which would be report on a various aspects of server such as disk space, status of some of the services. I would like to add more aspects but before that i'm struggling to get this report comeout in a desired format.
How do i go about eliminating empty rows it is creating so that the format looks better.
Also is there a better way the data could be captured so that i can add more aspects such as get-process etc.
The only problem i have is the detail has to be in the table format
I'm passing a server.txt file which has the list of servers something like this
serverA=testserver
serverB=uatserver
serverC=devserver
serverD=prodserver
Here is my script
$DiskSpaceReportCollection = @()
$BuildMachinesList = $args[0]
$BuildMachines = Get-Content $BuildMachinesList
Foreach ($BuildMachine in $BuildMachines)
{
$Computer = $BuildMachine.SubString(0,15)
$Description = $BuildMachine.SubString(16)
$ReportInfo = New-Object -TypeName PSObject
$ReportInfo | Add-Member -type NoteProperty -Name "Computer" -Value $Computer
$ReportInfo | Add-Member -type NoteProperty -Name "Description" -Value $Description
$ReportInfo | Add-Member -type NoteProperty -Name "DriveName" -Value ""
$ReportInfo | Add-Member -type NoteProperty -Name "Total Space" -Value ""
$ReportInfo | Add-Member -type NoteProperty -Name "Remaining Space" -Value ""
$ReportInfo | Add-Member -type NoteProperty -Name "Percent Free" -Value ""
$ReportInfo | Add-Member -type NoteProperty -Name "Hudson Services" -Value ""
$ReportInfo | Add-Member -type NoteProperty -Name "Status" -Value ""
$DiskSpaceReportCollection +=$ReportInfo
#Check Server is down
If (!(Test-Connection -ComputerName $Computer -Count 1 -Quiet))
{
Continue # Move to next computer
}
else
{
# Check Disk Space
$DiskData = Get-WmiObject -ComputerName $Computer Win32_LogicalDisk `
| Select-Object Name, `
@{Name="TotalSpace(GB)";Expression={ "{0:n2}" -f ($_.Size/1GB)}},`
@{Name="FreeSpace(GB)";Expression={"{0:n2}" -f($_.FreeSpace/1GB)}}, `
@{Name="PercentFree";Expression={"{0:n2}" -f ($_.freespace/$_.size*100)}} `
| Where-Object {($_.Name -like "C:" -or $_.Name -like "E:")}
foreach ($Disk in $DiskData)
{
$DriveType = New-Object -TypeName PSObject
$DriveType | Add-Member -type NoteProperty -Name "Computer" -Value ""
$DriveType | Add-Member -type NoteProperty -Name "Description" -Value ""
$DriveType | Add-Member -type NoteProperty -Name "DriveName" -Value $Disk.Name
$DriveType | Add-Member -type NoteProperty -Name "Total Space" -Value $Disk."TotalSpace(GB)"
$DriveType | Add-Member -type NoteProperty -Name "Remaining Space" -Value $Disk."FreeSpace(GB)"
$DriveType | Add-Member -type NoteProperty -Name "Percent Free" -Value $Disk.PercentFree
$DriveType | Add-Member -type NoteProperty -Name "Hudson Services" -Value ""
$DriveType | Add-Member -type NoteProperty -Name "Status" -Value ""
$DiskSpaceReportCollection +=$DriveType
}
# Check Service Status
$ServicesList = Get-Service -ComputerName $Computer | Select-Object ServiceName, Status | Where-Object {$_.ServiceName -like "Hudson*" -or $_.ServiceName -like "Tomcat*"}
foreach ($Service in $ServicesList)
{
$ServiceType = New-Object -TypeName PSObject
$ServiceType | Add-Member -type NoteProperty -Name "Computer" -Value ""
$ServiceType | Add-Member -type NoteProperty -Name "Description" -Value ""
$ServiceType | Add-Member -type NoteProperty -Name "DriveName" -Value ""
$ServiceType | Add-Member -type NoteProperty -Name "Total Space" -Value ""
$ServiceType | Add-Member -type NoteProperty -Name "Remaining Space" -Value ""
$ServiceType | Add-Member -type NoteProperty -Name "Percent Free" -Value ""
$ServiceType | Add-Member -type NoteProperty -Name "Hudson Services" -Value $Service.ServiceName
$ServiceType | Add-Member -type NoteProperty -Name "Status" -Value $Service.Status
$DiskSpaceReportCollection +=$ServiceType
}
}
}
$DiskSpaceReportCollection | ConvertTo-Html | Out-File C:\TEST\Test.htm
Invoke-Expression C:\TEST\Test.htm