Our Score
Click to rate this post!
[Total: 0 Average: 0]
This is a note for myself to finally remember once and for all how to export a result to .csv file properly (with column headers in this case) using GetEnumerator()
#get pc names from somewhere
$allpc = Get-Content .\allpc.txt
#$allpc = @('pc1', 'pc2')
#Create Empty
$result = @()
#List below is there just for testing purposes
$list = New-Object 'Collections.Generic.List[string]'
#Loop through names and get needed data - in this case Computer Name, BIOS Data, Computer Model
foreach ($pc in $allpc) {
if (Test-Connection -computername $pc -Count 1 -ErrorAction SilentlyContinue) {
$checkBiosPassEN = (Get-WmiObject -computername $pc -Namespace root/hp/InstrumentedBIOS -Class HP_BIOSSetting | Where-Object Name -eq "Setup Password").IsSet
$BiosData = Get-WmiObject -computername $pc -Class win32_bios
$PCData = Get-WmiObject -computername $pc -Class Win32_computersystem
#Create Powershell object - ordered hashtable in this case
$dataObj = [ordered]@{
ComputerName = $pc
ComputerModel = $PCData.Model
BiosVersion = $BiosData.SMBIOSBIOSVersion
PasswordEnabled = $checkBiosPassEN
}
#Add object to the result array
$result += $dataObj
#Add object to the list
$list.Add($dataObj.Values)
#Clear the object before next computer
$dataObj = ""
}
}
#Create .csv file with headers using enumerator to loop through array, selecting needed properties
$result.GetEnumerator() |
Select-Object -Property @{Name = 'ComputerName'; Expression = { $_.ComputerName } },
@{Name = 'ComputerModel'; Expression = { $_.ComputerModel } }, @{Name = 'BiosVersion'; Expression = { $_.BiosVersion } }, @{Name = "PasswordEnabled"; Expression = { $_.PasswordEnabled } } |
Export-Csv -NoTypeInformation -Path resultMOD.csv
Our Score
Click to rate this post!
[Total: 0 Average: 0]
Leave a Reply