Ich habe dieses Stück Code, der die Informationen von den Computern in der Domäne erhält und an eine CSV-Datei ausgibt. Ich habe versucht, eine neue Codezeile hinzuzufügen, um auch die Datenträgerinformationen für die Computer zu erfassen, aber ich kann nicht wie erwartet funktionieren.Wie behebt man dieses Powershell-Skript mit Get-WmiObject?
# Get the list of all computer names and export to CSV file
Get-ADComputer -Filter * | select Name | Export-Csv -Path 'C:\temp\computers.csv' -NoTypeInformation
# Import the computer names from CSV file and get the system information
$computers = Import-Csv “C:\Temp\computers.csv” | ForEach {
$computerSystem = Get-WmiObject Win32_ComputerSystem -ComputerName $_.Name
$computerOS = Get-WmiObject Win32_OperatingSystem -ComputerName $_.Name
$computerCPU = Get-WmiObject Win32_Processor -ComputerName $_.Name
$computerSN = Get-WmiObject Win32_bios -ComputerName $_.Name | Select-Object SerialNumber
$computerDisk = Get-WmiObject win32_logicaldisk -ComputerName $_.Name | Select-Object DeviceId
[PSCustomObject]@{
'PCName' = $computerSystem.Name
'Model' = $computerSystem.Model
'RAM' = "{0:N2}" -f ($computerSystem.TotalPhysicalMemory/1GB)
'CPU' = $computerCPU.Name
'OS' = $computerOS.caption
'SN' = $computerSN.SerialNumber
'User' = $computerSystem.UserName
'Disk' = $computerDisk.DeviceId | Format-Table DeviceId, MediaType, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}
}
} | Export-Csv 'C:\Temp\system-info.csv' -NoTypeInformation
Dies ist die Codezeile für die Festplatte.
$computerDisk = Get-WmiObject win32_logicaldisk -ComputerName $_.Name | Select-Object DeviceId
Und ...
'Disk' = $computerDisk.DeviceId | Format-Table DeviceId, MediaType, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}
Die anderen Parameter arbeiten, aber nur die Platten Info-Bereich funktioniert nicht. Die Ausgabe ist: System.Object[]
anstatt die Info anzuzeigen.
'win32_logicaldisk' gibt eine Sammlung von Laufwerken zurück, da ein Computer mehrere Laufwerke haben kann. Sie brauchen also eine Foreach-Schleife, die über jedes Laufwerk iteriert. – Kiran
Was genau erwarten Sie, dass die 'Disk'-Zeile in der CSV aussieht? –
Unter Disk Spalte, brauche ich den Laufwerksbuchstaben (D :, E :, etc), Kapazität und freie Größe in GB, vielleicht Es benötigt 3 Spalten, aber ich weiß nicht, wie dies zu erreichen ist. –