Question
[Résolu] WMI à distance
- djedje68
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 13 ans 1 semaine #14284
par djedje68
[Résolu] WMI à distance a été créé par djedje68
Bonjour,
Je dois récupérer toute sortes d'informations sur des serveurs distants, avec des comptes système différents.
J'ai déjà repéré les classes WMI me permettant la récolte :
[code:1]
#Informations Classe
Hostname : (Get-WmiObject -class Win32_OperatingSystem).CSName
Système d'exploitation : (Get-WmiObject -class Win32_OperatingSystem).Caption
Mémoire vive : [Math]::round((Get-WmiObject -class Win32_ComputerSystem).TotalPhysicalMemory/1024/1024/1024, 0)
Processeur : (Get-WmiObject Win32_Processor).Name
Domaine : (Get-WmiObject Win32_ComputerSystem).Domain
Fabriquant : (Get-WmiObject Win32_ComputerSystem).Manufacturer
Modèle : (Get-WmiObject Win32_ComputerSystem).Model
[/code:1]
Seulement je bloque un peu pour la suite.
Je pensais mettre les adresses IP dans un fichier texte avec le compte et le mot de passe mais je ne sais vraiment pas comment procéder... Pouvez-vous m'aiguiller ?
D'avance merci,<br><br>Message édité par: Arnaud, à: 15/03/13 21:56
Je dois récupérer toute sortes d'informations sur des serveurs distants, avec des comptes système différents.
J'ai déjà repéré les classes WMI me permettant la récolte :
[code:1]
#Informations Classe
Hostname : (Get-WmiObject -class Win32_OperatingSystem).CSName
Système d'exploitation : (Get-WmiObject -class Win32_OperatingSystem).Caption
Mémoire vive : [Math]::round((Get-WmiObject -class Win32_ComputerSystem).TotalPhysicalMemory/1024/1024/1024, 0)
Processeur : (Get-WmiObject Win32_Processor).Name
Domaine : (Get-WmiObject Win32_ComputerSystem).Domain
Fabriquant : (Get-WmiObject Win32_ComputerSystem).Manufacturer
Modèle : (Get-WmiObject Win32_ComputerSystem).Model
[/code:1]
Seulement je bloque un peu pour la suite.
Je pensais mettre les adresses IP dans un fichier texte avec le compte et le mot de passe mais je ne sais vraiment pas comment procéder... Pouvez-vous m'aiguiller ?
D'avance merci,<br><br>Message édité par: Arnaud, à: 15/03/13 21:56
Connexion ou Créer un compte pour participer à la conversation.
- SiSMik
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 492
- Remerciements reçus 0
il y a 13 ans 1 semaine #14286
par SiSMik
Réponse de SiSMik sur le sujet Re:WMI à distance
Bonjour,
L'utilisation de WMI ne nécessite ni compte ni mots de passe.
Pour configurer cet accès tu peux suivre ce lien .
Une fois ta configuration faite, ton script nécessite quelque peu d'être optimisé.
[code:1]$Output = @()
Get-Content C:\temp\servers.txt | foreach {
# On test la connection au server
if (Test-Connection $_ -Count 1) {
# Si connection OK on fait un minimum de requetes WMI
$OS = Get-WmiObject Win32_OperatingSystem -ComputerName $_
$Processeur = (Get-WmiObject Win32_Processor).Name
$Computer = Get-WmiObject Win32_ComputerSystem -ComputerName $_
# On crée une hashtable pour stocker les propriétés du futur objet
$props = @{'MemoireVive'=[Math]::round($OS.TotalPhysicalMemory/1024/1024/1024, 0);
'HostName' = $OS.CSName;
'OperatingSyetem' = $OS.Caption;
'Domain' = $Computer.Domain;
'Fabriquant'=$Computer.Manufacturer;
'Modele'=$Computer.Model}
# On ajoute l'objet dans le tableau output pour faire une belle sortie
$Output += New-Object -TypeName PSCustomObject -Property $props
}
else {
throw \"Connection à $($_) impossible\"
}
}
$Output[/code:1]
Des codes comme celui-ci doivent pululler sur internet
@+
L'utilisation de WMI ne nécessite ni compte ni mots de passe.
Pour configurer cet accès tu peux suivre ce lien .
Une fois ta configuration faite, ton script nécessite quelque peu d'être optimisé.
[code:1]$Output = @()
Get-Content C:\temp\servers.txt | foreach {
# On test la connection au server
if (Test-Connection $_ -Count 1) {
# Si connection OK on fait un minimum de requetes WMI
$OS = Get-WmiObject Win32_OperatingSystem -ComputerName $_
$Processeur = (Get-WmiObject Win32_Processor).Name
$Computer = Get-WmiObject Win32_ComputerSystem -ComputerName $_
# On crée une hashtable pour stocker les propriétés du futur objet
$props = @{'MemoireVive'=[Math]::round($OS.TotalPhysicalMemory/1024/1024/1024, 0);
'HostName' = $OS.CSName;
'OperatingSyetem' = $OS.Caption;
'Domain' = $Computer.Domain;
'Fabriquant'=$Computer.Manufacturer;
'Modele'=$Computer.Model}
# On ajoute l'objet dans le tableau output pour faire une belle sortie
$Output += New-Object -TypeName PSCustomObject -Property $props
}
else {
throw \"Connection à $($_) impossible\"
}
}
$Output[/code:1]
Des codes comme celui-ci doivent pululler sur internet
@+
Connexion ou Créer un compte pour participer à la conversation.
- djedje68
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 13 ans 1 semaine #14288
par djedje68
Réponse de djedje68 sur le sujet Re:WMI à distance
Bonjour,
Merci pour le script.
C'est déjà un bon début! Le soucis, c'est que je n'ai pas envie de passer sur 100 serveur pour autoriser le WMI... Je dois donc m'authentifier.
En ligne de commande j'utilise un -credential monUser et j'ai juste à saisir le mot de passe mais j'aimerai que tout se trouve dans un fichier. Seulement je ne sais pas faire.
Le fichier aura la structure suivante :
Serveur1,user,mdp
Serveur2,user,mdp
Est-ce faisable ?
Merci pour le script.
C'est déjà un bon début! Le soucis, c'est que je n'ai pas envie de passer sur 100 serveur pour autoriser le WMI... Je dois donc m'authentifier.
En ligne de commande j'utilise un -credential monUser et j'ai juste à saisir le mot de passe mais j'aimerai que tout se trouve dans un fichier. Seulement je ne sais pas faire.
Le fichier aura la structure suivante :
Serveur1,user,mdp
Serveur2,user,mdp
Est-ce faisable ?
Connexion ou Créer un compte pour participer à la conversation.
- djedje68
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 13 ans 1 semaine #14290
par djedje68
Réponse de djedje68 sur le sujet Re:WMI à distance
Grâce à ton script, j'avance plutôt bien.
J'ai réussi à récupérer les credential ainsi que toutes les informations nécessaires (adresse des serveurs, etc...) depuis un fichier CSV.
En revanche, pour le processeur, je rencontre un problème : la classe Win32_Processor.Name ne remonte rien si il y a plusieurs coeurs... Du coup je ne sais pas dans quelle classe chercher le nom du processeur.
D'avance merci,
J'ai réussi à récupérer les credential ainsi que toutes les informations nécessaires (adresse des serveurs, etc...) depuis un fichier CSV.
En revanche, pour le processeur, je rencontre un problème : la classe Win32_Processor.Name ne remonte rien si il y a plusieurs coeurs... Du coup je ne sais pas dans quelle classe chercher le nom du processeur.
D'avance merci,
Connexion ou Créer un compte pour participer à la conversation.
- SiSMik
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 492
- Remerciements reçus 0
il y a 13 ans 1 semaine #14293
par SiSMik
Réponse de SiSMik sur le sujet Re:WMI à distance
Bonjour,
Pour configurer WMI sur une foultitude de servers, tu peux passer par une GPO
(S'ils sont dans un domaine)
Sinon pour le multi proc, t'as essayé Win32_PerfRawData_PerfOS_Processor comme classe ? (c'est une idée, pas testé)
Pour configurer WMI sur une foultitude de servers, tu peux passer par une GPO
Sinon pour le multi proc, t'as essayé Win32_PerfRawData_PerfOS_Processor comme classe ? (c'est une idée, pas testé)
Connexion ou Créer un compte pour participer à la conversation.
- djedje68
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 13 ans 1 semaine #14294
par djedje68
Réponse de djedje68 sur le sujet Re:WMI à distance
Ils ne sont pas dans des domaines. Mais je me débrouille petit à petit 
Pour le processeuer j'ai du faire un petit bout de code :
[code:1]
$ProcesseurCount = $Processeur.Count
if ($ProcesseurCount -ge 2){
$ProcesseurName = $Processeur[0].Name
else {
$ProcesseurName = $Processeur.Name
}
[/code:1]
Et ça marche bien
Pour le processeuer j'ai du faire un petit bout de code :
[code:1]
$ProcesseurCount = $Processeur.Count
if ($ProcesseurCount -ge 2){
$ProcesseurName = $Processeur[0].Name
else {
$ProcesseurName = $Processeur.Name
}
[/code:1]
Et ça marche bien
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.108 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] WMI à distance