获取硬件信息脚本有问题

时间:2017-05-15 21:03:56

标签: windows powershell csv windows-7 hardware

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

  • 主机名
  • CPU
  • NumberOfCores
  • GPU
  • RAM

我的脚本仍然需要获取硬盘信息(容量,自由空间,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"。

对于HDD,我写道:

$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并且可以合并'他们在一起很痛苦。

1 个答案:

答案 0 :(得分: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链接对我有帮助。