【问题标题】:Getting Hardware Info script trouble遇到硬件信息脚本问题
【发布时间】:2017-10-14 18:53:47
【问题描述】:

在 Internet 的帮助下,我设法编写了一个基本的 PowerShell 脚本,用于收集硬件信息并将其导出为 CSV 文件。它收集:

  • 主机名
  • CPU
  • 核心数
  • GPU
  • 内存

我的脚本仍然需要获取硬盘信息(容量、可用空间、ID)、IPv4 地址和 MAC。

$Name = hostname
$Motherboard = Get-WmiObject Win32_BaseBoard
$CPU = Get-WmiObject Win32_Processor
$GPU = Get-WmiObject Win32_VideoController
$RAM = Get-WmiObject Win32_ComputerSystem

$To_File = new-object PSObject -property @{
    'Name' = $Name
    'Motherboard' = $Motherboard.Product
    'CPU' = $CPU.Name
    'Cores' = $CPU.NumberOfCores
    'GPU' = $GPU.Name
    'RAM' = "{0:N2}" -f ($RAM.TotalPhysicalMemory/1GB)
}

$To_File | Select-Object Name, Motherboard, CPU, Cores, GPU, RAM |
    Export-Csv G:\$Name.csv

之前,我也有一条用于获取 IP 和 MAC 的线路,但它并不能通用。它看起来像这样:

$IP = gwmi Win32_NetworkAdapterConfiguration | Where ($_.DNSDomain -eq 'lan')
$MAC = gwmi Win32_NetworkAdapterConfiguration | Where ($_.DNSDomain -eq 'lan')

然后我会在 $To_File 对象中使用 'IP' = $IP.IPAddress'MAC' = $MAC.MacAddress

这不好,因为并非所有适配器都被命名为“lan”。

对于我写的硬盘:

$Disk = Get-WmiObject Win32_LogicalDisk -Filter drivetype=3

$DiskInfo = foreach ($zm in $Disk) {
    'ID: ' + $zm.DeviceID
    'Capacity: ' + "{0:N2}" -f ($zm.Size/1GB)
    'Free Space: ' + "{0:N2}" -f ($zm.FreeSpace/1GB)
}

由于有些计算机有多个硬盘,但我不知道如何将这两个东西结合在一起,这样我就可以将上面的所有信息和硬盘放在一个文件中。

我无法远程完成所有这些工作,因此脚本位于 USB 驱动器上,我会自己前往每台计算机运行它。我仍然需要做大约 20 台机器。

我还想知道如何将新行添加到现有 CSV 文件,因为拥有 15 个 CSV 并将它们“合并”在一起很痛苦。

【问题讨论】:

  • 这是几个问题。请一次只关注一个问题,展示您为解决该问题所做的尝试,展示您期望的实际输出,并说明未按预期工作的内容(包括您遇到的所有错误)。

标签: windows powershell csv windows-7 hardware


【解决方案1】:

-append 命令与export-csv 命令一起使用,以便在现有行中添加新行。你的命令看起来像

$To_File | Select-Object Name, Motherboard, CPU, Cores, GPU, RAM |
Export-Csv G:\$Name.csv -NoTypeInformation -Append

Powershell - Export-CSV and Append 链接我猜对你会有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-24
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多