Question [Concours Scripting] Conformité serveurs (validé)

Plus d'informations
il y a 18 ans 4 mois #1262 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 :P)


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

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

Plus d'informations
il y a 18 ans 4 mois #1263 par Arnaud Petitjean
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

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.

Plus d'informations
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 \&quot;Comment utiliser le .count\&quot; (fermé le 18/09), un fichier permettant de tester la conformité d'une liste de serveurs et d'afficher les points \&quot;non conformes\&quot;
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;\&quot;\&quot;
Write-host \&quot;Verification de la conformite du $server\&quot; -foregroundcolor blue -backgroundColor white;\&quot;\&quot;
write-Host \&quot;Serveur HP\&quot;$modele.model[0..13]\&quot;/ Memoire =\&quot;$ram.TotalPhysicalMemory\&quot;Mo / Domaine :\&quot;$modele.domain;\&quot;\&quot;
write-Host \&quot;System\&quot;$os.caption\&quot;/ Service Pack\&quot;$os.ServicePackMajorVersion;\&quot;\&quot;
if ($modele.model -like \&quot;*HP 1600*\&quot;«»)
{$type=$serveurtype1}
if ($modele.model -like \&quot;*HP 3000*\&quot;«»)
{$type=$serveurtype2}
if ($modele.model -like \&quot;*HP 5000*\&quot;«»)
{$type=$serveurtype3}
if ($modele.model -like \&quot;*HP 5500*\&quot;«»)
{$type=$serveurtype4}
if ($a.caption -eq $type.pagefile)
{$point=$point}
else
{write-host \&quot;Emplacement du pagefile non conforme\&quot;
$point=$point-2.5}
$c=gwmi Win32_BIOS -computername $server -credential $l
if ($c.caption -eq $type.bios)
{$point=$point}
else
{write-host \&quot;Version du bios non Conforme\&quot;
$point=$point-2}
$d=gwmi Win32_BootConfiguration -computername $server -credential $l
if ($d.caption -eq $type.boot)
{$point=$point}
else
{write-host \&quot;Fichier Boot.ini mal renseigne\&quot;
$point=$point-2}
foreach ($lettre in get-content c:\lettre.txt)
{$b=@(gwmi Win32_PerfFormattedData_PerfDisk_Logicaldisk -computername $server -credential $l| where {($_.name -eq \&quot;$lettre\&quot;«») -and ($_.percentfreespace -lt \&quot;15\&quot;«»)}).Count
if ($b -ne \&quot;0\&quot;«»)
{write-host \&quot;Espace disque partition $lettre insuffisant\&quot;}
$point=$point-($b/2)};\&quot;\&quot;
if ($point -lt 9)
{Write-host \&quot;Conformite du $server :\&quot;($point*10) \&quot;%\&quot; -foregroundcolor red -backgroundColor white}
else
{Write-host \&quot;Conformite du $server :\&quot;($point*10) \&quot;%\&quot; -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é ;)

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

Plus d'informations
il y a 18 ans 4 mois #1268 par Jacques Barathon
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 \&quot;Emplacement du pagefile non conforme\&quot;
$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 \&quot;Emplacement du pagefile non conforme\&quot;
$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 \&quot;=\&quot; et \&quot;-\&quot;) 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.

Plus d'informations
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 \&quot;made in Janel ;) \&quot;

Arnaud, Robin, le script peut-il faire partie du concours ?

Merci à vous 3
Berurier

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

Plus d'informations
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 \&quot;Intégrée au post\&quot;
### 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;\&quot;\&quot;
Write-host \&quot;Verification de la conformite du $server\&quot; -foregroundcolor blue -backgroundColor white;\&quot;\&quot;
write-Host \&quot;Serveur HP\&quot;$modele.model[0..13]\&quot;/ Memoire = \&quot;$ram.TotalPhysicalMemory\&quot;Mo / Domaine :\&quot;$modele.domain;\&quot;\&quot;
write-Host \&quot;System\&quot;$os.caption\&quot;/ Service Pack\&quot;$os.ServicePackMajorVersion;\&quot;\&quot;
if ($modele.model -like \&quot;*HP type 1*\&quot;«»)
{ $type = $serveurtype1 }
if ($modele.model -like \&quot;*HP type 2*\&quot;«»)
{ $type = $serveurtype2 }
if ($modele.model -like \&quot;*HP type 3*\&quot;«»)
{ $type = $serveurtype3 }
if ($modele.model -like \&quot;*HP type 4*\&quot;«»)
{ $type = $serveurtype4 }
if ($a.caption -ne $type.pagefile)
{
write-host \&quot;Emplacement du pagefile non conforme\&quot;
$point = $point - 2.5
}
$c = gwmi Win32_BIOS -computername $server -credential $l
if ($c.caption -ne $type.bios)
{
write-host \&quot;Version du bios non Conforme\&quot;
$point = $point - 2
}
$d = gwmi Win32_BootConfiguration -computername $server -credential $l
if ($d.caption -ne $type.boot)
{
write-host \&quot;Fichier Boot.ini mal renseigne\&quot;
$point = $point - 2
}
foreach ($lettre in get-content c:\lettre.txt)
{$b = @(gwmi Win32_PerfFormattedData_PerfDisk_Logicaldisk -computername $server -credential $l| where {($_.name -eq \&quot;$lettre\&quot;«») -and ($_.percentfreespace -lt \&quot;15\&quot;«»)}).Count
if ($b -ne \&quot;0\&quot;«»)
{ write-host \&quot;Espace disque partition $lettre insuffisant\&quot; }
$point = $point-($b/2)};\&quot;\&quot;
if ($point -lt 9)
{ Write-host \&quot;Conformite du $server :\&quot;($point*10) \&quot;%\&quot; -foregroundcolor red -backgroundColor white }
else
{ Write-host \&quot;Conformite du $server :\&quot;($point*10) \&quot;%\&quot; -foregroundcolor darkgreen -backgroundColor white }}[/code:1]

Arnaud, Robin ... pour le concours, je peux :blink:

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.061 secondes
Propulsé par Kunena