Question Aide script WMI sur PC/Serveur distant

Plus d'informations
il y a 8 ans 9 mois #23721 par Hoch
Bonjour,

Je souhaiterais faire un script en powershell qui puissent se connecter à des pcs ou des serveurs distants. Pour l'instant j'ai juste chercher les commandes qui me permettent de sortir les confs en local dans un fichier, mais j'ai du mal à comprendre pour pouvoir le faire à distance. Egalement, je dois me loggué pour être capable d'en sortir plein de confs à la fois mais sans grand succès non plus.

Voici mon ébauche de code :
Get-WmiObject Win32_OperatingSystem | Select-Object Name,OSArchitecture,Version >> confwin2.csv
Get-WmiObject Win32_Processor | Select-Object Manufacturer,Name,NumberOfCores >> confwin2.csv
Get-WmiObject Win32_DiskDrive | Select-Object Index,Name,Model,MediaType,Size >> confwin2.csv

Dernière petite chose, comment fait-on pour convertir la size du dd en go et quelles sont les commandes pour sortir l'espace libre et occupé ?

Merci d'avance :) !

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 9 mois #23727 par Philippe
salut Razator

Pour les info que tu demande il vaut mieux utilisé Win32_LogicalDisk

[code:1]Get-WmiObject Win32_LogicalDisk -Filter {DriveType = 3}[/code:1]

Win32_DiskDrive te revoie les infos physiques du disque pas les partition (ou lecteurs logiques)

Tu a sur ce lien plus d'info et aussi tu aura les réponses a toutes les autres questions !!
.<br><br>Message édité par: 6ratgus, à: 6/06/17 11:20

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 9 mois #23728 par Hoch
Salut et tout d'abord merci de ta réponse !

Avant ça, j'ai avancé sur mon code mais j'aurais encore besoin de quelques infos si ca ne te dérange pas :)

[code:1]
$Serveurs = \&quot;127.0.0.1\&quot;
$Output = @()
if (Test-Connection $Serveurs -Count 1) {
$SE = Get-WmiObject Win32_OperatingSystem -ComputerName $Serveurs
$DD = Get-WmiObject Win32_DiskDrive -ComputerName $Serveurs
$SpaceDD = Get-WmiObject Win32_LogicalDisk -Filter {DriveType = 3} -ComputerName $Serveurs
$Proc = Get-WmiObject Win32_Processor -ComputerName $Serveurs
$conf = @{'NomSE' = $SE.Name;
'Architecture' = $SE.OSArchitecture;
'VersionSE' = $SE.Version;
'Index' = $DD.Index;
'NomDD' = $SpaceDD.Name;
'Modele' = $DD.Model;
'Type' = $DD.MediaType;
'Taille' = [Math]::round($SpaceDD.Size/1024/1024/1024, 0);
'TailleDispo' = [Math]::round($SpaceDD.FreeSpace/1024/1024/1024, 0);
'NomProc' = $Proc.Name;
'FabriquantProc' = $Proc.Manufacturer;
'Coeurs' = $Proc.NumberOfCores;}
$Output += New-Object -TypeName PSCustomObject -Property $conf
$Output | select NomSE,Architecture,VersionSE,Index,NomDD,Modele,Type,Taille,TailleDispo,NomProc,FabriquantProc,Coeurs &gt;&gt; C:\Users\Zeus\Desktop\confwin.csv
}
else {
throw \&quot;Connexion à $Serveurs impossible\&quot;
}
[/code:1]

Il faudrait maintenant que je prenne un fichier pour les users (de la forme user,password je pense) et que je puisse récupérer plusieurs disques s'il y en a (je suppose que le foreach peut remédier à ça ?)

Si tu pouvais encore me donner un coup de main ca serait super !<br><br>Message édité par: Razator, à: 6/06/17 14:17

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 9 mois #23729 par Philippe

Il faudrait maintenant que je prenne un fichier pour les users (de la forme user,password je pense)

la j'ai pas vraiment compris ce que tu veux faire ?
la liste des utilisateurs du PC ?
une liste d'utilisateurs pour te connecter à chaque PC ?

que je puisse récupérer plusieurs disques s'il y en a (je suppose que le foreach peut remédier à ça ?)

une boucle oui mais il faudrait savoir comment tu voir ces info dans ton objet $output
faut t'il répété chaque info (nom,os,cpu,mem,...) pour chaque disque ?
ou inserer dans ligne vide avec que le nom et le/les disques supplémentaire ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 9 mois #23730 par Hoch
Pour les users ça serait pour le -Credential pour éviter de taper le mot de passe et pour les disques ça serait à la suite; en sortie j'ai ça par exemple :
[code:1]
NomSE : Microsoft Windows Server 2012 R2 Standard
Architecture : 64-bit
VersionSE : 6.3.9600
Index : {0, 1}
Disque : C:
Modele : {VMware Virtual disk SCSI Disk Device, VMware Virtual disk SCSI Disk Device}
Type : {Fixed hard disk media, Fixed hard disk media}
Taille : 60
TailleDispo : 43
NomProc : {Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz, Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz}
FabriquantProc : {GenuineIntel, GenuineIntel}
Coeurs : {1, 1}[/code:1]<br><br>Message édité par: Razator, à: 7/06/17 10:04

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 9 mois #23731 par Philippe
salut Razator

alors je me suis un peu ennuyer pour faire le lien entre les disques et les lecteurs logiques(partition)
mais j'ai trouver

j'ai adapter le code pour le cas des multi proc pour que export en CSV fonctionne
pour pourra donc facilement l'ouvrir dans excel


[code:1]$Serveurs = \&quot;.\&quot;
$Output = @()
if (Test-Connection $Serveurs -Count 1) {
$SE = Get-WmiObject Win32_OperatingSystem -ComputerName $Serveurs
[Object[]]$Proc = Get-WmiObject Win32_Processor -ComputerName $Serveurs
get-wmiobject Win32_DiskPartition -ComputerName $Serveurs | foreach {
$s = \&quot;ASSOCIATORS OF {\&quot; + \&quot;$($_.__RELPATH)\&quot; + \&quot;} where ResultRole=Antecedent\&quot;
$DiskDrive = Get-WmiObject -Query $s -ComputerName $Serveurs
$s = \&quot;ASSOCIATORS OF {\&quot; + \&quot;$($_.__RELPATH)\&quot; + \&quot;} where ResultRole=Dependent\&quot;
$LogicalDrive = Get-WmiObject -Query $s -ComputerName $Serveurs
if ($LogicalDrive.DriveType -eq 3) {
$conf = @{'NomSE' = $SE.Caption;
'Architecture' = $SE.OSArchitecture;
'VersionSE' = $SE.Version;
'Lecteur' = $LogicalDrive.Name;
'Type' = $LogicalDrive.Description;
'Modele' = $DiskDrive.Model;
'Taille' = [Math]::round($LogicalDrive.Size/1024/1024/1024, 0);
'TailleDispo' = [Math]::round($LogicalDrive.FreeSpace/1024/1024/1024, 0);
'NomProc' = $Proc[0].Name;
'FabriquantProc' = $Proc[0].Manufacturer;
'Coeurs' = $Proc.count * $Proc[0].NumberOfCores;}
$Output += New-Object -TypeName PSCustomObject -Property $conf
}
}
$Output #| Export-Csv -Append \&quot;C:\Users\Zeus\Desktop\confwin.csv\&quot;
}
else {
throw \&quot;Connexion à $Serveurs impossible\&quot;
}[/code:1]

pour le credential je te laisse un peu chercher et montrer ce que tu a trouver

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.049 secondes
Propulsé par Kunena