Powershell‎ > ‎

Machine Info / Lookup

Modified my get-serial function to get some more stuff. Added cmdlet bindings and info for get-help

function Get-SystemInfo
[parameter(Mandatory = $true)]
[string] $ComputerName=$(throw '$ComputerName is required'),
[parameter(Mandatory = $true)]
[System.Management.Automation.PSCredential] $Credential =$(Get-Credential) )
$bios = Get-WMIObject -Class "Win32_BIOS" -Computer $ComputerName -Credential $Credential
$system = get-wmiobject -Class "win32_computersystem" -Computer $ComputerName -Credential $Credential
$Enclosure = Get-WMIObject -Class "win32_SystemEnclosure" -Computer $ComputerName -Credential $Credential
$Procs = get-wmiobject -class "Win32_Processor" -namespace "root\CIMV2" -computername $ComputerName -Credential $Credential
$ADobject = Get-QADComputer -name $ComputerName -Credential $Credential
#Write-Host $ComputerName", " $system.Manufacturer", " $system.Model", " $bios.SerialNumber
Write-Host "Machine Name: " $ComputerName
Write-host "Manufacturer: " $system.Manufacturer
write-host "Model: " $system.Model
Write-host "Serial Number: " $bios.SerialNumber
Write-Host "Asset Tag: " $Enclosure.SMBIOSAssetTag
Write-Host "OS: " $ADobject.operatingsystem
Write-Host "Service Pack: " $ADobject.operatingsystemservicepack
write-host "Memory(MB): " $($system.TotalPhysicalMemory/1mb).tostring("N0")
Write-Host "************Processor Informations************"
write-host "# of Procs: " $system.NumberOfProcessors
foreach ($objItem in $Procs) {
write-host "Caption: " $objItem.Caption
write-host "CPU Status: " $objItem.CpuStatus
write-host "Current Clock Speed: " $objItem.CurrentClockSpeed
write-host "Device ID: " $objItem.DeviceID
write-host "L2 Cache Size: ” $objItem.L2CacheSize
write-host "L2 Cache Speed: " $objItem.L2CacheSpeed
write-host "Name: " $objItem.Name

Get information about the specified machine
Get information about the specified machine
Pulls data from the BIOS and Active Directory
.PARAMETER Credential
Specify a Credential variable $cred
$cred = get-credential
.PARAMETER ComputerName
Specify the machine you want to query for information.
Get-SystemInfo -ComputerName server01 -Credential $cred
Get-SystemInfo server01 $cred

  Very nice script by Don Jones

You can pipeline data into this script. 

# blog: http://windowsitpro.com/go/DonJonesPowerShell
# twitter: @concentrateddon
function Get-Inventory {
del c:\errors.txt -erroraction 'silentlycontinue'
$computername = $_
try {
$os = gwmi win32_operatingsystem -comp $computername -ea 'stop'
$bios = gwmi win32_bios -comp $computername -ea 'stop'
} catch {
$computername | out-file c:\errors.txt -append
$obj = new-object psobject
$obj | add-member noteproperty ComputerName ($computername)
$obj | add-member noteproperty OSVersion ($os.caption)
$obj | add-member noteproperty SPVersion ($os.servicepackmajorversion)
$obj | add-member noteproperty BIOSSerial ($bios.serialnumber)
$obj | add-member noteproperty OSBuild ($os.buildnumber)
write-output $obj

get-content c:\computers.txt | get-inventory | convertto-html | out-file c:\inventory.html 
Computer Lookup
Edit section

Lookup a computer name and return the description


$Machines =Import-Csv $ImportFile
foreach ($machine in $machines) {
$computer = Get-QADComputer -Name $Machine.Computer
$machine | Add-Member -membertype noteproperty -name Description -Value $($computer.Description)
$Machines | Export-Csv -NoTypeInformation $ExportFile 


$importfile= 'C:\input.csv'
$exportfile= 'C:\output.csv'

$List = Import-Csv $importfile
foreach ($computer in $List) 
    $ADComputer = Get-QADComputer  -LdapFilter "(Name=$($computer.machine))"
    Write-Host "looking for " ($computer.machine) " in AD Found " $($ADComputer.Name)
    $computer | Add-Member -membertype noteproperty -name OS -Value $($ADComputer.operatingSystem)
    $computer | Add-Member -membertype noteproperty -name SP -Value $($ADComputer.operatingSystemServicePack)
    $computer | Add-Member -membertype noteproperty -name whenCreated -Value $($ADComputer.whenCreated)
    $computer | Add-Member -membertype noteproperty -name whenChanged -Value $($ADComputer.whenChanged)

$list | Export-Csv -NoTypeInformation $exportfile