Question [résolu] Script Pour Controler l'Espace Disque

Plus d'informations
il y a 16 ans 10 mois #4582 par Eilkh
Bonjour !

Tout d'abord, sachez que je suis un débutant en scripting, un vrai de vrai qui souhaite pourtant mettre les deux pieds dans la cour des grands ! :laugh:

Dans ma société, nous souhaitons mettre en place un script nous permettant de remonter certaines informations sur l'espace de stockage de nos serveurs.

Après une recherche sur ce fabuleux forum (si! si!) j'ai pu mettre la main sur le script de Janel :

[code:1]
# get-freespace.ps1
param ($computer = \".\", [switch]$total)

# récupérer tous les disques logiques de l'ordinateur:
get-wmiobject -computer $computer win32_logicaldisk |
tee-object -variable disques |
select-object @{e={$_.systemname};n=\"Système\"},
@{e={$_.name};n=\"Disque\"},
@{e={[math]::round($_.freespace/1GB,1)};n=\"Disponible (Go)\"}


# afficher l'espace disponible total si demandé:
if ($total) {
\"`nEspace Disponible Total sur $($disques[0].systemname): $([math]::round(($disques|measure-object
freespace -sum).sum/1GB,1)) Go\"
[/code:1]

Ce script remplit à merveille sa fonction première à savoir nous remonter l'espace disque disponible sur tel machine.

Maintenant, j'aimerai le personnaliser afin de remonter en plus les informations suivantes :
- capacité totale par disque en \"Go\"
- et pourquoi pas, soyons fou, l'espace libre en \"%\" en plus de l'affichage en \"Go\"


AFFICHAGE DE LA CAPACITÉ TOTALE DES DISQUES

En ajoutant la ligne en gras et en rouge ci-dessous, j'arrive à afficher une nouvelle colonne indiquant la capacité totale par disque en GB mais sans limitation de décimale :

[code:1]@{e={$_.size/1GB};n=\"Capacité\"},[/code:1]

Résultat :

[code:1]PS C:\Script> .\get-freespace.ps1

Système Disque Capacité Disponible (Go)



SERVEUR A C: 74,4053573608398 27,6
SERVEUR A D: 0 0
SERVEUR A E: 465,75927734375 351,27
SERVEUR A F: 465,75927734375 150,19[/code:1]

Que dois-je mettre comme option pour obtenir un arrondit à 1 ou 2 décimale(s) à la colonne \"Capacité\" car lorsque je modifie la ligne :

[code:1]@{e={$_.size/1GB};n=\"Capacité\"},[/code:1]

par :

[code:1]@{e={$_.size/1GB,1};n=\"Capacité\"},[/code:1]

j'obtiens le beau message d'erreur suivant à la place de ce qui devrait se trouvé dans la colonne \"Capacité\" :

[code:1]Select-Object : L'opération « [System.UInt64] / [System.Object[]] » n'est pas définie.
Au niveau de C:\Script\get-freespace.ps1 : 7 Caractère : 14
+ select-object <<<< @{e={$_.systemname};n=\"Système\"},[/code:1]

Pouvez-vous m'aider ?

AFFICHAGE DE L'ESPACE LIBRE EN POURCENTAGE

Message édité par: Eilkh, à: 27/04/09 16:36

En fouillant un peu plus loin sur le site, j'ai pu mettre la main sur cette page où Arnaud PETITJEAN a mis à jour le script de Janel afin d'afficher l'espace disque restant en pourcentage tout en précisant au script de ne pas prendre en compte les lecteurs de disquette et autres cdrom !

Merci Arnaud ! :woohoo:

Message édité par: Eilkh, à: 27/04/09 17:09<br><br>Message édité par: Eilkh, à: 28/04/09 14:14

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

Plus d'informations
il y a 16 ans 10 mois #4585 par Eilkh
Bon, je me permet de me répondre à moi même car j'ai finalement trouver la réponse à ma question.

Comme on dit, la nuit porte conseil ! :laugh:

En fait, il suffisait bêtement de mettre :

[code:1]@{e={[math]::round($_.size/1GB,2)};n=\&quot;Capacité (Go)\&quot;},[/code:1]

Pour finir, voici donc le script modifier dans sa totalité (je me suis permis de retirer la seconde partie du script qui ne nous servira pas) :

[code:1]
# get-freespace.ps1
param ($computer = \&quot;.\&quot;«»)
# récupérer tous les disques logiques de l'ordinateur:
get-wmiobject -credential domain\administrator -computer $computer win32_logicaldisk | where {$_.drivetype -eq 3} | tee-object -variable disques |
select-object @{e={$_.systemname};n=\&quot;Système\&quot;},
@{e={$_.name};n=\&quot;Disque\&quot;},
@{e={[math]::round($_.size/1GB,2)};n=\&quot;Capacité (Go)\&quot;},
@{e={[math]::round($_.freespace/1GB,1)};n=\&quot;Disponible (Go)\&quot;}
@{e={[math]::round(([int64]$_.freespace/[int64]$_.size*100),0)};n=\&quot;(%)\&quot;}[/code:1]

Vous l'aurez sans doute remarqué, j'ai ajouté une commande pour que le script se lance sous le compte administrateur du domaine. Au lancement du script, nous serons invité à taper le mot de passe du compte administrateur.

Le script retournera uniquement les informations des disques durs, écartant ainsi les lecteurs de disquettes, cdrom et autres mappages réseau.

Voici le résultat :

[code:1]&gt;PS C:\Script&gt; .\get-freespace.ps1 SERVEUR_A | format-table -autosize

Système Volume Capacité (Go) Disponible (Go) (%)



---
SERVEUR_A C: 11,99 8,55 71
SERVEUR_A D: 32 13,47 42[/code:1]

PowerShell c'est magique ! :woohoo:<br><br>Message édité par: Eilkh, à: 28/04/09 14:13

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

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