我基本上是试图从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发布于 2022-08-18 15:04:44
您可以使用PSCustomObject来组织您的数据,然后使用它以“适当”格式导出到csv:
$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。https://stackoverflow.com/questions/73404585
复制相似问题