首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用多个类的powershell中将数据导出到CSV

如何在使用多个类的powershell中将数据导出到CSV
EN

Stack Overflow用户
提问于 2022-08-18 14:13:13
回答 1查看 43关注 0票数 1

我基本上是试图从Windows物理机器中提取数据,我需要所有4个类来实现所需的数据。如果我在终端中使用$SysSummary变量,它会输出来自所有4个变量的数据。然而,当导出到CSV时,只有第一个添加到数组中。有人能建议我如何将所有这些数据输入CSV并进行良好的格式化吗?

谢谢。

代码语言:javascript
复制
#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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-18 15:04:44

您可以使用PSCustomObject来组织您的数据,然后使用它以“适当”格式导出到csv:

代码语言:javascript
复制
$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

(..)将将变量赋值转换为一个表达式,允许该值返回到管道中。这做了两件事。

  1. 将对象保存到$SysSummary
  2. 将对象传递给Export-Csv
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73404585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档