Windows 获取硬件信息脚本问题

Windows 获取硬件信息脚本问题,windows,powershell,csv,windows-7,hardware,Windows,Powershell,Csv,Windows 7,Hardware,在Internet的帮助下,我成功地编写了一个基本的PowerShell脚本,用于收集硬件信息并将其导出到CSV文件。它收集了: 主机名 中央处理器 核数 GPU 公羊 我的脚本仍然需要获取HDD信息(容量、可用空间、id)、IPv4地址和MAC $Name = hostname $Motherboard = Get-WmiObject Win32_BaseBoard $CPU = Get-WmiObject Win32_Processor $GPU = Get-WmiObject Win3

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

  • 主机名
  • 中央处理器
  • 核数
  • GPU
  • 公羊
我的脚本仍然需要获取HDD信息(容量、可用空间、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_文件中使用
对象
'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并将它们“合并”在一起非常痛苦。

使用
-append
命令和
export CSV
命令,以便将新行添加到现有行中。你的命令看起来像

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

我想链接会对您有所帮助。

这是几个问题。请一次只关注一个问题,展示您试图解决的问题,展示您期望的和实际的输出,并解释哪些问题没有按预期工作(包括您遇到的所有错误)。