I guess I just have a different mind set... I will grant points one and two, but three is of no consequence. While it may (debatable) be more work to retrieve the information directly. Once you have that resource you can now use it over and over again.
@ peter.munnelly
Not knowing the whole story as is often the case with forums. I see BSonPosh's point you asked about parsing a text file.. Try something like this...
# Borrows Heavily from http://bsonposh.com/archives/248
# Not production tested ... ~glenn
$ErrorActionPreference = "SilentlyContinue"
$File = gc < PATH TO FILE>
$processor = "" | Select-Object Model,Speed,ModelNumber,CoresperProcessor,ThreadsperCore,InternalDataCache,L2OnboardCache
$mainboard = "" | Select-Object Bus,mpsuppport,MPAPIC,BIOS,System,Mainboard,TotalMemory
$Chipset1 = "" | Select-Object Model,SharedMemory
$Chipset2 = "" | Select-Object model
function Processor ($item, $value) {
switch ($item)
{
"Model" {$processor.Model = $value}
"Speed" {$processor.Speed = $value}
"Model Number" {$processor.ModelNumber = $value}
"Cores per Processor" {$processor.CoresperProcessor = $value}
"Threads per Core" {$processor.ThreadsperCore = $value}
"Internal Data Cache" {$processor.InternalDataCache =$value}
"L2 On-board Cache" {$processor.L2OnboardCache = $value}
}
}
function Mainboard ($item, $value){
switch ($item)
{
"Bus(es)" {$mainboard.bus = $value}
"MP Support" {$mainboard.mpsuppport = $value}
"MP APIC" {$mainboard.mpapic = $value}
"System BIOS" {$mainboard.bios = $value}
"System" {$mainboard.system = $value}
"Mainboard" {$mainboard.Mainboard = $value}
"Total Memory" {$mainboard.totalmemory = $value}
}
}
function Chipset1 ($item, $value){
switch ($item)
{
"Model" {$chipset1.Model = $value}
"Shared Memory" {$chipset1.SharedMemory = $value}
}
}
function Chipset2 ($item, $value){
switch ($item)
{
"Model" {$chipset2.model = $value}
}
}
$process = 0
foreach ($line in $file ) {
$parsd = $line.Trim().split([string[]](": "),[system.StringSplitOptions]::RemoveEmptyEntries)
$property = $parsd[ 0 ].Trim()
$value = $parsd[ 1 ].Trim()
switch ($property)
{
"< Processor >" {$process = 1}
"< Mainboard >" {$process = 2}
"< Chipset 1 >" {$process = 3}
"< Chipset 2 >" {$process = 4}
}
switch ($process)
{
1 { Processor $property $value}
2 { Mainboard $property $value}
3 { Chipset1 $property $value}
4 { Chipset2 $property $value}
}
}
$pc = "" | select @{e={$processor};n='processor'}, `
@{e={$mainboard};n='mainboard'}, `
@{e={$Chipset1};n='Chipset1'}, `
@{e={$Chipset2};n='Chipset2'}
Write-Output $pc
@BSonPosh, That works wonderfuly... thank you!
$parsd = $line.Trim().split([string[]](": "),[system.StringSplitOptions]::RemoveEmptyEntries)
~Glenn