2017-05-15 2 views
1

Avec l'aide d'Internet, j'ai réussi à écrire un script PowerShell de base qui recueille les informations matérielles et les exporte dans un fichier CSV. Il rassemble:Obtention d'un problème de script d'informations sur le matériel

  • Hostname
  • CPU
  • NumberOfCores
  • GPU
  • RAM

Mon script doit encore obtenir des informations du disque dur (capacité, freespace, id), adresse IPv4 et 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 

Plus tôt, j'avais aussi une ligne pour obtenir IP et MAC, mais cela ne fonctionnait pas universellement. Il ressemblait à ceci:

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

Je voudrais simplement utiliser dans $To_File objet 'IP' = $IP.IPAddress et 'MAC' = $MAC.MacAddress

Ce ne fut pas bon car tous les adaptateurs ont été nommés « lan ».

Pour le disque dur, j'ai écrit:

$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) 
} 

Étant donné que certains ordinateurs avaient plus d'un disque dur, mais je ne sais pas comment je peux joindre ces deux choses ensemble pour que je puisse avoir toutes ces informations ci-dessus et disques durs dans un fichier.

Je ne peux pas faire tout cela à distance, donc le script est sur un lecteur USB et je vais à chaque ordinateur et le faire fonctionner par moi-même. Je dois encore faire environ 20 machines. Je voudrais aussi savoir comment ajouter de nouvelles lignes à un fichier CSV existant, car avoir 15 CSV et les "fusionner" est douloureux. Utilisez la commande -append avec votre commande export-csv afin d'ajouter de nouvelles lignes avec les lignes existantes.

+0

Voilà plusieurs questions à la fois. Veuillez vous concentrer sur un problème à la fois, montrer ce que vous avez essayé de résoudre le problème, montrer vos résultats souhaités et réels, et expliquer ce qui ne fonctionne pas comme prévu (inclure toutes les erreurs que vous obtenez). –

Répondre

1

Votre commande serait

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

Powershell - Export-CSV and Append lien sera utile pour vous je suppose.