Hi,
I have this below script that I put together using various bits I found online, to inventory our PC’s across the site. The script uses a text file populated with the names of the PC’s and outputs the info in a csv. This was working fine until I added the bits to get monitor info and installed/Pending Updates.
Now it works on some PC’s but not on others. I don’t think it likes PC’s with dual monitors. Is there a way to make that work?
I get errors like this a lot now.
Cannot convert the “System.Object” value of type “System.Object” to type “System.Management.ManagementObject”.
Any help getting this working on all the PC’s would be really appreciated.
#Test if the text file exisits If (Test-Path C:\PC_ServerList.txt) { Write-Host "Importing PC/Server hostnames" -ForegroundColor Yellow } Else { Write-Host "Cannot find PC_ServerList.txt text file. Please check if the file exists." -ForegroundColor Red Continue } #Gets the list of PC names $ComputerList = Get-Content C:\PC_ServerList.txt #Or $Computerlist = Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*' } | Select-Object -ExpandProperty Name $OutputCSV = "C:\PC_ServerInventory.csv" $ScriptPath = $MyInvocation.MyCommand.Path #$Dir = Split-Path $ScriptPath Pushd $Dir [System.Collections.ArrayList]$SysCollection = New-Object System.Collections.ArrayList($Null) -ErrorAction SilentlyContinue ForEach ($Computer in $ComputerList) { "Collecting information from $Computer" Try { #Starts the necessary services Get-Service -Name WinRM -ComputerName $Computer -ErrorAction SilentlyContinue | Set-Service -Startuptype Automatic -Status Running Get-Service -Name RemoteRegistry -ComputerName $Computer -ErrorAction SilentlyContinue | Set-Service -Startuptype Automatic -Status Running Get-Service -Name COMSysApp -ComputerName $Computer -ErrorAction SilentlyContinue | Set-Service -Startuptype Automatic -Status Running Get-Service -Name EventSystem -ComputerName $Computer -ErrorAction SilentlyContinue | Set-Service -Startuptype Automatic -Status Running [WMI]$SysInfo = Get-WmiObject Win32_ComputerSystem -Namespace "Root\CIMV2" -ComputerName $Computer -ErrorAction SilentlyContinue [WMI]$Monitors = Get-WmiObject WmiMonitorID -Namespace "Root\WMI" -ComputerName $Computer -ErrorAction SilentlyContinue [WMI]$BIOS = Get-WmiObject Win32_BIOS -Namespace "Root\CIMV2" -ComputerName $Computer -ErrorAction SilentlyContinue [WMI]$OS = Get-WmiObject Win32_OperatingSystem -Namespace "Root\CIMV2" -ComputerName $Computer -ErrorAction SilentlyContinue [WMI]$Processor = Get-WmiObject Win32_Processor -Namespace "Root\CIMV2" -ComputerName $Computer -ErrorAction SilentlyContinue [WMI]$AV = Get-WmiObject AntiVirusProduct -Namespace "Root\SecurityCenter2" -ComputerName $Computer -ErrorAction SilentlyContinue [WMI]$LastUser = Get-WmiObject Win32_Process -Namespace "Root\CIMV2" -ComputerName $Computer -ErrorAction SilentlyContinue | Where-Object Name -Match Explorer [WMI]$TimeZone = Get-WmiObject Win32_TimeZone -Namespace "Root\CIMV2" -ComputerName $Computer -ErrorAction SilentlyContinue [Array]$Disks = Get-WmiObject Win32_LogicalDisk -Namespace "Root\CIMV2" -ComputerName $Computer -Filter DriveType=3 -ErrorAction SilentlyContinue [Array]$USBDisks = Get-WmiObject Win32_LogicalDisk -Namespace "Root\CIMV2" -ComputerName $Computer -Filter DriveType=2 -ErrorAction SilentlyContinue [Array]$NIC = Get-WmiObject Win32_NetworkAdapterConfiguration -Namespace "Root\CIMV2" -ComputerName $Computer -Filter 'IPEnabled = "True"' -ErrorAction SilentlyContinue #Selects the Administrator $LocalAdmin = Invoke-Command -ComputerName $Computer -ErrorAction SilentlyContinue {Get-LocalUser -Name "Administrator"} #Gets the AV Last updated time/date $AVDU = Invoke-Command -ComputerName $Computer -ErrorAction SilentlyContinue {Get-MpComputerStatus | Select-Object -Property AntivirusSignatureLastUpdated} #Gets the release ID Number $OSVersion = Invoke-command -ComputerName $Computer -ErrorAction SilentlyContinue {Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"} #Gets the system uptime $LastBoot = [System.Management.ManagementDateTimeConverter]::ToDateTime("$($OS.LastBootUpTime)") $UpTime = (Get-Date) - $LastBoot #Switch for the AV Real Time Protection and Definition Status Switch ($AV.ProductState){ "262144" {$DefStatus = "Up to date" ;$RTStatus = "Disabled"} "262160" {$DefStatus = "Out of date" ;$RTStatus = "Disabled"} "266240" {$DefStatus = "Up to date" ;$RTStatus = "Enabled"} "266256" {$DefStatus = "Out of date" ;$RTStatus = "Enabled"} "393216" {$DefStatus = "Up to date" ;$RTStatus = "Disabled"} "393232" {$DefStatus = "Out of date" ;$RTStatus = "Disabled"} "393488" {$DefStatus = "Out of date" ;$RTStatus = "Disabled"} "397312" {$DefStatus = "Up to date" ;$RTStatus = "Enabled"} "397328" {$DefStatus = "Out of date" ;$RTStatus = "Enabled"} "397584" {$DefStatus = "Out of date" ;$RTStatus = "Enabled"} "397568" {$DefStatus = "Up to date"; $RTStatus = "Enabled"} "393472" {$DefStatus = "Up to date" ;$RTStatus = "Disabled"} Default {$DefStatus = "Unknown" ;$RTStatus = "Unknown"}} #Switch to list the name of the OS Language Switch ($OS.OSLanguage){ "1078" {$OSLan = "Afrikaans - South Africa"} "1052" {$OSLan = "Albanian - Albania"} "1118" {$OSLan = "Amharic - Ethiopia"} "1025" {$OSLan = "Arabic - Saudi Arabia"} "5121" {$OSLan = "Arabic - Algeria"} "15361" {$OSLan = "Arabic - Bahrain"} "3073" {$OSLan = "Arabic - Egypt"} "2049" {$OSLan = "Arabic - Iraq"} "11265" {$OSLan = "Arabic - Jordan"} "13313" {$OSLan = "Arabic - Kuwait"} "12289" {$OSLan = "Arabic - Lebanon"} "4097" {$OSLan = "Arabic - Libya"} "6145" {$OSLan = "Arabic - Morocco"} "8193" {$OSLan = "Arabic - Oman"} "16385" {$OSLan = "Arabic - Qatar"} "10241" {$OSLan = "Arabic - Syria"} "7169" {$OSLan = "Arabic - Tunisia"} "14337" {$OSLan = "Arabic - U.A.E."} "9217" {$OSLan = "Arabic - Yemen"} "1067" {$OSLan = "Armenian - Armenia"} "1101" {$OSLan = "Assamese"} "2092" {$OSLan = "Azeri (Cyrillic)"} "1068" {$OSLan = "Azeri (Latin)"} "1069" {$OSLan = "Basque"} "1059" {$OSLan = "Belarusian"} "1093" {$OSLan = "Bengali (India)"} "2117" {$OSLan = "Bengali (Bangladesh)"} "5146" {$OSLan = "Bosnian (Bosnia/Herzegovina)"} "1026" {$OSLan = "Bulgarian"} "1109" {$OSLan = "Burmese"} "1027" {$OSLan = "Catalan"} "1116" {$OSLan = "Cherokee - United States"} "2052" {$OSLan = "Chinese - People's Republic of China"} "4100" {$OSLan = "Chinese - Singapore"} "1028" {$OSLan = "Chinese - Taiwan"} "3076" {$OSLan = "Chinese - Hong Kong SAR"} "5124" {$OSLan = "Chinese - Macao SAR"} "1050" {$OSLan = "Croatian"} "4122" {$OSLan = "Croatian (Bosnia/Herzegovina)"} "1029" {$OSLan = "Czech"} "1030" {$OSLan = "Danish"} "1125" {$OSLan = "Divehi"} "1043" {$OSLan = "Dutch - Netherlands"} "2067" {$OSLan = "Dutch - Belgium"} "1126" {$OSLan = "Edo"} "1033" {$OSLan = "English - United States"} "2057" {$OSLan = "English - United Kingdom"} "3081" {$OSLan = "English - Australia"} "10249" {$OSLan = "English - Belize"} "4105" {$OSLan = "English - Canada"} "9225" {$OSLan = "English - Caribbean"} "15369" {$OSLan = "English - Hong Kong SAR"} "16393" {$OSLan = "English - India"} "14345" {$OSLan = "English - Indonesia"} "6153" {$OSLan = "English - Ireland"} "8201" {$OSLan = "English - Jamaica"} "17417" {$OSLan = "English - Malaysia"} "5129" {$OSLan = "English - New Zealand"} "13321" {$OSLan = "English - Philippines"} "18441" {$OSLan = "English - Singapore"} "7177" {$OSLan = "English - South Africa"} "11273" {$OSLan = "English - Trinidad"} "12297" {$OSLan = "English - Zimbabwe"} "1061" {$OSLan = "Estonian"} "1080" {$OSLan = "Faroese"} "1065" {$OSLan = "Farsi"} "1124" {$OSLan = "Filipino"} "1035" {$OSLan = "Finnish"} "1036" {$OSLan = "French - France"} "2060" {$OSLan = "French - Belgium"} "11276" {$OSLan = "French - Cameroon"} "3084" {$OSLan = "French - Canada"} "9228" {$OSLan = "French - Democratic Rep. of Congo"} "12300" {$OSLan = "French - Cote d'Ivoire"} "15372" {$OSLan = "French - Haiti"} "5132" {$OSLan = "French - Luxembourg "} "13324" {$OSLan = "French - Mali"} "6156" {$OSLan = "French - Monaco"} "14348" {$OSLan = "French - Morocco"} "58380" {$OSLan = "French - North Africa"} "8204" {$OSLan = "French - Reunion"} "10252" {$OSLan = "French - Senegal"} "4108" {$OSLan = "French - Switzerland"} "7180" {$OSLan = "French - West Indies"} "1122" {$OSLan = "Frisian - Netherlands"} "1127" {$OSLan = "Fulfulde - Nigeria"} "1071" {$OSLan = "FYRO Macedonian"} "2108" {$OSLan = "Gaelic (Ireland)"} "1084" {$OSLan = "Gaelic (Scotland)"} "1110" {$OSLan = "Galician"} "1079" {$OSLan = "Georgian"} "1031" {$OSLan = "German - Germany"} "3079" {$OSLan = "German - Austria"} "5127" {$OSLan = "German - Liechtenstein"} "4103" {$OSLan = "German - Luxembourg"} "2055" {$OSLan = "German - Switzerland"} "1032" {$OSLan = "Greek"} "1140" {$OSLan = "Guarani - Paraguay"} "1095" {$OSLan = "Gujarati"} "1128" {$OSLan = "Hausa - Nigeria"} "1141" {$OSLan = "Hawaiian - United States"} "1037" {$OSLan = "Hebrew"} "1081" {$OSLan = "Hindi"} "1038" {$OSLan =" Hungarian"} "1129" {$OSLan = "Ibibio - Nigeria"} "1039" {$OSLan = "Icelandic"} "1136" {$OSLan = "Igbo - Nigeria"} "1057" {$OSLan = "Indonesian"} "1117" {$OSLan = "Inuktitut"} "1040" {$OSLan = "Italian - Italy"} "2064" {$OSLan = "Italian - Switzerland"} "1041" {$OSLan = "Japanese"} "1099" {$OSLan = "Kannada"} "1137" {$OSLan = "Kanuri - Nigeria"} "2144" {$OSLan = "Kashmiri"} "1120" {$OSLan = "Kashmiri (Arabic)"} "1087" {$OSLan = "Kazakh"} "1107" {$OSLan = "Khmer"} "1111" {$OSLan = "Konkani"} "1042" {$OSLan = "Korean"} "1088" {$OSLan = "Kyrgyz (Cyrillic)"} "1108" {$OSLan = "Lao"} "1142" {$OSLan = "Latin"} "1062" {$OSLan = "Latvian"} "1063" {$OSLan = "Lithuanian"} "1086" {$OSLan = "Malay - Malaysia"} "2110" {$OSLan = "Malay - Brunei Darussalam"} "1100" {$OSLan = "Malayalam"} "1082" {$OSLan = "Maltese"} "1112" {$OSLan = "Manipuri"} "1153" {$OSLan = "Maori - New Zealand"} "1102" {$OSLan = "Marathi"} "1104" {$OSLan = "Mongolian (Cyrillic)"} "2128" {$OSLan = "Mongolian (Mongolian)"} "1121" {$OSLan = "Nepali"} "2145" {$OSLan = "Nepali - India"} "1044" {$OSLan = "Norwegian (Bokmål)"} "2068" {$OSLan = "Norwegian (Nynorsk)"} "1096" {$OSLan = "Oriya"} "1138" {$OSLan = "Oromo"} "1145" {$OSLan = "Papiamentu"} "1123" {$OSLan = "Pashto"} "1045" {$OSLan = "Polish"} "1046" {$OSLan = "Portuguese - Brazil"} "2070" {$OSLan = "Portuguese - Portugal"} "1094" {$OSLan = "Punjabi"} "2118" {$OSLan = "Punjabi (Pakistan)"} "1131" {$OSLan = "Quecha - Bolivia"} "2155" {$OSLan = "Quecha - Ecuador"} "3179" {$OSLan = "Quecha - Peru"} "1047" {$OSLan = "Rhaeto-Romanic"} "1048" {$OSLan = "Romanian"} "2072" {$OSLan = "Romanian - Moldava"} "1049" {$OSLan = "Russian"} "2073" {$OSLan = "Russian - Moldava"} "1083" {$OSLan = "Sami (Lappish)"} "1103" {$OSLan = "Sanskrit"} "1132" {$OSLan = "Sepedi"} "3098" {$OSLan = "Serbian (Cyrillic)"} "2074" {$OSLan = "Serbian (Latin)"} "1113" {$OSLan = "Sindhi - India"} "2137" {$OSLan = "Sindhi - Pakistan"} "1115" {$OSLan = "Sinhalese - Sri Lanka"} "1051" {$OSLan = "Slovak"} "1060" {$OSLan = "Slovenian"} "1143" {$OSLan = "Somali"} "1070" {$OSLan = "Sorbian"} "3082" {$OSLan = "Spanish - Spain (Modern Sort)"} "1034" {$OSLan = "Spanish - Spain (Traditional Sort)"} "11274" {$OSLan = "Spanish - Argentina"} "16394" {$OSLan = "Spanish - Bolivia"} "13322" {$OSLan = "Spanish - Chile"} "9226" {$OSLan = "Spanish - Colombia"} "5130" {$OSLan = "Spanish - Costa Rica"} "7178" {$OSLan = "Spanish - Dominican Republic"} "12298" {$OSLan = "Spanish - Ecuador"} "17418" {$OSLan = "Spanish - El Salvador"} "4106" {$OSLan = "Spanish - Guatemala"} "18442" {$OSLan = "Spanish - Honduras"} "22538" {$OSLan = "Spanish - Latin America"} "2058" {$OSLan = "Spanish - Mexico"} "19466" {$OSLan = "Spanish - Nicaragua"} "6154" {$OSLan = "Spanish - Panama"} "15370" {$OSLan = "Spanish - Paraguay"} "10250" {$OSLan = "Spanish - Peru"} "20490" {$OSLan = "Spanish - Puerto Rico"} "21514" {$OSLan = "Spanish - United States"} "14346" {$OSLan = "Spanish - Uruguay"} "8202" {$OSLan = "Spanish - Venezuela"} "1072" {$OSLan = "Sutu"} "1089" {$OSLan = "Swahili"} "1053" {$OSLan = "Swedish"} "2077" {$OSLan = "Swedish - Finland"} "1114" {$OSLan = "Syriac"} "1064" {$OSLan = "Tajik"} "1119" {$OSLan = "Tamazight (Arabic)"} "2143" {$OSLan = "Tamazight (Latin)"} "1097" {$OSLan = "Tamil"} "1092" {$OSLan = "Tatar"} "1098" {$OSLan = "Telugu"} "1054" {$OSLan = "Thai"} "2129" {$OSLan = "Tibetan - Bhutan"} "1105" {$OSLan = "Tibetan - People's Rep. of China"} "2163" {$OSLan = "Tigrigna - Eritrea"} "1139" {$OSLan = "Tigrigna - Ethiopia"} "1073" {$OSLan = "Tsonga"} "1074" {$OSLan = "Tswana"} "1055" {$OSLan = "Turkish"} "1090" {$OSLan = "Turkmen"} "1152" {$OSLan = "Uighur - China"} "1058" {$OSLan = "Ukrainian"} "1056" {$OSLan = "Urdu"} "2080" {$OSLan = "Urdu - India"} "2115" {$OSLan = "Uzbek (Cyrillic)"} "1091" {$OSLan = "Uzbek (Latin)"} "1075" {$OSLan = "Venda"} "1066" {$OSLan = "Vietnamese"} "1106" {$OSLan = "Welsh"} "1076" {$OSLan = "Xhosa"} "1144" {$OSLan = "Yi"} "1085" {$OSLan = "Yiddish"} "1130" {$OSLan = "Yoruba"} "1077" {$OSLan = "Zulu"} "1279" {$OSLan = "HID (Human Interface Device)"}} #Switch to list the name of the monitor manufacturer Switch ($MonManufacturer){ "AAC" {$MonFriendlyName = "AcerView"} "ACR" {$MonFriendlyName = "Acer"} "AOC" {$MonFriendlyName = "AOC"} "AIC" {$MonFriendlyName = "AG Neovo"} "APP" {$MonFriendlyName = "Apple Computer"} "AST" {$MonFriendlyName = "AST Research"} "AUO" {$MonFriendlyName = "Asus"} "BNQ" {$MonFriendlyName = "BenQ"} "CMO" {$MonFriendlyName = "Acer"} "CPL" {$MonFriendlyName = "Compal"} "CPQ" {$MonFriendlyName = "Compaq"} "CPT" {$MonFriendlyName = "Chunghwa Pciture Tubes, Ltd."} "CTX" {$MonFriendlyName = "CTX"} "DEC" {$MonFriendlyName = "DEC"} "DEL" {$MonFriendlyName = "Dell"} "DPC" {$MonFriendlyName = "Delta"} "DWE" {$MonFriendlyName = "Daewoo"} "EIZ" {$MonFriendlyName = "EIZO"} "ELS" {$MonFriendlyName = "ELSA"} "ENC" {$MonFriendlyName = "EIZO"} "EPI" {$MonFriendlyName = "Envision"} "FCM" {$MonFriendlyName = "Funai"} "FUJ" {$MonFriendlyName = "Fujitsu"} "FUS" {$MonFriendlyName = "Fujitsu-Siemens"} "GSM" {$MonFriendlyName = "LG Electronics"} "GWY" {$MonFriendlyName = "Gateway 2000"} "HEI" {$MonFriendlyName = "Hyundai"} "HIT" {$MonFriendlyName = "Hyundai"} "HSD" {$MonFriendlyName = "Hanns-G"} "HSL" {$MonFriendlyName = "Hansol"} "HTC" {$MonFriendlyName = "Hitachi/Nissei"} "HWP" {$MonFriendlyName = "HP"} "IBM" {$MonFriendlyName = "IBM"} "ICL" {$MonFriendlyName = "Fujitsu ICL"} "IVM" {$MonFriendlyName = "Iiyama"} "KDS" {$MonFriendlyName = "Korea Data Systems"} "LEN" {$MonFriendlyName = "Lenovo"} "LGD" {$MonFriendlyName = "Asus"} "LPL" {$MonFriendlyName = "Fujitsu"} "MAX" {$MonFriendlyName = "Belinea"} "MEI" {$MonFriendlyName = "Panasonic"} "MEL" {$MonFriendlyName = "Mitsubishi Electronics"} "MS_" {$MonFriendlyName = "Panasonic"} "NAN" {$MonFriendlyName = "Nanao"} "NEC" {$MonFriendlyName = "NEC"} "NOK" {$MonFriendlyName = "Nokia Data"} "NVD" {$MonFriendlyName = "Fujitsu"} "OPT" {$MonFriendlyName = "Optoma"} "PHL" {$MonFriendlyName = "Philips"} "REL" {$MonFriendlyName = "Relisys"} "SAN" {$MonFriendlyName = "Samsung"} "SAM" {$MonFriendlyName = "Samsung"} "SBI" {$MonFriendlyName = "Smarttech"} "SGI" {$MonFriendlyName = "SGI"} "SNY" {$MonFriendlyName = "Sony"} "SRC" {$MonFriendlyName = "Shamrock"} "SUN" {$MonFriendlyName = "Sun Microsystems"} "SEC" {$MonFriendlyName = "Hewlett-Packard"} "TAT" {$MonFriendlyName = "Tatung"} "TOS" {$MonFriendlyName = "Toshiba"} "TSB" {$MonFriendlyName = "Toshiba"} "VSC" {$MonFriendlyName = "ViewSonic"} "ZCM" {$MonFriendlyName = "Zenith"} "UNK" {$MonFriendlyName = "Unknown"} "_YV" {$MonFriendlyName = "Fujitsu"} } #Get the monitor Model, Serial and Product Number ForEach ($Monitor in $Monitors) { If ([System.Text.Encoding]::ASCII.GetString($Monitor.UserFriendlyName) -NE $Null) { $MonModel = ([System.Text.Encoding]::ASCII.GetString($Monitor.UserFriendlyName -NE 0)).Replace("$([char]0x0000)","") -join "" } Else { $MonModel = $Null } $MonSerialNumber = ([System.Text.Encoding]::ASCII.GetString($Monitor.SerialNumberID -NE 0)).Replace("$([char]0x0000)","") -join "" $MonProductNumber = ([System.Text.Encoding]::ASCII.GetString($Monitor.ProductCodeID -NE 0)).Replace("$([char]0x0000)","") -join "" $MonManufacturer = ([System.Text.Encoding]::ASCII.GetString($Monitor.ManufacturerName -NE 0)).Replace("$([char]0x0000)","") -join "" } #Gets the installed and missing Windows Updates $UpdateSession = [Activator]::CreateInstance([Type]::GetTypeFromProgID("Microsoft.Update.Session",$Computer)) $UpdateSearcher = $UpdateSession.CreateupdateSearcher() $MissingUpdates = @($UpdateSearcher.Search("DeploymentAction=* and IsHidden=0 and Type='Software' and IsInstalled=0").Updates) $InstalledUpdates = @($UpdateSearcher.Search("IsHidden=0 and Type='Software' and IsInstalled=1").Updates) $SI = @{ FQDN = [String]$SysInfo.DNSHostName+"."+$SysInfo.Domain NetBIOSName = [String]$SysInfo.DNSHostName Domain = [String]$SysInfo.Domain Manufacturer = [String]$SysInfo.Manufacturer Model = [String]$SysInfo.Model SystemType = [String]$SysInfo.SystemType TotalMemory = "$([String]([System.Math]::Round($SysInfo.TotalPhysicalMemory/1GB,2))) GB" BIOSName = [String]$BIOS.Name BIOSDescription = [String]$BIOS.Description BIOSVersion = [String]$BIOS.SMBIOSBIOSVersion+"."+$BIOS.SMBIOSMajorVersion+"."+$BIOS.SMBIOSMinorVersion BIOSManufacturer = [String]$BIOS.Manufacturer SerialNo = [String]$BIOS.SerialNumber OSName = [String]$OS.Caption OSLanguage = [String]$OSLan OSServicePack = (“SP {0}” -F [String]$OS.ServicePackMajorVersion) OSArchitecture = [String]$OS.OSArchitecture OSBuildNo = [String]$OS.BuildNumber+"."+$OSVersion.UBR OSVersion = [String]$OS.Version OSReleaseNo = [String]$OSVersion.ReleaseID OSInstallDate = [String]$OS.ConvertToDateTime($OS.InstallDate) -F "MM/dd/yyyy" TimeZone = [String]$TimeZone.StandardName PhysicalProcessors = [String]@($Processor).Count LogicalProcessors = [String]$Processor.NumberOfLogicalProcessors ProcessorModel = [String]$Processor.Name ProcessorManufacturer = [String]$Processor.Manufacturer Cores = [String]$Processor.NumberOfCores IPAddress = [String]$NIC.IPAddress MACAddress = [String]$NIC.MACAddress AVStatus = [String]$DefStatus RTProtection = [String]$RTStatus AVLastUpdate = [String]$AVDU.AntivirusSignatureLastUpdated AntiVirus = [String]$AV.DisplayName UpTime = [String]$UpTime.Days.ToString()+" Days, "+$UpTime.Hours.ToString()+" Hours, "+$UpTime.Minutes.ToString()+" Minutes, "+$UpTime.Seconds.ToString()+" Seconds" AdministratorAccountEnabled = [String]$LocalAdmin.Enabled LastUser = [String]$LastUser.GetOwner().User InstalledWinUpdates = [String]$InstalledUpdates.Title MissingWinUpdates = [String]$MissingUpdates.Title MonitorManufacturer = [String]$MonFriendlyName MonitorModel = [String]$MonModel MonitorProductNo = [String]$MonProductNumber MonitorSerialNo = [String]$MonSerialNumber } $Disks | ForEach-Object {$SI."DriveSize:$($_.Name -Replace ':', '')"="$([String]([System.Math]::Round($_.Size/1GB,2))) GB"} -ErrorAction SilentlyContinue $Disks | ForEach-Object {$SI."FreeDriveSpace:$($_.Name -Replace ':', '')"="$([String]([System.Math]::Round($_.FreeSpace/1GB,2))) GB"} -ErrorAction SilentlyContinue $Disks | ForEach-Object {$SI."UsedDriveSpace:$($_.Name -Replace ':', '')"="$([String]([System.Math]::Round(($_.Size - $_.FreeSpace)/1GB,2))) GB"} -ErrorAction SilentlyContinue $USBDisks | ForEach-Object {$SI."DriveSize:$($_.Name -Replace ':', '')"="$([String]([System.Math]::Round($_.Size/1GB,2))) GB"} -ErrorAction SilentlyContinue $USBDisks | ForEach-Object {$SI."FreeDriveSpace:$($_.Name -Replace ':', '')"="$([String]([System.Math]::Round($_.FreeSpace/1GB,2))) GB"} -ErrorAction SilentlyContinue $USBDisks | ForEach-Object {$SI."UsedDriveSpace:$($_.Name -Replace ':', '')"="$([String]([System.Math]::Round(($_.Size - $_.FreeSpace)/1GB,2))) GB"} -ErrorAction SilentlyContinue } Catch [Exception] { Write-Host "Error communicating with $Computer, skipping to next" -ForegroundColor White -BackgroundColor Red $SI = @{ Server = [String]$Computer ErrorMessage = [String]$_.Exception.Message ErrorItem = [String]$Computer } Continue } Finally { [Void]$SysCollection.Add((New-Object PSObject -Property $SI)) } } $SysCollection ` | Select-Object FQDN,NetBIOSName,Domain,Manufacturer,Model,SerialNo,SystemType,ProcessorManufacturer,ProcessorModel,PhysicalProcessors,LogicalProcessors,Cores,TotalMemory,IPAddress,MACAddress,MonitorManufacturer,MonitorModel,MonitorProductNo,MonitorSerialNo,BIOSName,BIOSManufacturer,BiosDescription,BiosVersion,OSName,OSVersion,OSBuildNo,OSReleaseNo,OSArchitecture,OSServicePack,OSLanguage,OSInstallDate,InstalledWinUpdates,MissingWinUpdates,TimeZone,AntiVirus,AVStatus,RTProtection,AVLastUpdate,UpTime,LastUser,AdministratorAccountEnabled,DriveSize:A,DriveSize:B,DriveSize:C,DriveSize:D,DriveSize:E,DriveSize:F,DriveSize:G,DriveSize:H,DriveSize:I,DriveSize:J,DriveSize:K,DriveSize:L,DriveSize:M,DriveSize:N,DriveSize:O,DriveSize:P,DriveSize:Q,DriveSize:R,DriveSize:S,DriveSize:T,DriveSize:U,DriveSize:V,DriveSize:W,DriveSize:X,DriveSize:Y,DriveSize:Z,UsedDriveSpace:A,UsedDriveSpace:B,UsedDriveSpace:C,UsedDriveSpace:D,UsedDriveSpace:E,UsedDriveSpace:F,UsedDriveSpace:G,UsedDriveSpace:H,UsedDriveSpace:I,UsedDriveSpace:J,UsedDriveSpace:K,UsedDriveSpace:L,UsedDriveSpace:M,UsedDriveSpace:N,UsedDriveSpace:O,UsedDriveSpace:P,UsedDriveSpace:Q,UsedDriveSpace:R,UsedDriveSpace:S,UsedDriveSpace:T,UsedDriveSpace:U,UsedDriveSpace:V,UsedDriveSpace:W,UsedDriveSpace:X,UsedDriveSpace:Y,UsedDriveSpace:Z,FreeDriveSpace:A,FreeDriveSpace:B,FreeDriveSpace:C,FreeDriveSpace:D,FreeDriveSpace:E,FreeDriveSpace:F,FreeDriveSpace:G,FreeDriveSpace:H,FreeDriveSpace:I,FreeDriveSpace:J,FreeDriveSpace:K,FreeDriveSpace:L,FreeDriveSpace:M,FreeDriveSpace:N,FreeDriveSpace:O,FreeDriveSpace:P,FreeDriveSpace:Q,FreeDriveSpace:R,FreeDriveSpace:S,FreeDriveSpace:T,FreeDriveSpace:U,FreeDriveSpace:V,FreeDriveSpace:W,FreeDriveSpace:X,FreeDriveSpace:Y,FreeDriveSpace:Z,ErrorMessage,ErrorItem ` | Export-CSV -Path $OutputCSV -NoTypeInformation Write-Host "Inventory completed. Check $OutputCSV" -ForegroundColor Green