Profiling Systems

by Mar 20, 2014

If you just want to profile a local or remote system and get back the most commonly used pieces of information, then do not waste time for your own solutions. Simply reuse systeminfo.exe, and feed the data into PowerShell:

function Get-SystemInfo
{
  param($ComputerName = $env:COMPUTERNAME)

  $header = 'Hostname','OSName','OSVersion','OSManufacturer','OSConfiguration','OS Build Type','RegisteredOwner','RegisteredOrganization','Product ID','Original Install Date','System Boot Time','System Manufacturer','System Model','System Type','Processor(s)','BIOS Version','Windows Directory','System Directory','Boot Device','System Locale','Input Locale','Time Zone','Total Physical Memory','Available Physical Memory','Virtual Memory: Max Size','Virtual Memory: Available','Virtual Memory: In Use','Page File Location(s)','Domain','Logon Server','Hotfix(s)','Network Card(s)'

  systeminfo.exe /FO CSV /S $ComputerName |
    Select-Object -Skip 1 | 
    ConvertFrom-CSV -Header $header 
} 

Here is the result:

When you store the result in a variable, you can easily access individual pieces of information:

If you like the information to be called differently, simply change the list of property names to your liking. So if you do not like "System Boot Time", simply rename this label in the script to "BootTime", for example.

Twitter This Tip! ReTweet this Tip!