Question Afficher la taille disque disponible à distance

Plus d'informations
il y a 16 ans 9 mois #599 par Jacques Barathon
Alors... Ce script est inspiré de celui qu'Arnaud avait posté dans la bibliothèque de scripts.

Principales différences avec l'original:

* Je prends un nom d'ordinateur en paramètre, ce qui permet d'interroger cet ordinateur. On peut donc concevoir que ce script peut être utilisé tel quel pour parcourir tout un parc d'ordinateurs et retourner la place libre sur l'ensemble des ordinateurs.
* Je retourne avec chaque objet le nom de l'ordinateur, le nom du disque et sa taille disponible, de manière à pouvoir traiter l'information en cas de requête sur plusieurs ordinateurs.
* La sortie est faite sous la forme d'objets normalisés (un sous-ensemble avec select-object de ce que retourne WMI pour Win32_LogicalDisk) dont on peut traiter les résultats à volonté en-dehors du script. Voir les usages fournis à titre d'exemple après le code lui-même...

[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]

Exemples d'usage interrogeant un seul ordinateur:

[code:1]# Commençons par la machine locale:
PS> get-freespace

Système Disque Disponible (Go)


JANEL01 C: 2,1
JANEL01 D: 0


# Continuons avec une machine distante:
PS> get-freespace mce01 -total

Système Disque Disponible (Go)


MCE01 C: 1,8
MCE01 D: 0,6
etc.

Espace Disponible Total sur MCE01: 15,1 Go

# Terminons avec un changement de format:
PS> get-freespace mce01 | format-list

Système : MCE01
Disque : C:
Disponible (Go) : 1,8

Système : MCE01
Disque : D:
Disponible (Go) : 0,6

etc.[/code:1]

Exemples d'usage pour une liste des espaces libres sur l'ensemble d'un parc:

[code:1]# récupération et affichage des espaces libres pour chaque ordinateur listé dans parc.txt:
PS> get-content parc.txt | foreach {get-freespace $_}

Système Disque Disponible (Go)


JANEL01 C: 2,1
JANEL01 D: 0
MCE01 C: 1,8
MCE01 D: 0,6
MCE01 E: 7,3
etc.

# Afficher quelques statistiques sur ce parc...
PS> $parc = get-content parc.txt | foreach {get-freespace $_}
# Commençons par le nombre de disques logiques par ordinateur:
PS> $parc | group système -noelement

Count Name
----
2 JANEL01
9 MCE01
4 MCE02

# Continuons avec la taille libre totale (en Go) pour l'ensemble du parc:
PS> ($parc | measure-object dispo* -sum).sum
38[/code:1]

En résumé, plutôt qu'un script qui peut tout faire et tout afficher selon un format imposé, je préfère travailler à une solution plus ouverte et plus facilement recombinable avec d'autres commandes et scripts PowerShell.

J'ai toujours en chantier un billet sur ce sujet pour mon blog, où je décrirai ce que j'estime être les bonnes pratiques pour une bonne citoyenneté des scripts et fonctions que l'on écrit sous PowerShell. Si je trouve le temps de le faire, je tiendrai ce forum informé.

En espérant que tout cela vous sera utile,
Janel

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

Plus d'informations
il y a 16 ans 9 mois #600 par Jacques Barathon
J'oubliais de préciser: vous avez mon accord pour publier ce script dans la bibliothèque de scripts si vous le jugez utile.

Janel

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

Plus d'informations
il y a 16 ans 9 mois #601 par Robin Lemesle
Merci Janel pour ce script de qualité :)

Robin MVP PowerShell

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

Plus d'informations
il y a 6 ans 4 mois #24679 par clair
Bonjour , je ne comprend pas ce que veut dire le point entre guillemet ainsi que le \"[switch]\" , une âme charitable pour m'expliquer ?(Je débute...)




Cordialement,

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

Plus d'informations
il y a 6 ans 4 mois #24680 par Philippe
salut cyril101
cyril01 écrit:

Bonjour , je ne comprend pas ce que veut dire le point entre guillemet ainsi que le \"[switch]\" , une âme charitable pour m'expliquer ?(Je débute...)

[code:1]param ($computer = \".\", [switch]$total)[/code:1]
c'est en rapport avec les paramètres donné quand tu lance le script
si aucun nom d'ordinateur n'est donné, quand tu lance le script, il met par défaut le point dans $computer

par contre le point dans $computer indique que dans l'instruction suivante il travail avec l'ordinateur local ou s'exécute du code :
[code:1]get-wmiobject -computer $computer win32_logicaldisk[/code:1]

pour le \"[switch]\" dans la ligne param, cela indique une variable switch !
c'est à dire que si tu indique -total dans la ligne qui appel le script, la varaible contiendra $true et les instruction du if seront exécuté

deux exemple :

get-freespace.ps1 -total
affiche l'espace libre des disques locaux plus une ligne avec le total de l'espace libre

Système Disque Disponible (Go)




xxxx C: 1,8
xxxx D: 0,6

Espace Disponible Total sur xxxx: 15,1 Go

xxxx est le nom de l'ordinateur local

get-freespace.ps1 mon_ordi
affiche l'espace libre des disques de l'ordinateur \"mon_ordi\" et c'est tout

Système Disque Disponible (Go)




mon_ordi C: 1,8
mon_ordi D: 0,6

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

Plus d'informations
il y a 6 ans 3 mois #24870 par clair
Bonjour je ne trouve oas comment faire si je veux lister seulement 1 disque que je défini suivant la machine?


Cordialement

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

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