在互联网的帮助下,我设法编写了一个基本的PowerShell脚本,用于收集硬件信息并将其导出为CSV文件。它聚集在一起:
我的脚本仍然需要获取硬盘信息(容量,自由空间,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并且可以合并'他们在一起很痛苦。
答案 0 :(得分:1)
将-append
命令与export-csv
命令一起使用,以便添加包含现有行的新行。你的命令看起来像
$To_File | Select-Object Name, Motherboard, CPU, Cores, GPU, RAM |
Export-Csv G:\$Name.csv -NoTypeInformation -Append