将计算机信息导出为CSV

时间:2015-07-10 19:13:53

标签: powershell export-to-csv

以下代码输出如下信息:

System Information for: Localhost

  Model          : {0} 
  Serial Number  : {1} 
  Version        : {2} 
  Monitor Model  : {3}
  Monitor Serial : {4}

如何导出到CSV并在Excel中使用格式:

Name,  Model,  Serial Number,   Version,   Monitor Model,  Monitor serial

我希望每个值都在自己的单元格中。

代码1:

$ArrComputers = "localhost"
$OutputLog = ".\output.log" 
$NotRespondingLog = ".\notresponding.log" 
$ErrorActionPreference = "Stop" 
Clear-Host

ForEach ($Computer in $ArrComputers) {
  try {
    $computerSystem = get-wmiobject Win32_ComputerSystem -Computer $Computer
    $computerBIOS = get-wmiobject Win32_BIOS -Computer $Computer
    $Version = Get-WmiObject -Namespace "Root\CIMv2" `
        -Query "Select * from Win32_ComputerSystemProduct" `
        -computer $computer | select -ExpandProperty version
    $MonitorInfo = gwmi WmiMonitorID -Namespace root\wmi -computername  $computer |
      Select -last 1 @{n="Model"; e={[System.Text.Encoding]::ASCII.GetString($_.UserFriendlyName -ne 00)}},
        @{n="Serial Number";e={[System.Text.Encoding]::ASCII.GetString($_.SerialNumberID -ne 00)}}  
  } catch {
    $Computer | Out-File -FilePath $NotRespondingLog -Append -Encoding UTF8
    continue
  }

  $Header = "System Information for: {0}" -f $computerSystem.Name

  write-host $Header -BackgroundColor DarkCyan
  $Header | Out-File -FilePath $OutputLog -Append -Encoding UTF8

  $Output = (@"
  -------------------------------------------------------

  Model          : {0} 
  Serial Number  : {1} 
  Version        : {2} 
  Monitor Model  : {3}
  Monitor Serial : {4}

  -------------------------------------------------------

"@) -f -join $computerSystem.Model, $computerBIOS.SerialNumber, $Version, `
    $MonitorInfo.Model, $MonitorInfo."Serial Number"

  Write-Host $Output
  $Output | Out-File -FilePath $OutputLog  -Append -Encoding UTF8
}

1 个答案:

答案 0 :(得分:0)

删除格式字符串,只需将数据导出为CSV:

$data = ForEach ($Computer in $ArrComputers) {
  try {
    ...
  } catch {
    ...
  }

  $props = [ordered]@{
    'Name'           = $computerSystem.Name
    'Model'          = $computerSystem.Model
    'Serial Number'  = $computerBIOS.SerialNumber
    'Version'        = $Version
    'Monitor Model'  = $MonitorInfo.Model
    'Monitor Serial' = $MonitorInfo."Serial Number"
  }
  New-Object -Type PSCustomObject -Property $props
}

$data | Export-Csv 'C:\path\to\output.csv' -NoType

New-Object语句是必需的,因为Export-Csv会将对象列表的属性导出为CSV文件的字段。

请注意,Excel特别关注它接受为CSV的内容。该文件必须必须以逗号分隔(无论您的系统区域设置中配置了哪个字段分隔符)。