OVH Cloud OVH Cloud

Lister les disques d'une machine distante

3 réponses
Avatar
Romain
Bonjour,


Je cherche une manière simple de pouvoir récupérer, à partir d'un nom de
machine, la liste des disques durs qu'elle contient (Environnement
Full-Windows). J'ai déjà essayé avec la fonction
Win32::NetAdmin::GetServerDisks(), mais ça me renvoit *tous* les
lecteurs fixes (locaux) dont le lecteur de disquette et le lecteur de
cd-rom. Je peux filtrer facilement le lecteur de disquette (lettre A:)
mais pour le lecteur de cd-rom, c'est autre chose. Je ne sais pas à
priori quelle lecteur correspond à quel type de lecteur.


Je n'ai besoin que des lettres des lecteurs. J'utilise ActivePerl 5.8.6.811.


Merci de votre aide,



Cordialement,


;-) Romain.

3 réponses

Avatar
JacK
Avatar
jl_morel
Dans l'article <4239dcd3$0$28898$, "romain19chezfreepointfr" a dit...

Je cherche une manière simple de pouvoir récupérer, à partir d'un nom de
machine, la liste des disques durs qu'elle contient (Environnement
Full-Windows). J'ai déjà essayé avec la fonction
Win32::NetAdmin::GetServerDisks(), mais ça me renvoit *tous* les
lecteurs fixes (locaux) dont le lecteur de disquette et le lecteur de
cd-rom. Je peux filtrer facilement le lecteur de disquette (lettre A:)
mais pour le lecteur de cd-rom, c'est autre chose. Je ne sais pas à
priori quelle lecteur correspond à quel type de lecteur.

Je n'ai besoin que des lettres des lecteurs. J'utilise ActivePerl 5.8.6.811.



La petite fonction suivante utilise WMI pour renvoyer la liste des lettres
des disques durs (MediaType = 12 : Fixed hard disk media) de la machine
dont on lui passe le nom en argument.

Il y a un peu plus d'un an j'ai proposé un petit script 'wmi.pl' qui permet
de voir les possibilités de WMI :

http://groups.google.com/groups?hl=fr&lr=&selm=bumqh1%24voc%241%40news-reader5.wanadoo.fr

(les liens vers la doc M$ sur WMI sont toujours valides)

Essayez-le avec
perl wmi.pl NomDeLaMachineDistante Win32_LogicalDisk *

pour voir toutes les infos disponibles (si vous cherchez les disques durs
c'est peut être pour vérifier l'espace libre..etc. On peut les obtenir avec WMI)

HTH

#!/usr/bin/perl -w
use strict;
use Win32::OLE;

sub HardDisks {
my $wmi = Win32::OLE->GetObject("WinMgmts://$_[0]");
my $Disks = $wmi->ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE MediaType = 12");
return map {$_->{Properties_}->{Caption}->{Value}} Win32::OLE::in($Disks);
}


$, = "n";
print HardDisks( Win32::NodeName() ); # machine locale pour test

__END__

--
J-L.M.

Avatar
romain19
Merci de votre aide, ça fonctionne effectivement très bien en utilisant WMI !

;-) Romain

(Jean-Louis MOREL) wrote in message news:<423aff7b$0$848$...
Dans l'article <4239dcd3$0$28898$, "romain19chezfreepointfr" a dit...

Je cherche une manière simple de pouvoir récupérer, à partir d'un nom de
machine, la liste des disques durs qu'elle contient (Environnement
Full-Windows). J'ai déjà essayé avec la fonction
Win32::NetAdmin::GetServerDisks(), mais ça me renvoit *tous* les
lecteurs fixes (locaux) dont le lecteur de disquette et le lecteur de
cd-rom. Je peux filtrer facilement le lecteur de disquette (lettre A:)
mais pour le lecteur de cd-rom, c'est autre chose. Je ne sais pas à
priori quelle lecteur correspond à quel type de lecteur.

Je n'ai besoin que des lettres des lecteurs. J'utilise ActivePerl 5.8.6.811.



La petite fonction suivante utilise WMI pour renvoyer la liste des lettres
des disques durs (MediaType = 12 : Fixed hard disk media) de la machine
dont on lui passe le nom en argument.

Il y a un peu plus d'un an j'ai proposé un petit script 'wmi.pl' qui permet
de voir les possibilités de WMI :

http://groups.google.com/groups?hl=fr&lr=&selm=bumqh1%24voc%241%40news-reader5.wanadoo.fr

(les liens vers la doc M$ sur WMI sont toujours valides)

Essayez-le avec
perl wmi.pl NomDeLaMachineDistante Win32_LogicalDisk *

pour voir toutes les infos disponibles (si vous cherchez les disques durs
c'est peut être pour vérifier l'espace libre..etc. On peut les obtenir avec WMI)

HTH

#!/usr/bin/perl -w
use strict;
use Win32::OLE;

sub HardDisks {
my $wmi = Win32::OLE->GetObject("WinMgmts://$_[0]");
my $Disks = $wmi->ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE MediaType = 12");
return map {$_->{Properties_}->{Caption}->{Value}} Win32::OLE::in($Disks);
}


$, = "n";
print HardDisks( Win32::NodeName() ); # machine locale pour test

__END__