OVH Cloud OVH Cloud

cammande Powershell

6 réponses
Avatar
Robby
Bonjour,

Je decouvre PowerShell car je voudrais par exemple obtenir des infos (espace
utilisé ou libre)
sur l'espace disque du C: d'un PC distant.
Est-ce possible ?
Merci d'avance,
Robby

6 réponses

Avatar
Gilles LAURENT
"Robby" a écrit dans le message de
news:eyAbTa%
| Bonjour,
|
| Je decouvre PowerShell car je voudrais par exemple obtenir des infos
| (espace utilisé ou libre) sur l'espace disque du C: d'un PC distant.
| Est-ce possible ?
| Merci d'avance,
| Robby

PS D:Test> gwmi win32_logicaldisk -filter "DeviceId='C:'" -computer .

Note: Remplacez le point final par le nom de hôte du poste distant

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Gilles LAURENT
"Robby" a écrit dans le message de
news:eyAbTa%
| Bonjour,

Bonjour,

| Je decouvre PowerShell car je voudrais par exemple obtenir des infos
| (espace utilisé ou libre)
| sur l'espace disque du C: d'un PC distant.
| Est-ce possible ?
| Merci d'avance,
| Robby

--- Coupez ici ---

strHost = "."
Set oWmi = GetObject ("winmgmts://" & strHost & "/root/cimv2")
Set colDisks = oWmi.ExecQuery ( _
"select * from Win32_LogicalDisk Where DeviceId='C:'")
For Each oDisk In colDisks
WScript.Echo "DeviceId : " & oDisk.DeviceId
WScript.Echo "FreeSpace : " & oDisk.FreeSpace
WScript.Echo "Size : " & oDisk.Size
Next

--- Coupez ici ---

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Jacques Barathon [MS]
"Gilles LAURENT" wrote in message
news:Oe71y7%
<...>
PS D:Test> gwmi win32_logicaldisk -filter "DeviceId='C:'" -computer .

Note: Remplacez le point final par le nom de hôte du poste distant


Dans le cas où on utilise un filtre WMI pour ne récupérer qu'un objet (ici,
un disque logique), on peut également utiliser cette notation:

PS> [wmi]".rootcimv2:win32_logicaldisk.DeviceId='C:'"

DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 1630093312
Size : 40005267456
VolumeName :

Si on ne veut qu'une valeur particulière (par exemple l'espace libre) on
pourra écrire ceci:

PS> $c = [wmi]".rootcimv2:win32_logicaldisk.DeviceId='C:'"
PS> $c.freespace
1629786112

Petit rappel, on peut utiliser les alias KB, MB et GB quand on manipule des
nombres:

PS> $c.freespace/1MB
1554.28515625

Et pour arrondir le résultat, on peut utiliser la méthode Round() de la
classe [math]:

PS> [math]::round($c.freespace/1MB)
1554

Plus compliqué (mais non :-))... Si on a une liste de PC dans un fichier
texte, on peut énumérer les espaces totaux et libres de toutes leurs
partitions:

get-content liste.txt | foreach {
gwmi win32_logicaldisk -filter "DriveType=3" -computer $_
} | format-table @{l="Nom";e={$_.__Server}},
@{l="Volume";e={$_.DeviceId}},
@{l="Total (Mo)";e={[math]::round($_.Size/1MB)}},
@{l="Libre (Mo)";e={[math]::round($_.FreeSpace/1MB)}} -a

On peut taper tout ça en une seule ligne, ou tout mettre dans un script.
Dans le cas d'un script, on pourra alors remplacer "liste.txt" par "args[0]"
pour passer la liste en argument. L'essentiel du bla-bla est destiné à
travailler le résultat pour qu'il s'affiche sous forme d'une table comme
ceci:

Nom Volume Total (Mo) Libre (Mo)
--- ------ ---------- ----------
JBARATHO02 C: 38152 1555

(utiliser une police à taille fixe pour voir la table ci-dessus correctement
tabulée)

