Question [Concours Scripting] Conformité serveurs (validé)
- TIti
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
il y a 18 ans 4 mois #1262
par TIti
[Concours Scripting] Conformité serveurs (validé) a été créé par TIti
Bonjour à vous,
Comme promis suite au sujet \"Comment utiliser le .count\" (fermé le 18/09), un fichier permettant de tester la conformité d'une liste de serveurs et d'afficher les points \"non conformes\"
Ce qui va donner : (les gros blancs sont bien évidemment les données que je ne peux pas publier
)
Le fichier PS1
Le fichier d'aide
Comme d'hab, merci aux experts de tailler dans le code
Message édité par: Berurier, à: 14/11/07 13:52
Message édité par: Berurier, à: 21/11/07 16:44<br><br>Message édité par: robin, à: 18/12/07 09:27
Comme promis suite au sujet \"Comment utiliser le .count\" (fermé le 18/09), un fichier permettant de tester la conformité d'une liste de serveurs et d'afficher les points \"non conformes\"
Ce qui va donner : (les gros blancs sont bien évidemment les données que je ne peux pas publier
Le fichier PS1
La pièce jointe powershell_scripting_controle_serveur.txt est absente ou indisponible
Le fichier d'aide
La pièce jointe powershell_scripting_controle_serveur.txt est absente ou indisponible
Comme d'hab, merci aux experts de tailler dans le code
Message édité par: Berurier, à: 14/11/07 13:52
Message édité par: Berurier, à: 21/11/07 16:44<br><br>Message édité par: robin, à: 18/12/07 09:27
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 18 ans 4 mois #1263
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Tester la conformité des serveurs
Bonjour Berrurier,
Ca faisait longtemps que tu n'étais pas revenu sur le forum.
Merci pour ta contribution, mais j'ai l'impression que tu as posté 2 fois ton fichier d'aide et du coup il manque le script.
En tout cas, ton script a l'air très interessant. Pour illustrer ce qu'il fait, ne pourrais tu pas poster le résultat en masquant si tu le souhaites le nom de tes machines ?
Arnaud
Ca faisait longtemps que tu n'étais pas revenu sur le forum.
Merci pour ta contribution, mais j'ai l'impression que tu as posté 2 fois ton fichier d'aide et du coup il manque le script.
En tout cas, ton script a l'air très interessant. Pour illustrer ce qu'il fait, ne pourrais tu pas poster le résultat en masquant si tu le souhaites le nom de tes machines ?
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- TIti
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
il y a 18 ans 4 mois #1264
par TIti
Réponse de TIti sur le sujet Re:Tester la conformité des serveurs
Oui,
J'ai validé sans le vouloir et sans les photos
Je re !
Bonjour à vous,
Comme promis suite au sujet \"Comment utiliser le .count\" (fermé le 18/09), un fichier permettant de tester la conformité d'une liste de serveurs et d'afficher les points \"non conformes\"
Ce qui va donner : (les gros blancs sont bien évidemment les données que je ne peux pas publier )
Le code :
[code:1]clear-host
$l=get-credential
foreach ($server in get-content c:\server.txt)
{$a=gwmi Win32_PageFile -computername $server -credential $l
$point=10
$serveurtype1 = @{'pagefile' = 'c:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 1'; 'boot' = '\Device\Harddisk2\Partition2'}
$serveurtype2 = @{'pagefile' = 'e:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 2'; 'boot' = '\Device\Harddisk0\Partition2'}
$serveurtype3 = @{'pagefile' = 'c:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 3'; 'boot' = '\Device\Harddisk1\Partition3'}
$serveurtype4 = @{'pagefile' = 'e:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 4'; 'boot' = '\Device\Harddisk1\Partition2'}
$modele=get-wmiobject Win32_ComputerSystem -computername $server -credential $l
$ram=get-WmiObject Win32_LogicalMemoryConfiguration -computername $server -credential $l
$os=gwmi Win32_OperatingSystem -computername $server -credential $l;\"\"
Write-host \"Verification de la conformite du $server\" -foregroundcolor blue -backgroundColor white;\"\"
write-Host \"Serveur HP\"$modele.model[0..13]\"/ Memoire =\"$ram.TotalPhysicalMemory\"Mo / Domaine :\"$modele.domain;\"\"
write-Host \"System\"$os.caption\"/ Service Pack\"$os.ServicePackMajorVersion;\"\"
if ($modele.model -like \"*HP 1600*\"«»)
{$type=$serveurtype1}
if ($modele.model -like \"*HP 3000*\"«»)
{$type=$serveurtype2}
if ($modele.model -like \"*HP 5000*\"«»)
{$type=$serveurtype3}
if ($modele.model -like \"*HP 5500*\"«»)
{$type=$serveurtype4}
if ($a.caption -eq $type.pagefile)
{$point=$point}
else
{write-host \"Emplacement du pagefile non conforme\"
$point=$point-2.5}
$c=gwmi Win32_BIOS -computername $server -credential $l
if ($c.caption -eq $type.bios)
{$point=$point}
else
{write-host \"Version du bios non Conforme\"
$point=$point-2}
$d=gwmi Win32_BootConfiguration -computername $server -credential $l
if ($d.caption -eq $type.boot)
{$point=$point}
else
{write-host \"Fichier Boot.ini mal renseigne\"
$point=$point-2}
foreach ($lettre in get-content c:\lettre.txt)
{$b=@(gwmi Win32_PerfFormattedData_PerfDisk_Logicaldisk -computername $server -credential $l| where {($_.name -eq \"$lettre\"«») -and ($_.percentfreespace -lt \"15\"«»)}).Count
if ($b -ne \"0\"«»)
{write-host \"Espace disque partition $lettre insuffisant\"}
$point=$point-($b/2)};\"\"
if ($point -lt 9)
{Write-host \"Conformite du $server :\"($point*10) \"%\" -foregroundcolor red -backgroundColor white}
else
{Write-host \"Conformite du $server :\"($point*10) \"%\" -foregroundcolor darkgreen -backgroundColor white}}[/code:1]
Et le fichier d'aide :
Arnaud, si tu peux faire du ménage :
1 / Dans le code
2 / Sur mon Post précédent
Désolé
J'ai validé sans le vouloir et sans les photos
Je re !
Bonjour à vous,
Comme promis suite au sujet \"Comment utiliser le .count\" (fermé le 18/09), un fichier permettant de tester la conformité d'une liste de serveurs et d'afficher les points \"non conformes\"
Ce qui va donner : (les gros blancs sont bien évidemment les données que je ne peux pas publier )
Le code :
[code:1]clear-host
$l=get-credential
foreach ($server in get-content c:\server.txt)
{$a=gwmi Win32_PageFile -computername $server -credential $l
$point=10
$serveurtype1 = @{'pagefile' = 'c:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 1'; 'boot' = '\Device\Harddisk2\Partition2'}
$serveurtype2 = @{'pagefile' = 'e:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 2'; 'boot' = '\Device\Harddisk0\Partition2'}
$serveurtype3 = @{'pagefile' = 'c:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 3'; 'boot' = '\Device\Harddisk1\Partition3'}
$serveurtype4 = @{'pagefile' = 'e:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 4'; 'boot' = '\Device\Harddisk1\Partition2'}
$modele=get-wmiobject Win32_ComputerSystem -computername $server -credential $l
$ram=get-WmiObject Win32_LogicalMemoryConfiguration -computername $server -credential $l
$os=gwmi Win32_OperatingSystem -computername $server -credential $l;\"\"
Write-host \"Verification de la conformite du $server\" -foregroundcolor blue -backgroundColor white;\"\"
write-Host \"Serveur HP\"$modele.model[0..13]\"/ Memoire =\"$ram.TotalPhysicalMemory\"Mo / Domaine :\"$modele.domain;\"\"
write-Host \"System\"$os.caption\"/ Service Pack\"$os.ServicePackMajorVersion;\"\"
if ($modele.model -like \"*HP 1600*\"«»)
{$type=$serveurtype1}
if ($modele.model -like \"*HP 3000*\"«»)
{$type=$serveurtype2}
if ($modele.model -like \"*HP 5000*\"«»)
{$type=$serveurtype3}
if ($modele.model -like \"*HP 5500*\"«»)
{$type=$serveurtype4}
if ($a.caption -eq $type.pagefile)
{$point=$point}
else
{write-host \"Emplacement du pagefile non conforme\"
$point=$point-2.5}
$c=gwmi Win32_BIOS -computername $server -credential $l
if ($c.caption -eq $type.bios)
{$point=$point}
else
{write-host \"Version du bios non Conforme\"
$point=$point-2}
$d=gwmi Win32_BootConfiguration -computername $server -credential $l
if ($d.caption -eq $type.boot)
{$point=$point}
else
{write-host \"Fichier Boot.ini mal renseigne\"
$point=$point-2}
foreach ($lettre in get-content c:\lettre.txt)
{$b=@(gwmi Win32_PerfFormattedData_PerfDisk_Logicaldisk -computername $server -credential $l| where {($_.name -eq \"$lettre\"«») -and ($_.percentfreespace -lt \"15\"«»)}).Count
if ($b -ne \"0\"«»)
{write-host \"Espace disque partition $lettre insuffisant\"}
$point=$point-($b/2)};\"\"
if ($point -lt 9)
{Write-host \"Conformite du $server :\"($point*10) \"%\" -foregroundcolor red -backgroundColor white}
else
{Write-host \"Conformite du $server :\"($point*10) \"%\" -foregroundcolor darkgreen -backgroundColor white}}[/code:1]
Et le fichier d'aide :
La pièce jointe powershell_scripting_controle_serveur-1dbfe893ce8ab8ba9a2869bbb6232595.txt est absente ou indisponible
Arnaud, si tu peux faire du ménage :
1 / Dans le code
2 / Sur mon Post précédent
Désolé
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 18 ans 4 mois #1268
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Tester la conformité des serveurs
Je n'ai pas tout regardé dans le code, qui m'a l'air globalement propre, mais j'ai juste relevé un truc plutôt marrant:
[code:1]
if ($a.caption -eq $type.pagefile)
{$point=$point}
else
{write-host \"Emplacement du pagefile non conforme\"
$point=$point-2.5}[/code:1]
Cette structure est répétée plusieurs fois. En gros, le premier test ne sert à rien puisqu'il assigne une variable à elle-même sans aucun autre changement. Il serait donc plus court et plus lisible d'écrire ceci:
[code:1]
if ($a.caption -ne $type.pagefile)
{
write-host \"Emplacement du pagefile non conforme\"
$point = $point - 2.5
}[/code:1]
Note au passage les règles d'écriture que j'essaie d'appliquer à tous mes scripts:
- les accolades sont seules sur leur ligne (sauf pour foreach et where, où l'accolade ouvrante reste sur la même ligne que la commandelette), et le bloc qu'elles encadrent est indenté d'au moins 2 espaces pour que la distinction soit claire.
- si un bloc ne comprend qu'une instruction, on peut mettre les accolades et l'instruction sur une seule ligne mais avec des espaces séparant les accolades de l'instruction.
- les symboles et opérateurs (ici \"=\" et \"-\") sont précédés et suivis d'espaces pour faciliter la lecture.
Ces quelques règles sont totalement facultatives, mais elles permettent d'écrire des scripts tellement plus lisibles (pour les autres mais à commencer pour soi-même) que les adopter relève vite du plaisir.
Janel
[code:1]
if ($a.caption -eq $type.pagefile)
{$point=$point}
else
{write-host \"Emplacement du pagefile non conforme\"
$point=$point-2.5}[/code:1]
Cette structure est répétée plusieurs fois. En gros, le premier test ne sert à rien puisqu'il assigne une variable à elle-même sans aucun autre changement. Il serait donc plus court et plus lisible d'écrire ceci:
[code:1]
if ($a.caption -ne $type.pagefile)
{
write-host \"Emplacement du pagefile non conforme\"
$point = $point - 2.5
}[/code:1]
Note au passage les règles d'écriture que j'essaie d'appliquer à tous mes scripts:
- les accolades sont seules sur leur ligne (sauf pour foreach et where, où l'accolade ouvrante reste sur la même ligne que la commandelette), et le bloc qu'elles encadrent est indenté d'au moins 2 espaces pour que la distinction soit claire.
- si un bloc ne comprend qu'une instruction, on peut mettre les accolades et l'instruction sur une seule ligne mais avec des espaces séparant les accolades de l'instruction.
- les symboles et opérateurs (ici \"=\" et \"-\") sont précédés et suivis d'espaces pour faciliter la lecture.
Ces quelques règles sont totalement facultatives, mais elles permettent d'écrire des scripts tellement plus lisibles (pour les autres mais à commencer pour soi-même) que les adopter relève vite du plaisir.
Janel
Connexion ou Créer un compte pour participer à la conversation.
- TIti
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
il y a 18 ans 4 mois #1270
par TIti
Réponse de TIti sur le sujet Re:Tester la conformité des serveurs
Bonsoir Janel et merci pour ces infos.
Je post demain dans la journée une version \"made in Janel
\"
Arnaud, Robin, le script peut-il faire partie du concours ?
Merci à vous 3
Berurier
Je post demain dans la journée une version \"made in Janel
Arnaud, Robin, le script peut-il faire partie du concours ?
Merci à vous 3
Berurier
Connexion ou Créer un compte pour participer à la conversation.
- TIti
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
il y a 18 ans 4 mois #1277
par TIti
Réponse de TIti sur le sujet Re:Tester la conformité des serveurs
Bonjour à vous
A la sauce Janel, mieux
[code:1]
###
### Nom du script : Conformité-serveurs.ps1
### Nom de l'auteur : Berurier
### Date : 14/11/2007
### Usage : ./Conformité-serveurs.ps1
### -pj \"Intégrée au post\"
### Description : permet de contrôler la conformité des serveurs.
###
clear-host
$l = get-credential
foreach ($server in get-content c:\server.txt)
{$a = gwmi Win32_PageFile -computername $server -credential $l
$point = 10
$serveurtype1 = @{'pagefile' = 'c:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 1'; 'boot' = '\Device\Harddisk2\Partition2'}
$serveurtype2 = @{'pagefile' = 'e:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 2'; 'boot' = '\Device\Harddisk0\Partition2'}
$serveurtype3 = @{'pagefile' = 'c:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 3'; 'boot' = '\Device\Harddisk1\Partition3'}
$serveurtype4 = @{'pagefile' = 'e:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 4'; 'boot' = '\Device\Harddisk1\Partition2'}
$modele = get-wmiobject Win32_ComputerSystem -computername $server -credential $l
$ram = get-WmiObject Win32_LogicalMemoryConfiguration -computername $server -credential $l
$os = gwmi Win32_OperatingSystem -computername $server -credential $l;\"\"
Write-host \"Verification de la conformite du $server\" -foregroundcolor blue -backgroundColor white;\"\"
write-Host \"Serveur HP\"$modele.model[0..13]\"/ Memoire = \"$ram.TotalPhysicalMemory\"Mo / Domaine :\"$modele.domain;\"\"
write-Host \"System\"$os.caption\"/ Service Pack\"$os.ServicePackMajorVersion;\"\"
if ($modele.model -like \"*HP type 1*\"«»)
{ $type = $serveurtype1 }
if ($modele.model -like \"*HP type 2*\"«»)
{ $type = $serveurtype2 }
if ($modele.model -like \"*HP type 3*\"«»)
{ $type = $serveurtype3 }
if ($modele.model -like \"*HP type 4*\"«»)
{ $type = $serveurtype4 }
if ($a.caption -ne $type.pagefile)
{
write-host \"Emplacement du pagefile non conforme\"
$point = $point - 2.5
}
$c = gwmi Win32_BIOS -computername $server -credential $l
if ($c.caption -ne $type.bios)
{
write-host \"Version du bios non Conforme\"
$point = $point - 2
}
$d = gwmi Win32_BootConfiguration -computername $server -credential $l
if ($d.caption -ne $type.boot)
{
write-host \"Fichier Boot.ini mal renseigne\"
$point = $point - 2
}
foreach ($lettre in get-content c:\lettre.txt)
{$b = @(gwmi Win32_PerfFormattedData_PerfDisk_Logicaldisk -computername $server -credential $l| where {($_.name -eq \"$lettre\"«») -and ($_.percentfreespace -lt \"15\"«»)}).Count
if ($b -ne \"0\"«»)
{ write-host \"Espace disque partition $lettre insuffisant\" }
$point = $point-($b/2)};\"\"
if ($point -lt 9)
{ Write-host \"Conformite du $server :\"($point*10) \"%\" -foregroundcolor red -backgroundColor white }
else
{ Write-host \"Conformite du $server :\"($point*10) \"%\" -foregroundcolor darkgreen -backgroundColor white }}[/code:1]
Arnaud, Robin ... pour le concours, je peux
Message édité par: Berurier, à: 19/11/07 13:06<br><br>Message édité par: Berurier, à: 20/11/07 13:03
A la sauce Janel, mieux
[code:1]
###
### Nom du script : Conformité-serveurs.ps1
### Nom de l'auteur : Berurier
### Date : 14/11/2007
### Usage : ./Conformité-serveurs.ps1
### -pj \"Intégrée au post\"
### Description : permet de contrôler la conformité des serveurs.
###
clear-host
$l = get-credential
foreach ($server in get-content c:\server.txt)
{$a = gwmi Win32_PageFile -computername $server -credential $l
$point = 10
$serveurtype1 = @{'pagefile' = 'c:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 1'; 'boot' = '\Device\Harddisk2\Partition2'}
$serveurtype2 = @{'pagefile' = 'e:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 2'; 'boot' = '\Device\Harddisk0\Partition2'}
$serveurtype3 = @{'pagefile' = 'c:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 3'; 'boot' = '\Device\Harddisk1\Partition3'}
$serveurtype4 = @{'pagefile' = 'e:\pagefile.sys'; 'Bios' = 'Phoenix ROM BIOS PLUS Version 4'; 'boot' = '\Device\Harddisk1\Partition2'}
$modele = get-wmiobject Win32_ComputerSystem -computername $server -credential $l
$ram = get-WmiObject Win32_LogicalMemoryConfiguration -computername $server -credential $l
$os = gwmi Win32_OperatingSystem -computername $server -credential $l;\"\"
Write-host \"Verification de la conformite du $server\" -foregroundcolor blue -backgroundColor white;\"\"
write-Host \"Serveur HP\"$modele.model[0..13]\"/ Memoire = \"$ram.TotalPhysicalMemory\"Mo / Domaine :\"$modele.domain;\"\"
write-Host \"System\"$os.caption\"/ Service Pack\"$os.ServicePackMajorVersion;\"\"
if ($modele.model -like \"*HP type 1*\"«»)
{ $type = $serveurtype1 }
if ($modele.model -like \"*HP type 2*\"«»)
{ $type = $serveurtype2 }
if ($modele.model -like \"*HP type 3*\"«»)
{ $type = $serveurtype3 }
if ($modele.model -like \"*HP type 4*\"«»)
{ $type = $serveurtype4 }
if ($a.caption -ne $type.pagefile)
{
write-host \"Emplacement du pagefile non conforme\"
$point = $point - 2.5
}
$c = gwmi Win32_BIOS -computername $server -credential $l
if ($c.caption -ne $type.bios)
{
write-host \"Version du bios non Conforme\"
$point = $point - 2
}
$d = gwmi Win32_BootConfiguration -computername $server -credential $l
if ($d.caption -ne $type.boot)
{
write-host \"Fichier Boot.ini mal renseigne\"
$point = $point - 2
}
foreach ($lettre in get-content c:\lettre.txt)
{$b = @(gwmi Win32_PerfFormattedData_PerfDisk_Logicaldisk -computername $server -credential $l| where {($_.name -eq \"$lettre\"«») -and ($_.percentfreespace -lt \"15\"«»)}).Count
if ($b -ne \"0\"«»)
{ write-host \"Espace disque partition $lettre insuffisant\" }
$point = $point-($b/2)};\"\"
if ($point -lt 9)
{ Write-host \"Conformite du $server :\"($point*10) \"%\" -foregroundcolor red -backgroundColor white }
else
{ Write-host \"Conformite du $server :\"($point*10) \"%\" -foregroundcolor darkgreen -backgroundColor white }}[/code:1]
Arnaud, Robin ... pour le concours, je peux
Message édité par: Berurier, à: 19/11/07 13:06<br><br>Message édité par: Berurier, à: 20/11/07 13:03
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.071 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- [Concours Scripting] Conformité serveurs (validé)