我基本上是在尝试从Windows物理机器中提取数据,我需要所有4个类来实现所需的数据。如果我在终端中使用$SysSummary变量,它会输出所有4个变量的数据。但是,当导出为CSV时,只会出现数组中的第一个添加项。有人能建议我如何将所有这些数据转换成CSV并进行良好格式化吗?
谢谢。
#Path variable that can be edited to appropriate location
$sysinfopath = 'PATHGOESHERE'
#Assign our required classes for the system details to a variable for easier access in our compiler.
$SysInfo = Get-CimInstance -ClassName Win32_ComputerSystem
$SysProcessor = Get-CimInstance -ClassName Win32_Processor
$SysDisk = Get-CimInstance -ClassName Win32_DiskDrive
$SysBios = Get-CimInstance -ClassName Win32_BIOS
# Compile the $SysInfo class data into our final summary variable.
$SysSummary = @($SysInfo | Select-Object @{N='Computer Name';E={$SysInfo.Name}}, @{N='Domain Name';E={$SysInfo.Domain}},@{N='Manufacturer';E={$SysInfo.Manufacturer}}, @{N='Model';E={$SysInfo.Model}}, @{N='Memory (GB)';E={[math]::Round($SysInfo.TotalPhysicalMemory/ 1GB)}})
# Compile the $SysProcessor class data into our final summary variable.
$SysSummary += $SysProcessor | Select-Object @{N='CPU Name';E={$SysProcessor.Name}}, @{N='Core Count';E={$SysProcessor.NumberOfCores}}
# Compile the $SysDisk class data into our final summary variable.
$SysSummary += $SysDisk | Select-Object @{N='Serial No';E={$SysDisk.Model}}, @{N='Storage Size';E={[math]::Round($SysDisk.Size/ 1GB)}}
# Compile the $SysBios class data into our final summary variable.
$SysSummary += $SysBios | Select-Object @{N='Serial No';E={$SysBios.SerialNumber}}
# Export the $SysSummary variable to a CSV, path is set on line 25
$SysSummary | Export-Csv -path $sysinfopath
您可以使用PSCustomObject来组织数据,然后使用它导出到"适当的";格式:
$SysInfo = Get-CimInstance -ClassName Win32_ComputerSystem
$SysProcessor = Get-CimInstance -ClassName Win32_Processor
$SysDisk = Get-CimInstance -ClassName Win32_DiskDrive
$SysBios = Get-CimInstance -ClassName Win32_BIOS
($SysSummary = [PSCUstomObject]@{
'Computer Name' = $SysInfo.Name
'Domain Name' = $SysInfo.Domain
'Manufacturer' = $SysInfo.Manufacturer
'Model' = $SysInfo.Model
'Memory (GB)' = [math]::Round($SysInfo.TotalPhysicalMemory/ 1GB)
'CPU Name' = $SysProcessor.Name
'Core Count' = $SysProcessor.NumberOfCores
'Disk Model' = $SysDisk.Model
'Storage Size' = [math]::Round($SysDisk.Size/ 1GB)
'Serial No' = $SysBios.SerialNumber
}) | Export-Csv -Path $sysinfopath -NoTypeInformation
(..)
将把变量赋值转换为一个表达式,允许值返回到管道中。这做了两件事。
- 将对象保存到
$SysSummary
- 将对象传递给
Export-Csv