NB. Le filtre "DriveType=3" ne prend que les partitions non-amovibles (si je
ne m'abuse), ce qui permet de ne pas récupérer les lecteurs CD/DVD/etc. On
peut également filtrer sur le volume si on ne veut que les disques C: (voir
exemple initial de Gilles).

Jacques

Avatar
Gilles LAURENT
"Jacques Barathon [MS]" a écrit dans le
message de news:u8tdcU$
| "Gilles LAURENT" wrote in message
| news:Oe71y7%
| <...>
|| PS D:Test> gwmi win32_logicaldisk -filter "DeviceId='C:'" -computer
|| .
||
|| Note: Remplacez le point final par le nom de hôte du poste distant
|
| Dans le cas où on utilise un filtre WMI pour ne récupérer qu'un objet
| (ici, un disque logique), on peut également utiliser cette notation:
|
|| [wmi].rootcimv2:win32_logicaldisk.DeviceId='C:'

Tout à fait. C'est une syntaxe native wmi et donc également valable en
VBScript :

Set oDisk=GetObject
("winmgmts://./root/cimv2:win32_logicaldisk.deviceid='C:'")
WScript.Echo oDisk.Size

| Si on ne veut qu'une valeur particulière (par exemple l'espace libre)
| on pourra écrire ceci:
|
|| $c = [wmi]".rootcimv2:win32_logicaldisk.DeviceId='C:'"
|| $c.freespace
| 1629786112
|
| Petit rappel, on peut utiliser les alias KB, MB et GB quand on
| manipule des nombres:
|
|| $c.freespace/1MB
| 1554.28515625
|
| Et pour arrondir le résultat, on peut utiliser la méthode Round() de
| la classe [math]:
|
|| [math]::round($c.freespace/1MB)
| 1554
|
| Plus compliqué (mais non :-))... Si on a une liste de PC dans un
| fichier texte, on peut énumérer les espaces totaux et libres de
| toutes leurs partitions:
|
| get-content liste.txt | foreach {
| gwmi win32_logicaldisk -filter "DriveType=3" -computer $_
| } | format-table @{l="Nom";e={$_.__Server}},
| @{l="Volume";e={$_.DeviceId}},
| @{l="Total (Mo)";e={[math]::round($_.Size/1MB)}},
| @{l="Libre (Mo)";e={[math]::round($_.FreeSpace/1MB)}} -a
|
| On peut taper tout ça en une seule ligne, ou tout mettre dans un
| script. Dans le cas d'un script, on pourra alors remplacer
| "liste.txt" par "args[0]" pour passer la liste en argument.
| L'essentiel du bla-bla est destiné à travailler le résultat pour
| qu'il s'affiche sous forme d'une table comme ceci:
|
| Nom Volume Total (Mo) Libre (Mo)
| --- ------ ---------- ----------
| JBARATHO02 C: 38152 1555
|
| (utiliser une police à taille fixe pour voir la table ci-dessus
| correctement tabulée)
|
| NB. Le filtre "DriveType=3" ne prend que les partitions non-amovibles
| (si je ne m'abuse), ce qui permet de ne pas récupérer les lecteurs
| CD/DVD/etc. On peut également filtrer sur le volume si on ne veut que
| les disques C: (voir exemple initial de Gilles).
|
| Jacques

Je pense que cela peut faire l'objet d'un nouveau billet :-)

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Robby
Merci beaucoup, ca marche.

"Gilles LAURENT" a écrit dans le message de news:
uJ$
"Jacques Barathon [MS]" a écrit dans le
message de news:u8tdcU$
| "Gilles LAURENT" wrote in message
| news:Oe71y7%
| <...>
|| PS D:Test> gwmi win32_logicaldisk -filter "DeviceId='C:'" -computer
|| .
||
|| Note: Remplacez le point final par le nom de hôte du poste distant
|
| Dans le cas où on utilise un filtre WMI pour ne récupérer qu'un objet
| (ici, un disque logique), on peut également utiliser cette notation:
|
|| [wmi].rootcimv2:win32_logicaldisk.DeviceId='C:'

Tout à fait. C'est une syntaxe native wmi et donc également valable en
VBScript :

Set oDisk=GetObject
("winmgmts://./root/cimv2:win32_logicaldisk.deviceid='C:'")
WScript.Echo oDisk.Size

| Si on ne veut qu'une valeur particulière (par exemple l'espace libre)
| on pourra écrire ceci:
|
|| $c = [wmi]".rootcimv2:win32_logicaldisk.DeviceId='C:'"
|| $c.freespace
| 1629786112
|
| Petit rappel, on peut utiliser les alias KB, MB et GB quand on
| manipule des nombres:
|
|| $c.freespace/1MB
| 1554.28515625
|
| Et pour arrondir le résultat, on peut utiliser la méthode Round() de
| la classe [math]:
|
|| [math]::round($c.freespace/1MB)
| 1554
|
| Plus compliqué (mais non :-))... Si on a une liste de PC dans un
| fichier texte, on peut énumérer les espaces totaux et libres de
| toutes leurs partitions:
|
| get-content liste.txt | foreach {
| gwmi win32_logicaldisk -filter "DriveType=3" -computer $_
| } | format-table @{l="Nom";e={$_.__Server}},
| @{l="Volume";e={$_.DeviceId}},
| @{l="Total (Mo)";e={[math]::round($_.Size/1MB)}},
| @{l="Libre (Mo)";e={[math]::round($_.FreeSpace/1MB)}} -a
|
| On peut taper tout ça en une seule ligne, ou tout mettre dans un
| script. Dans le cas d'un script, on pourra alors remplacer
| "liste.txt" par "args[0]" pour passer la liste en argument.
| L'essentiel du bla-bla est destiné à travailler le résultat pour
| qu'il s'affiche sous forme d'une table comme ceci:
|
| Nom Volume Total (Mo) Libre (Mo)
| --- ------ ---------- ----------
| JBARATHO02 C: 38152 1555
|
| (utiliser une police à taille fixe pour voir la table ci-dessus
| correctement tabulée)
|
| NB. Le filtre "DriveType=3" ne prend que les partitions non-amovibles
| (si je ne m'abuse), ce qui permet de ne pas récupérer les lecteurs
| CD/DVD/etc. On peut également filtrer sur le volume si on ne veut que
| les disques C: (voir exemple initial de Gilles).
|
| Jacques

Je pense que cela peut faire l'objet d'un nouveau billet :-)

--
Gilles LAURENT
http://glsft.free.fr




Avatar
Jacques Barathon [MS]
"Gilles LAURENT" wrote in message
news:uJ$
<...>
Je pense que cela peut faire l'objet d'un nouveau billet :-)


Fait (avec retard) :

http://janel.spaces.live.com/blog/cns!9B5AA3F6FA0088C2!280.entry

Jacques