SystemInfo-ToHTML.psm1
Function SystemInfo-ToHtml { $Head = @" <style type="text/css" media="screen"> TABLE align="center" {border-width: 1px; border-style: solid; border-color: black; border-collapse: colapse;} TH {text-align: center; border-width: 1px; padding: 3px; border-style: solid; border-color: black;background-color: lightblue;} TD {text-align: center; border-width: 1px; padding: 3px; border-style: solid; border-color: black;} </style> <H3> </H3> <Title> HARDWARE REPORT </title> "@ $CPUInfo = Get-WmiObject Win32_Processor $OSInfo = Get-WmiObject Win32_OperatingSystem $modelinfo = Get-CimInstance -ClassName win32_computersystem $moboinfo = Get-WmiObject win32_baseboard $biosinfo = Get-WmiObject win32_bios $InstalledRAM = Get-WmiObject -Class Win32_ComputerSystem $TotalInstalledRAM = [Math]::Round(($InstalledRAM.TotalPhysicalMemory / 1GB)) $videoinfo = Get-WmiObject win32_videocontroller $audioinfo = Get-WmiObject win32_sounddevice $printerinfo = Get-WmiObject win32_printer 2>$null Foreach ($CPU in $CPUInfo) { # CPU $infoObject = New-Object PSObject Add-Member -inputObject $infoObject -memberType NoteProperty -name "Family" -value $CPU.Description Add-Member -inputObject $infoObject -memberType NoteProperty -name "Model" -value $CPU.Name Add-Member -inputObject $infoObject -memberType NoteProperty -name "Manufacturer" -value $CPU.Manufacturer Add-Member -inputObject $infoObject -memberType NoteProperty -name "Fisical Cores" -value $CPU.NumberOfCores Add-Member -inputObject $infoObject -memberType NoteProperty -name "L2 Cache" -value $CPU.L2CacheSize Add-Member -inputObject $infoObject -memberType NoteProperty -name "L3 Cache" -value $CPU.L3CacheSize Add-Member -inputObject $infoObject -memberType NoteProperty -name "Socket" -Value $CPU.SocketDesignation Add-Member -inputObject $infoObject -memberType NoteProperty -name "Logical Processors" -value $CPU.NumberOfLogicalProcessors } $a = $infoObject | ConvertTo-Html -Fragment -PreContent "<h2> ----------------------------------------------------- HARDWARE REPORT ----------------------------------------------------- </h2><p> <h3> PROCESSORS: </h3>" -PostContent "<h3> OPERATING SYSTEM: </h3>" Foreach ($OS in $OSInfo) { # SO $infoObject2 = New-Object PSObject Add-Member -inputObject $infoObject2 -memberType NoteProperty -name "Name" -value $OSInfo.Caption Add-Member -inputObject $infoObject2 -memberType NoteProperty -name "Build Number" -value $OSInfo.BuildNumber Add-Member -inputObject $infoObject2 -memberType NoteProperty -name "Manufacturer" -value $OSInfo.Manufacturer Add-Member -inputObject $infoObject2 -memberType NoteProperty -name "Serial Number" -value $OSInfo.SerialNumber Add-Member -inputObject $infoObject2 -memberType NoteProperty -name "Status" -value $OSInfo.Status } $b = $infoObject2 | ConvertTo-Html -PreContent "<h2> </h2>" -Fragment Foreach ($VGA in $videoinfo) { # VIDEO $infoObject3 = New-Object PSObject Add-Member -inputObject $infoObject3 -memberType NoteProperty -name "Manufacturer" -value $vga.adaptercompatibility Add-Member -inputObject $infoObject3 -memberType NoteProperty -name "Model" -value $vga.Caption Add-Member -inputObject $infoObject3 -memberType NoteProperty -name "Driver" -value $vga.DriverVersion Add-Member -inputObject $infoObject3 -memberType NoteProperty -name "Status" -value $vga.Status Add-Member -inputObject $infoObject3 -memberType NoteProperty -name "Resolution" -value $vga.VideoModeDescription } $c = $infoObject3 | ConvertTo-Html -Fragment -PreContent "<H3>VIDEO:</h3>" Foreach ($printer in $printerinfo) { # PRINTERS $infoObject4 = New-Object PSObject Add-Member -inputObject $infoObject4 -memberType NoteProperty -name "Name" -value $printer.Caption Add-Member -inputObject $infoObject4 -memberType NoteProperty -name "Default Printer" -value $printer.default Add-Member -inputObject $infoObject4 -memberType NoteProperty -name "Driver" -value $printer.drivername Add-Member -inputObject $infoObject4 -memberType NoteProperty -name "Port" -value $printer.portname Add-Member -inputObject $infoObject4 -memberType NoteProperty -name "Print server" -value $printer.servername Add-Member -inputObject $infoObject4 -memberType NoteProperty -name "Spool Service Status" -value $printer.spoolenabled } $d = $infoObject4 | ConvertTo-Html -Fragment -PreContent "<H3>PRINTERS:</h3>" # LOCAL MACHINE foreach ($model in $modelinfo -and $TotalInstalledRAM) { $infoObject5 = New-Object psobject Add-Member -InputObject $infoObject5 -MemberType NoteProperty -Name "Name" -Value $modelinfo.Name Add-Member -InputObject $infoObject5 -MemberType NoteProperty -Name "Type" -Value $modelinfo.ChassisSKUNumber Add-Member -InputObject $infoObject5 -MemberType NoteProperty -Name "Family" -Value $modelinfo.SystemFamily Add-Member -InputObject $infoObject5 -MemberType NoteProperty -Name "Model" -Value $modelinfo.Model Add-Member -InputObject $infoObject5 -MemberType NoteProperty -Name "Installed (GB)" -Value $TotalInstalledRAM } $e = $infoObject5 | ConvertTo-Html -PreContent "<H3>LOCAL MACHINE:</H3>" -Fragment Foreach ($MOBO in $moboInfo -and $biosinfo) { # MOBO $infoObject6 = New-Object PSObject Add-Member -inputObject $infoObject6 -memberType NoteProperty -name "Manufacturer" -value $moboinfo.Manufacturer Add-Member -inputObject $infoObject6 -memberType NoteProperty -name "Serial Number" -value $moboinfo.SerialNumber Add-Member -inputObject $infoObject6 -memberType NoteProperty -name "Model" -value $moboinfo.Product Add-Member -inputObject $infoObject6 -memberType NoteProperty -name "BIOS" -value $biosinfo.SMBIOSBIOSVersion } $f = $infoObject6 | ConvertTo-Html -Fragment -PreContent "<H3>MOTHERBOARD:</h3>" Foreach ($audio in $audioinfo) { # SOUND $infoObject7 = New-Object PSObject Add-Member -inputObject $infoObject7 -memberType NoteProperty -name "Manufacturer" -value $audio.Manufacturer Add-Member -inputObject $infoObject7 -memberType NoteProperty -name "Name" -value $audio.Name Add-Member -inputObject $infoObject7 -memberType NoteProperty -name "Status" -value $audio.Status } $g = $infoObject7 | ConvertTo-Html -Fragment -PreContent "<H3>SOUND CARD:</h3>" # NETWORK $h = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IPAddress -ne $null } | Select-Object DNSdomain, @{Name = "Manufacturer" ; Expression = { $_.Description } }, @{Name = "IP Addresses" ; Expression = { $_.ipaddress } }, @{Name = "Gateway" ; Expression = { $_.DefaultIPGateway } }, @{Name = "Mac Address" ; Expression = { $_.MACAddress } }, @{Name = "DHCP Server" ; Expression = { $_.dhcpserver } } | ConvertTo-Html -Fragment -As Table -PreContent "<H3>NETWORK:</H3>" -PostContent "<H3>DISKS:</H3>" # DISKS $i = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq "3" } | Select-Object VolumeName, DeviceID, @{ Name = "Total (GB)" ; Expression = { "{0:N1}" -f ( $_.Size / 1gb) } }, @{ Name = "Free Space (GB)" ; Expression = { "{0:N1}" -f ( $_.Freespace / 1gb ) } }, @{ Name = "% Free" ; Expression = { "{0:P0}" -f ( $_.FreeSpace / $_.Size ) } } | ConvertTo-Html -Fragment -As Table Clear-Host ConvertTo-Html -Body "$a $b $c $d $e $f $g $h $i " -Head $head | Out-File $env:USERPROFILE\desktop\Report.htm Invoke-Item $env:USERPROFILE\desktop\Report.htm } |