{"id":517,"date":"2014-04-17T07:33:55","date_gmt":"2014-04-17T07:33:55","guid":{"rendered":"http:\/\/giraffeit.com\/?p=517"},"modified":"2014-04-17T07:33:55","modified_gmt":"2014-04-17T07:33:55","slug":"psfind","status":"publish","type":"post","link":"https:\/\/giraffeit.com\/index.php\/2014\/04\/17\/psfind\/","title":{"rendered":"Powershell find details about server \/ workstations"},"content":{"rendered":"<p>We have been scoring the net in the quest for a powershell script so we can audit easily server specs , or workstation , both , or just a series of machines on a xls spreadsheet.<\/p>\n<p>&nbsp;<\/p>\n<p>Here is the code. We arent claiming the glory for it ( Jesse Hamrick handy work quoted )<\/p>\n<p>&nbsp;<\/p>\n<p># ==============================================================================================<br \/>\n#<br \/>\n# Microsoft PowerShell Source File &#8212; Created with SAPIEN Technologies PrimalScript 2007<br \/>\n#<br \/>\n# NAME: Server\/Workstation Inventory (CompInv_v2.ps1)<br \/>\n#<br \/>\n# AUTHOR: Jesse Hamrick<br \/>\n# DATE : 2\/25\/2009<br \/>\n# Web : www.PowerShellPro.com<br \/>\n# COMMENT: Script Inventories Computers and sends results to an excel file.<br \/>\n#<br \/>\n# ==============================================================================================<\/p>\n<p># ==============================================================================================<br \/>\n# Functions Section<br \/>\n# ==============================================================================================<br \/>\n# Function Name &#8216;WMILookup&#8217; &#8211; Gathers info using WMI and places results in Excel<br \/>\n# ==============================================================================================<br \/>\nFunction WMILookup {<br \/>\nforeach ($StrComputer in $colComputers){<br \/>\n$GenItems1 = gwmi Win32_ComputerSystem -Comp $StrComputer<br \/>\n$GenItems2 = gwmi Win32_OperatingSystem -Comp $StrComputer<br \/>\n$SysItems1 = gwmi Win32_BIOS -Comp $StrComputer<br \/>\n$SysItems2 = gwmi Win32_TimeZone -Comp $StrComputer<br \/>\n$SysItems3 = gwmi Win32_WmiSetting -Comp $StrComputer<br \/>\n$ProcItems1 = gwmi Win32_Processor -Comp $StrComputer<br \/>\n$MemItems1 = gwmi Win32_PhysicalMemory -Comp $StrComputer<br \/>\n$memItems2 = gwmi Win32_PhysicalMemoryArray -Comp $StrComputer<br \/>\n$DiskItems = gwmi Win32_LogicalDisk -Comp $StrComputer<br \/>\n$NetItems = gwmi Win32_NetworkAdapterConfiguration -Comp $StrComputer |`<br \/>\nwhere{$_.IPEnabled -eq &#8220;True&#8221;}<\/p>\n<p># Populate General Sheet(1) with information<br \/>\nforeach ($objItem in $GenItems1){<br \/>\n$Sheet1.Cells.Item($intRow, 1) = $StrComputer<br \/>\nSwitch($objItem.DomainRole)<br \/>\n{<br \/>\n0{$Sheet1.Cells.Item($intRow, 2) = &#8220;Stand Alone Workstation&#8221;}<br \/>\n1{$Sheet1.Cells.Item($intRow, 2) = &#8220;Member Workstation&#8221;}<br \/>\n2{$Sheet1.Cells.Item($intRow, 2) = &#8220;Stand Alone Server&#8221;}<br \/>\n3{$Sheet1.Cells.Item($intRow, 2) = &#8220;Member Server&#8221;}<br \/>\n4{$Sheet1.Cells.Item($intRow, 2) = &#8220;Back-up Domain Controller&#8221;}<br \/>\n5{$Sheet1.Cells.Item($intRow, 2) = &#8220;Primary Domain Controller&#8221;}<br \/>\ndefault{&#8220;Undetermined&#8221;}<br \/>\n}<br \/>\n$Sheet1.Cells.Item($intRow, 3) = $objItem.Manufacturer<br \/>\n$Sheet1.Cells.Item($intRow, 4) = $objItem.Model<br \/>\n$Sheet1.Cells.Item($intRow, 5) = $objItem.SystemType<br \/>\n$Sheet1.Cells.Item($intRow, 6) = $objItem.NumberOfProcessors<br \/>\n$Sheet1.Cells.Item($intRow, 7) = $objItem.TotalPhysicalMemory \/ 1024 \/ 1024<br \/>\n}<br \/>\nforeach ($objItem in $GenItems2){<br \/>\n$Sheet1.Cells.Item($intRow, 8) = $objItem.Caption<br \/>\n$Sheet1.Cells.Item($intRow, 9) = $objItem.csdversion<br \/>\n}<\/p>\n<p>#Populate Systems Sheet<br \/>\nforeach ($objItem in $SysItems1){<br \/>\n$Sheet2.Cells.Item($intRow, 1) = $StrComputer<br \/>\n$Sheet2.Cells.Item($intRow, 2) = $objItem.Name<br \/>\n$Sheet2.Cells.Item($intRow, 3) = $objItem.SMBIOSbiosVersion<br \/>\n$Sheet2.Cells.Item($intRow, 4) = $objItem.SerialNumber<br \/>\n}<br \/>\nforeach ($objItem in $SysItems2){<br \/>\n$Sheet2.Cells.Item($intRow, 5) = $objItem.Caption<br \/>\n}<br \/>\nforeach ($objItem in $SysItems3){<br \/>\n$Sheet2.Cells.Item($intRow, 6) = $objItem.BuildVersion<br \/>\n}<\/p>\n<p>#Populate Processor Sheet<br \/>\nforeach ($objItem in $ProcItems1){<br \/>\n$Sheet3.Cells.Item($intRowCPU, 1) = $StrComputer<br \/>\n$Sheet3.Cells.Item($intRowCPU, 2) = $objItem.DeviceID+&#8221; &#8220;+$objItem.Name<br \/>\n$Sheet3.Cells.Item($intRowCPU, 3) = $objItem.Description<br \/>\n$Sheet3.Cells.Item($intRowCPU, 4) = $objItem.family<br \/>\n$Sheet3.Cells.Item($intRowCPU, 5) = $objItem.currentClockSpeed<br \/>\n$Sheet3.Cells.Item($intRowCPU, 6) = $objItem.l2cacheSize<br \/>\n$Sheet3.Cells.Item($intRowCPU, 7) = $objItem.UpgradeMethod<br \/>\n$Sheet3.Cells.Item($intRowCPU, 8) = $objItem.SocketDesignation<br \/>\n$intRowCPU = $intRowCPU + 1<br \/>\n}<\/p>\n<p>#Populate Memory Sheet<br \/>\n$bankcounter = 1<br \/>\nforeach ($objItem in $memItems2){<br \/>\n$MemSlots = $objItem.MemoryDevices +1<\/p>\n<p>foreach ($objItem in $MemItems1){<br \/>\n$Sheet4.Cells.Item($intRowMem, 1) = $StrComputer<br \/>\n$Sheet4.Cells.Item($intRowMem, 2) = &#8220;Bank &#8221; +$bankcounter<br \/>\nif($objItem.BankLabel -eq &#8220;&#8221;){<br \/>\n$Sheet4.Cells.Item($intRowMem, 3) = $objItem.DeviceLocator}<br \/>\nElse{$Sheet4.Cells.Item($intRowMem, 3) = $objItem.BankLabel}<br \/>\n$Sheet4.Cells.Item($intRowMem, 4) = $objItem.Capacity\/1024\/1024<br \/>\n$Sheet4.Cells.Item($intRowMem, 5) = $objItem.FormFactor<br \/>\n$Sheet4.Cells.Item($intRowMem, 6) = $objItem.TypeDetail<br \/>\n$intRowMem = $intRowMem + 1<br \/>\n$bankcounter = $bankcounter + 1<br \/>\n}<br \/>\nwhile($bankcounter -lt $MemSlots)<br \/>\n{<br \/>\n$Sheet4.Cells.Item($intRowMem, 1) = $StrComputer<br \/>\n$Sheet4.Cells.Item($intRowMem, 2) = &#8220;Bank &#8221; +$bankcounter<br \/>\n$Sheet4.Cells.Item($intRowMem, 3) = &#8220;is Empty&#8221;<br \/>\n$Sheet4.Cells.Item($intRowMem, 4) = &#8220;&#8221;<br \/>\n$Sheet4.Cells.Item($intRowMem, 5) = &#8220;&#8221;<br \/>\n$Sheet4.Cells.Item($intRowMem, 6) = &#8220;&#8221;<br \/>\n$intRowMem = $intRowMem + 1<br \/>\n$bankcounter = $bankcounter + 1<br \/>\n}<br \/>\n}<\/p>\n<p>#Populate Disk Sheet<br \/>\nforeach ($objItem in $DiskItems){<br \/>\n$Sheet5.Cells.Item($intRowDisk, 1) = $StrComputer<br \/>\nSwitch($objItem.DriveType)<br \/>\n{<br \/>\n2{$Sheet5.Cells.Item($intRowDisk, 2) = &#8220;Floppy&#8221;}<br \/>\n3{$Sheet5.Cells.Item($intRowDisk, 2) = &#8220;Fixed Disk&#8221;}<br \/>\n5{$Sheet5.Cells.Item($intRowDisk, 2) = &#8220;Removable Media&#8221;}<br \/>\ndefault{&#8220;Undetermined&#8221;}<br \/>\n}<br \/>\n$Sheet5.Cells.Item($intRowDisk, 3) = $objItem.DeviceID<br \/>\n$Sheet5.Cells.Item($intRowDisk, 4) = $objItem.Size\/1024\/1024<br \/>\n$Sheet5.Cells.Item($intRowDisk, 5) = $objItem.FreeSpace\/1024\/1024<br \/>\n$intRowDisk = $intRowDisk + 1<br \/>\n}<\/p>\n<p>#Populate Network Sheet<br \/>\nforeach ($objItem in $NetItems){<br \/>\n$Sheet6.Cells.Item($intRowNet, 1) = $StrComputer<br \/>\n$Sheet6.Cells.Item($intRowNet, 2) = $objItem.Caption+&#8221; (enabled)&#8221;<br \/>\n$Sheet6.Cells.Item($intRowNet, 3) = $objItem.DHCPEnabled<br \/>\n$Sheet6.Cells.Item($intRowNet, 4) = $objItem.IPAddress<br \/>\n$Sheet6.Cells.Item($intRowNet, 5) = $objItem.IPSubnet<br \/>\n$Sheet6.Cells.Item($intRowNet, 6) = $objItem.DefaultIPGateway<br \/>\n$Sheet6.Cells.Item($intRowNet, 7) = $objItem.DNSServerSearchOrder<br \/>\n$Sheet6.Cells.Item($intRowNet, 8) = $objItem.FullDNSRegistrationEnabled<br \/>\n$Sheet6.Cells.Item($intRowNet, 9) = $objItem.WINSPrimaryServer<br \/>\n$Sheet6.Cells.Item($intRowNet, 10) = $objItem.WINSSecondaryServer<br \/>\n$Sheet6.Cells.Item($intRowNet, 11) = $objItem.WINSEnableLMHostsLookup<br \/>\n$intRowNet = $intRowNet + 1<br \/>\n}<\/p>\n<p>$intRow = $intRow + 1<br \/>\n$intRowCPU = $intRowCPU + 1<br \/>\n$intRowMem = $intRowMem + 1<br \/>\n$intRowDisk = $intRowDisk + 1<br \/>\n$intRowNet = $intRowNet + 1<br \/>\n}<br \/>\n}<\/p>\n<p># ==============================================================================================<br \/>\n# Function Name &#8216;WMILookupCred&#8217;-Uses Alternative Credential-Gathers info using WMI.<br \/>\n# ==============================================================================================<br \/>\nFunction WMILookupCred {<br \/>\nforeach ($StrComputer in $colComputers){<br \/>\n$GenItems1 = gwmi Win32_ComputerSystem -Comp $StrComputer -Credential $cred<br \/>\n$GenItems2 = gwmi Win32_OperatingSystem -Comp $StrComputer -Credential $cred<br \/>\n$SysItems1 = gwmi Win32_BIOS -Comp $StrComputer -Credential $cred<br \/>\n$SysItems2 = gwmi Win32_TimeZone -Comp $StrComputer -Credential $cred<br \/>\n$SysItems3 = gwmi Win32_WmiSetting -Comp $StrComputer -Credential $cred<br \/>\n$ProcItems1 = gwmi Win32_Processor -Comp $StrComputer -Credential $cred<br \/>\n$MemItems1 = gwmi Win32_PhysicalMemory -Comp $StrComputer -Credential $cred<br \/>\n$memItems2 = gwmi Win32_PhysicalMemoryArray -Comp $StrComputer -Credential $cred<br \/>\n$DiskItems = gwmi Win32_LogicalDisk -Comp $StrComputer -Credential $cred<br \/>\n$NetItems = gwmi Win32_NetworkAdapterConfiguration -Comp $StrComputer -Credential $cred |`<br \/>\nwhere{$_.IPEnabled -eq &#8220;True&#8221;}<\/p>\n<p># Populate General Sheet(1) with information<br \/>\nforeach ($objItem in $GenItems1){<br \/>\n$Sheet1.Cells.Item($intRow, 1) = $StrComputer<br \/>\nSwitch($objItem.DomainRole)<br \/>\n{<br \/>\n0{$Sheet1.Cells.Item($intRow, 2) = &#8220;Stand Alone Workstation&#8221;}<br \/>\n1{$Sheet1.Cells.Item($intRow, 2) = &#8220;Member Workstation&#8221;}<br \/>\n2{$Sheet1.Cells.Item($intRow, 2) = &#8220;Stand Alone Server&#8221;}<br \/>\n3{$Sheet1.Cells.Item($intRow, 2) = &#8220;Member Server&#8221;}<br \/>\n4{$Sheet1.Cells.Item($intRow, 2) = &#8220;Back-up Domain Controller&#8221;}<br \/>\n5{$Sheet1.Cells.Item($intRow, 2) = &#8220;Primary Domain Controller&#8221;}<br \/>\ndefault{&#8220;Undetermined&#8221;}<br \/>\n}<br \/>\n$Sheet1.Cells.Item($intRow, 3) = $objItem.Manufacturer<br \/>\n$Sheet1.Cells.Item($intRow, 4) = $objItem.Model<br \/>\n$Sheet1.Cells.Item($intRow, 5) = $objItem.SystemType<br \/>\n$Sheet1.Cells.Item($intRow, 6) = $objItem.NumberOfProcessors<br \/>\n$Sheet1.Cells.Item($intRow, 7) = $objItem.TotalPhysicalMemory \/ 1024 \/ 1024<br \/>\n}<br \/>\nforeach ($objItem in $GenItems2){<br \/>\n$Sheet1.Cells.Item($intRow, 8) = $objItem.Caption<br \/>\n$Sheet1.Cells.Item($intRow, 9) = $objItem.csdversion<br \/>\n}<\/p>\n<p>#Populate Systems Sheet<br \/>\nforeach ($objItem in $SysItems1){<br \/>\n$Sheet2.Cells.Item($intRow, 1) = $StrComputer<br \/>\n$Sheet2.Cells.Item($intRow, 2) = $objItem.Name<br \/>\n$Sheet2.Cells.Item($intRow, 3) = $objItem.SMBIOSbiosVersion<br \/>\n$Sheet2.Cells.Item($intRow, 4) = $objItem.SerialNumber<br \/>\n}<br \/>\nforeach ($objItem in $SysItems2){<br \/>\n$Sheet2.Cells.Item($intRow, 5) = $objItem.Caption<br \/>\n}<br \/>\nforeach ($objItem in $SysItems3){<br \/>\n$Sheet2.Cells.Item($intRow, 6) = $objItem.BuildVersion<br \/>\n}<\/p>\n<p>#Populate Processor Sheet<br \/>\nforeach ($objItem in $ProcItems1){<br \/>\n$Sheet3.Cells.Item($intRowCPU, 1) = $StrComputer<br \/>\n$Sheet3.Cells.Item($intRowCPU, 2) = $objItem.DeviceID+&#8221; &#8220;+$objItem.Name<br \/>\n$Sheet3.Cells.Item($intRowCPU, 3) = $objItem.Description<br \/>\n$Sheet3.Cells.Item($intRowCPU, 4) = $objItem.family<br \/>\n$Sheet3.Cells.Item($intRowCPU, 5) = $objItem.currentClockSpeed<br \/>\n$Sheet3.Cells.Item($intRowCPU, 6) = $objItem.l2cacheSize<br \/>\n$Sheet3.Cells.Item($intRowCPU, 7) = $objItem.UpgradeMethod<br \/>\n$Sheet3.Cells.Item($intRowCPU, 8) = $objItem.SocketDesignation<br \/>\n$intRowCPU = $intRowCPU + 1<br \/>\n}<\/p>\n<p>#Populate Memory Sheet<br \/>\n$bankcounter = 1<br \/>\nforeach ($objItem in $memItems2){<br \/>\n$MemSlots = $objItem.MemoryDevices +1<\/p>\n<p>foreach ($objItem in $MemItems1){<br \/>\n$Sheet4.Cells.Item($intRowMem, 1) = $StrComputer<br \/>\n$Sheet4.Cells.Item($intRowMem, 2) = &#8220;Bank &#8221; +$bankcounter<br \/>\nif($objItem.BankLabel -eq &#8220;&#8221;){<br \/>\n$Sheet4.Cells.Item($intRowMem, 3) = $objItem.DeviceLocator}<br \/>\nElse{$Sheet4.Cells.Item($intRowMem, 3) = $objItem.BankLabel}<br \/>\n$Sheet4.Cells.Item($intRowMem, 4) = $objItem.Capacity\/1024\/1024<br \/>\n$Sheet4.Cells.Item($intRowMem, 5) = $objItem.FormFactor<br \/>\n$Sheet4.Cells.Item($intRowMem, 6) = $objItem.TypeDetail<br \/>\n$intRowMem = $intRowMem + 1<br \/>\n$bankcounter = $bankcounter + 1<br \/>\n}<br \/>\nwhile($bankcounter -lt $MemSlots)<br \/>\n{<br \/>\n$Sheet4.Cells.Item($intRowMem, 1) = $StrComputer<br \/>\n$Sheet4.Cells.Item($intRowMem, 2) = &#8220;Bank &#8221; +$bankcounter<br \/>\n$Sheet4.Cells.Item($intRowMem, 3) = &#8220;is Empty&#8221;<br \/>\n$Sheet4.Cells.Item($intRowMem, 4) = &#8220;&#8221;<br \/>\n$Sheet4.Cells.Item($intRowMem, 5) = &#8220;&#8221;<br \/>\n$Sheet4.Cells.Item($intRowMem, 6) = &#8220;&#8221;<br \/>\n$intRowMem = $intRowMem + 1<br \/>\n$bankcounter = $bankcounter + 1<br \/>\n}<br \/>\n}<\/p>\n<p>#Populate Disk Sheet<br \/>\nforeach ($objItem in $DiskItems){<br \/>\n$Sheet5.Cells.Item($intRowDisk, 1) = $StrComputer<br \/>\nSwitch($objItem.DriveType)<br \/>\n{<br \/>\n2{$Sheet5.Cells.Item($intRowDisk, 2) = &#8220;Floppy&#8221;}<br \/>\n3{$Sheet5.Cells.Item($intRowDisk, 2) = &#8220;Fixed Disk&#8221;}<br \/>\n5{$Sheet5.Cells.Item($intRowDisk, 2) = &#8220;Removable Media&#8221;}<br \/>\ndefault{&#8220;Undetermined&#8221;}<br \/>\n}<br \/>\n$Sheet5.Cells.Item($intRowDisk, 3) = $objItem.DeviceID<br \/>\n$Sheet5.Cells.Item($intRowDisk, 4) = $objItem.Size\/1024\/1024<br \/>\n$Sheet5.Cells.Item($intRowDisk, 5) = $objItem.FreeSpace\/1024\/1024<br \/>\n$intRowDisk = $intRowDisk + 1<br \/>\n}<\/p>\n<p>#Populate Network Sheet<br \/>\nforeach ($objItem in $NetItems){<br \/>\n$Sheet6.Cells.Item($intRowNet, 1) = $StrComputer<br \/>\n$Sheet6.Cells.Item($intRowNet, 2) = $objItem.Caption+&#8221; (enabled)&#8221;<br \/>\n$Sheet6.Cells.Item($intRowNet, 3) = $objItem.DHCPEnabled<br \/>\n$Sheet6.Cells.Item($intRowNet, 4) = $objItem.IPAddress<br \/>\n$Sheet6.Cells.Item($intRowNet, 5) = $objItem.IPSubnet<br \/>\n$Sheet6.Cells.Item($intRowNet, 6) = $objItem.DefaultIPGateway<br \/>\n$Sheet6.Cells.Item($intRowNet, 7) = $objItem.DNSServerSearchOrder<br \/>\n$Sheet6.Cells.Item($intRowNet, 8) = $objItem.FullDNSRegistrationEnabled<br \/>\n$Sheet6.Cells.Item($intRowNet, 9) = $objItem.WINSPrimaryServer<br \/>\n$Sheet6.Cells.Item($intRowNet, 10) = $objItem.WINSSecondaryServer<br \/>\n$Sheet6.Cells.Item($intRowNet, 11) = $objItem.WINSEnableLMHostsLookup<br \/>\n$intRowNet = $intRowNet + 1<br \/>\n}<\/p>\n<p>$intRow = $intRow + 1<br \/>\n$intRowCPU = $intRowCPU + 1<br \/>\n$intRowMem = $intRowMem + 1<br \/>\n$intRowDisk = $intRowDisk + 1<br \/>\n$intRowNet = $intRowNet + 1<br \/>\n}<br \/>\n}<\/p>\n<p># =============================================================================================<br \/>\n# Function Name &#8216;ListComputers&#8217; &#8211; Enumerates ALL computer objects in AD<br \/>\n# ==============================================================================================<br \/>\nFunction ListComputers {<br \/>\n$strCategory = &#8220;computer&#8221;<\/p>\n<p>$objDomain = New-Object System.DirectoryServices.DirectoryEntry<\/p>\n<p>$objSearcher = New-Object System.DirectoryServices.DirectorySearcher<br \/>\n$objSearcher.SearchRoot = $objDomain<br \/>\n$objSearcher.Filter = (&#8220;(objectCategory=$strCategory)&#8221;)<\/p>\n<p>$colProplist = &#8220;name&#8221;<br \/>\nforeach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}<\/p>\n<p>$colResults = $objSearcher.FindAll()<\/p>\n<p>foreach ($objResult in $colResults)<br \/>\n{$objComputer = $objResult.Properties; $objComputer.name}<br \/>\n}<\/p>\n<p># ==============================================================================================<br \/>\n# Function Name &#8216;ListServers&#8217; &#8211; Enumerates ALL Servers objects in AD<br \/>\n# ==============================================================================================<br \/>\nFunction ListServers {<br \/>\n$strCategory = &#8220;computer&#8221;<br \/>\n$strOS = &#8220;Windows*Server*&#8221;<\/p>\n<p>$objDomain = New-Object System.DirectoryServices.DirectoryEntry<\/p>\n<p>$objSearcher = New-Object System.DirectoryServices.DirectorySearcher<br \/>\n$objSearcher.SearchRoot = $objDomain<br \/>\n$objSearcher.Filter = (&#8220;(&amp;(objectCategory=$strCategory)(OperatingSystem=$strOS))&#8221;)<\/p>\n<p>$colProplist = &#8220;name&#8221;<br \/>\nforeach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}<\/p>\n<p>$colResults = $objSearcher.FindAll()<\/p>\n<p>foreach ($objResult in $colResults)<br \/>\n{$objComputer = $objResult.Properties; $objComputer.name}<br \/>\n}<\/p>\n<p># ========================================================================<br \/>\n# Function Name &#8216;ListTextFile&#8217; &#8211; Enumerates Computer Names in a text file<br \/>\n# Create a text file and enter the names of each computer. One computer<br \/>\n# name per line. Supply the path to the text file when prompted.<br \/>\n# ========================================================================<br \/>\nFunction ListTextFile {<br \/>\n$strText = Read-Host &#8220;Enter the path for the text file&#8221;<br \/>\n$colComputers = Get-Content $strText<br \/>\n}<\/p>\n<p># ========================================================================<br \/>\n# Function Name &#8216;SingleEntry&#8217; &#8211; Enumerates Computer from user input<br \/>\n# ========================================================================<br \/>\nFunction ManualEntry {<br \/>\n$colComputers = Read-Host &#8220;Enter Computer Name or IP&#8221;<br \/>\n}<\/p>\n<p># ==============================================================================================<br \/>\n# Script Body<br \/>\n# ==============================================================================================<br \/>\n$erroractionpreference = &#8220;SilentlyContinue&#8221;<br \/>\n#Gather info from user.<br \/>\nWrite-Host &#8220;********************************&#8221; -ForegroundColor Green<br \/>\nWrite-Host &#8220;Computer Inventory Script&#8221; -ForegroundColor Green<br \/>\nWrite-Host &#8220;By: Jesse Hamrick&#8221; -ForegroundColor Green<br \/>\nWrite-Host &#8220;Created: 04\/15\/2009&#8221; -ForegroundColor Green<br \/>\nWrite-Host &#8220;Contact: www.PowerShellPro.com&#8221; -ForegroundColor Green<br \/>\nWrite-Host &#8220;********************************&#8221; -ForegroundColor Green<br \/>\nWrite-Host &#8221; &#8221;<br \/>\nWrite-Host &#8220;Admin rights are required to enumerate information.&#8221; -ForegroundColor Green<br \/>\nWrite-Host &#8220;Would you like to use an alternative credential?&#8221; -ForegroundColor Green<br \/>\n$credResponse = Read-Host &#8220;[Y] Yes, [N] No&#8221;<br \/>\nIf($CredResponse -eq &#8220;y&#8221;){$cred = Get-Credential DOMAINUSER}<br \/>\nWrite-Host &#8221; &#8221;<br \/>\nWrite-Host &#8220;Which computer resources would you like in the report?&#8221; -ForegroundColor Green<br \/>\n$strResponse = Read-Host &#8220;[1] All Domain Computers, [2] All Domain Servers, [3] Computer names from a File, [4] Choose a Computer manually&#8221;<br \/>\nIf($strResponse -eq &#8220;1&#8221;){$colComputers = ListComputers | Sort-Object}<br \/>\nelseif($strResponse -eq &#8220;2&#8221;){$colComputers = ListServers | Sort-Object}<br \/>\nelseif($strResponse -eq &#8220;3&#8221;){. ListTextFile}<br \/>\nelseif($strResponse -eq &#8220;4&#8221;){. ManualEntry}<br \/>\nelse{Write-Host &#8220;You did not supply a correct response, `<br \/>\nPlease run script again.&#8221; -foregroundColor Red}<br \/>\nWrite-Progress -Activity &#8220;Getting Inventory&#8221; -status &#8220;Running&#8230;&#8221; -id 1<\/p>\n<p>#New Excel Application<br \/>\n$Excel = New-Object -Com Excel.Application<br \/>\n$Excel.visible = $True<\/p>\n<p># Create 6 worksheets<br \/>\n$Excel = $Excel.Workbooks.Add()<br \/>\n$Sheet = $Excel.Worksheets.Add()<br \/>\n$Sheet = $Excel.Worksheets.Add()<br \/>\n$Sheet = $Excel.Worksheets.Add()<\/p>\n<p># Assign each worksheet to a variable and<br \/>\n# name the worksheet.<br \/>\n$Sheet1 = $Excel.Worksheets.Item(1)<br \/>\n$Sheet2 = $Excel.WorkSheets.Item(2)<br \/>\n$Sheet3 = $Excel.WorkSheets.Item(3)<br \/>\n$Sheet4 = $Excel.WorkSheets.Item(4)<br \/>\n$Sheet5 = $Excel.WorkSheets.Item(5)<br \/>\n$Sheet6 = $Excel.WorkSheets.Item(6)<br \/>\n$Sheet1.Name = &#8220;General&#8221;<br \/>\n$Sheet2.Name = &#8220;System&#8221;<br \/>\n$Sheet3.Name = &#8220;Processor&#8221;<br \/>\n$Sheet4.Name = &#8220;Memory&#8221;<br \/>\n$Sheet5.Name = &#8220;Disk&#8221;<br \/>\n$Sheet6.Name = &#8220;Network&#8221;<\/p>\n<p>#Create Heading for General Sheet<br \/>\n$Sheet1.Cells.Item(1,1) = &#8220;Device_Name&#8221;<br \/>\n$Sheet1.Cells.Item(1,2) = &#8220;Role&#8221;<br \/>\n$Sheet1.Cells.Item(1,3) = &#8220;HW_Make&#8221;<br \/>\n$Sheet1.Cells.Item(1,4) = &#8220;HW_Model&#8221;<br \/>\n$Sheet1.Cells.Item(1,5) = &#8220;HW_Type&#8221;<br \/>\n$Sheet1.Cells.Item(1,6) = &#8220;CPU_Count&#8221;<br \/>\n$Sheet1.Cells.Item(1,7) = &#8220;Memory_MB&#8221;<br \/>\n$Sheet1.Cells.Item(1,8) = &#8220;Operating_System&#8221;<br \/>\n$Sheet1.Cells.Item(1,9) = &#8220;SP_Level&#8221;<\/p>\n<p>#Create Heading for System Sheet<br \/>\n$Sheet2.Cells.Item(1,1) = &#8220;Device_Name&#8221;<br \/>\n$Sheet2.Cells.Item(1,2) = &#8220;BIOS_Name&#8221;<br \/>\n$Sheet2.Cells.Item(1,3) = &#8220;BIOS_Version&#8221;<br \/>\n$Sheet2.Cells.Item(1,4) = &#8220;HW_Serial_#&#8221;<br \/>\n$Sheet2.Cells.Item(1,5) = &#8220;Time_Zone&#8221;<br \/>\n$Sheet2.Cells.Item(1,6) = &#8220;WMI_Version&#8221;<\/p>\n<p>#Create Heading for Processor Sheet<br \/>\n$Sheet3.Cells.Item(1,1) = &#8220;Device_Name&#8221;<br \/>\n$Sheet3.Cells.Item(1,2) = &#8220;Processor(s)&#8221;<br \/>\n$Sheet3.Cells.Item(1,3) = &#8220;Type&#8221;<br \/>\n$Sheet3.Cells.Item(1,4) = &#8220;Family&#8221;<br \/>\n$Sheet3.Cells.Item(1,5) = &#8220;Speed_MHz&#8221;<br \/>\n$Sheet3.Cells.Item(1,6) = &#8220;Cache_Size_MB&#8221;<br \/>\n$Sheet3.Cells.Item(1,7) = &#8220;Interface&#8221;<br \/>\n$Sheet3.Cells.Item(1,8) = &#8220;#_of_Sockets&#8221;<\/p>\n<p>#Create Heading for Memory Sheet<br \/>\n$Sheet4.Cells.Item(1,1) = &#8220;Device_Name&#8221;<br \/>\n$Sheet4.Cells.Item(1,2) = &#8220;Bank_#&#8221;<br \/>\n$Sheet4.Cells.Item(1,3) = &#8220;Label&#8221;<br \/>\n$Sheet4.Cells.Item(1,4) = &#8220;Capacity_MB&#8221;<br \/>\n$Sheet4.Cells.Item(1,5) = &#8220;Form&#8221;<br \/>\n$Sheet4.Cells.Item(1,6) = &#8220;Type&#8221;<\/p>\n<p>#Create Heading for Disk Sheet<br \/>\n$Sheet5.Cells.Item(1,1) = &#8220;Device_Name&#8221;<br \/>\n$Sheet5.Cells.Item(1,2) = &#8220;Disk_Type&#8221;<br \/>\n$Sheet5.Cells.Item(1,3) = &#8220;Drive_Letter&#8221;<br \/>\n$Sheet5.Cells.Item(1,4) = &#8220;Capacity_MB&#8221;<br \/>\n$Sheet5.Cells.Item(1,5) = &#8220;Free_Space_MB&#8221;<\/p>\n<p>#Create Heading for Network Sheet<br \/>\n$Sheet6.Cells.Item(1,1) = &#8220;Device_Name&#8221;<br \/>\n$Sheet6.Cells.Item(1,2) = &#8220;Network_Card&#8221;<br \/>\n$Sheet6.Cells.Item(1,3) = &#8220;DHCP_Enabled&#8221;<br \/>\n$Sheet6.Cells.Item(1,4) = &#8220;IP_Address&#8221;<br \/>\n$Sheet6.Cells.Item(1,5) = &#8220;Subnet_Mask&#8221;<br \/>\n$Sheet6.Cells.Item(1,6) = &#8220;Default_Gateway&#8221;<br \/>\n$Sheet6.Cells.Item(1,7) = &#8220;DNS_Servers&#8221;<br \/>\n$Sheet6.Cells.Item(1,8) = &#8220;DNS_Reg&#8221;<br \/>\n$Sheet6.Cells.Item(1,9) = &#8220;Primary_WINS&#8221;<br \/>\n$Sheet6.Cells.Item(1,10) = &#8220;Secondary_WINS&#8221;<br \/>\n$Sheet6.Cells.Item(1,11) = &#8220;WINS_Lookup&#8221;<\/p>\n<p>$colSheets = ($Sheet1, $Sheet2, $Sheet3, $Sheet4, $Sheet5, $Sheet6)<br \/>\nforeach ($colorItem in $colSheets){<br \/>\n$intRow = 2<br \/>\n$intRowCPU = 2<br \/>\n$intRowMem = 2<br \/>\n$intRowDisk = 2<br \/>\n$intRowNet = 2<br \/>\n$WorkBook = $colorItem.UsedRange<br \/>\n$WorkBook.Interior.ColorIndex = 20<br \/>\n$WorkBook.Font.ColorIndex = 11<br \/>\n$WorkBook.Font.Bold = $True<br \/>\n}<\/p>\n<p>If($credResponse -eq &#8220;y&#8221;){WMILookupCred}<br \/>\nElse{WMILookup}<\/p>\n<p>#Auto Fit all sheets in the Workbook<br \/>\nforeach ($colorItem in $colSheets){<br \/>\n$WorkBook = $colorItem.UsedRange<br \/>\n$WorkBook.EntireColumn.AutoFit()<br \/>\nclear<br \/>\n}<br \/>\nWrite-Host &#8220;*******************************&#8221; -ForegroundColor Green<br \/>\nWrite-Host &#8220;The Report has been completed.&#8221; -ForeGroundColor Green<br \/>\nWrite-Host &#8220;*******************************&#8221; -ForegroundColor Green<br \/>\n# ========================================================================<br \/>\n# END of Script<br \/>\n# ========================================================================<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We have been scoring the net in the quest for a powershell script so we can audit easily server specs , or workstation , both , or just a series of machines on a xls spreadsheet. &nbsp; Here is the code. We arent claiming the glory for it ( Jesse Hamrick handy work quoted ) &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/giraffeit.com\/index.php\/2014\/04\/17\/psfind\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Powershell find details about server \/ workstations&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-517","post","type-post","status-publish","format-standard","hentry","category-bog"],"_links":{"self":[{"href":"https:\/\/giraffeit.com\/index.php\/wp-json\/wp\/v2\/posts\/517","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/giraffeit.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/giraffeit.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/giraffeit.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/giraffeit.com\/index.php\/wp-json\/wp\/v2\/comments?post=517"}],"version-history":[{"count":0,"href":"https:\/\/giraffeit.com\/index.php\/wp-json\/wp\/v2\/posts\/517\/revisions"}],"wp:attachment":[{"href":"https:\/\/giraffeit.com\/index.php\/wp-json\/wp\/v2\/media?parent=517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/giraffeit.com\/index.php\/wp-json\/wp\/v2\/categories?post=517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/giraffeit.com\/index.php\/wp-json\/wp\/v2\/tags?post=517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}