Informations sur le disque système

Le
Fred
Bonsoir,

Comment puis-je récupérer le numéro de série du disque système au moyen
des classes WMI Win32 ?
Le numéro de série que je cherche est dans Win32_PhysicalMedia mais je
n'arrive pas à faire la jointure avec le système.

PS : par disque système, je veux dire la partition qui héberge
%SystemRoot%

PPS : les classes WMI à utiliser me suffisent. C'est pour le programmer
en .NET
Si je poste ici, c'est que les intervenants y sont beaucoup plus
brillants ;-)

Merci !

--
Fred
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fred
Le #655307
Dans : news:OvWAOK%,
Fred disait :

PS : par disque système, je veux dire la partition qui héberge
%SystemRoot%


Non, le disque dont une partition héberge %SystemRoot% bien sûr

--
Fred

Jean-Claude BELLAMY
Le #655075
"Fred" news:OvWAOK%
Bonsoir,

Comment puis-je récupérer le numéro de série du disque système au moyen
des classes WMI Win32 ?
Le numéro de série que je cherche est dans Win32_PhysicalMedia mais je
n'arrive pas à faire la jointure avec le système.

PS : par disque système, je veux dire la partition qui héberge
%SystemRoot%



Classe "Win32_LogicalDisk", propriété "VolumeSerialNumber"

Je l'utilise dans mon script "AllDisk.vbs"
http://www.bellamyjc.org/fr/vbsdownload.html#alldisks


P.ex (en VBS)
fichier "SerialSystemDisk.vbs"
------------ couper ici ------------
Set shell = WScript.CreateObject("WScript.Shell")
SystemDrive=lcase(shell.ExpandEnvironmentStrings("%SystemDrive%"))
set WMISet = GetObject("winmgmts:{impersonationLevel=impersonate}!//" &
Computer).ExecQuery _
("SELECT * FROM Win32_LogicalDisk")
Win
For each Disk in WMISet
if lcase(Disk.Name)=SystemDrive then
wscript.echo "Disque système = " & Disk.Name & " n°" &
Disk.VolumeSerialNumber
exit for
end if
next
------------ couper ici ------------

ça donne ceci (chez moi)
C:>serialsystemdisk
Disque système = C: n°444CE934

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr

Gilles LAURENT
Le #655074
"Fred" news:OvWAOK%
| Bonsoir,

Bonsoir,

| Comment puis-je récupérer le numéro de série du disque système au
| moyen des classes WMI Win32 ?
| Le numéro de série que je cherche est dans Win32_PhysicalMedia mais je
| n'arrive pas à faire la jointure avec le système.
|
| PS : par disque système, je veux dire la partition qui héberge
| %SystemRoot%

Le numéro de série du disque système :

--- GetBootDiskSerialNumber.vbs ---

Set oSh=CreateObject("WScript.Shell")
sDisk=Split(oSh.ExpandEnvironmentStrings("%systemroot%"),":")(0)
nHD=Asc(sDisk)-Asc("C")
Set oBoot=GetObject("winmgmts:/root/cimv2:" & _
"Win32_PhysicalMedia.Tag='\.PHYSICALDRIVE" & nHD & "'")
WScript.Echo Trim(oBoot.SerialNumber)

--- GetBootDiskSerialNumber.vbs ---

--
Gilles LAURENT
http://glsft.free.fr
Fred
Le #655072
Dans : news:ODuwjV%,
Jean-Claude BELLAMY écrivait :

Classe "Win32_LogicalDisk", propriété "VolumeSerialNumber"


Merci beaucoup. Cette propriété m'avait échappé.

--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)

Fred
Le #655071
Dans : news:%23xPlTI$,
Gilles LAURENT écrivait :


Bonsoir Gilles

nHD=Asc(sDisk)-Asc("C")


Es-tu sûr de cette formule ?
Il me semble m'être une fois retrouvé avec un système sur l'unité G tout
en n'ayant qu'un seul disque physique ?

--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)

Gilles LAURENT
Le #655070
"Fred" news:
| Bonsoir Gilles
|
|| nHD=Asc(sDisk)-Asc("C")
|
| Es-tu sûr de cette formule ?
| Il me semble m'être une fois retrouvé avec un système sur l'unité G
| tout en n'ayant qu'un seul disque physique ?

Tout à fait, c'est une erreur :-(
Je suis actuellement à la recherche d'une solution pour trouver le
serial number du disque physique sur lequel l'os démarre. Le serial
number du disque physique n'est pas identique à celui du volume (classe
Win32_LogicalDisk). J'expérimente ...

--
Gilles LAURENT
http://glsft.free.fr
Fred
Le #655068
Dans : news:%,
Gilles LAURENT disait :

Tout à fait, c'est une erreur :-(
Je suis actuellement à la recherche d'une solution pour trouver le
serial number du disque physique sur lequel l'os démarre.


Le disque de boot peut, je pense, être différent du disque qui contient
%systemroot% ;-)
Il y a beaucoup de petits pièges dans ce problème !

Le serial
number du disque physique n'est pas identique à celui du volume
(classe Win32_LogicalDisk). J'expérimente ...


Tout à fait, je viens de tester la solution de Jean-Claude et j'obtiens
des résultats différents.
Mais je crois que j'ai trouvé le cheminement :

Win32_PhysicalMedia
Win32_DiskDrivePhysicalMedia
Win32_DiskDrive
Win32_DiskDriveToDiskPartition
Win32_DiskPartition
Win32_LogicalDiskToPartition
Win32_LogicalDisk qu'on peut lier facilement à Win32_OperatingSystem en
examinant la propriété WindowsDirectory

Ouf ...

Merci pour ton aide.

--
Fred

Gilles LAURENT
Le #654826
"Fred" news:
| Dans : news:%,
| Gilles LAURENT disait :
|
|| Tout à fait, c'est une erreur :-(
|| Je suis actuellement à la recherche d'une solution pour trouver le
|| serial number du disque physique sur lequel l'os démarre.
|
| Le disque de boot peut, je pense, être différent du disque qui
| contient %systemroot% ;-)
| Il y a beaucoup de petits pièges dans ce problème !
|
|| Le serial
|| number du disque physique n'est pas identique à celui du volume
|| (classe Win32_LogicalDisk). J'expérimente ...
|
| Tout à fait, je viens de tester la solution de Jean-Claude et
| j'obtiens des résultats différents.
| Mais je crois que j'ai trouvé le cheminement :
|
| Win32_PhysicalMedia
| Win32_DiskDrivePhysicalMedia
| Win32_DiskDrive
| Win32_DiskDriveToDiskPartition
| Win32_DiskPartition
| Win32_LogicalDiskToPartition
| Win32_LogicalDisk qu'on peut lier facilement à Win32_OperatingSystem
| en examinant la propriété WindowsDirectory
|
| Ouf ...
|
| Merci pour ton aide.

J'arrive au résultat en jouant avec les classes suivantes :

Lecture des disques physiques
Win32_DiskDrive

Lecture des partitions sur les disques
Win32_DiskDriveToPartition

Lecture des lecteurs logiques sur les partitions
Win32_DiskPartition
Win32_LogicalDiskToPartition
=> stockage du couple SerialNumber(LogicalDisk) = DiskDrive

Lecture du serial number du disque de boot
Win32_PhysicalMedia SerialNumber(%SystemDrive%)

--
Gilles LAURENT
http://glsft.free.fr
Fred
Le #654825
Dans : news:,
Fred disait :

Win32_PhysicalMedia


Et en y repensant, je crois encore qu'il reste un cas que je n'ai pas
envisagé.
Le RAID logiciel ou matériel qui doit associer plusieurs disques
physiques à une partition :-(
J'ai une solution qui me suffit, c'est le principal.


--
Fred

Fred
Le #654824
Dans : news:,
Gilles LAURENT disait :

J'arrive au résultat en jouant avec les classes suivantes :

Lecture des disques physiques
Win32_DiskDrive

Lecture des partitions sur les disques
Win32_DiskDriveToPartition

Lecture des lecteurs logiques sur les partitions
Win32_DiskPartition
Win32_LogicalDiskToPartition
=> stockage du couple SerialNumber(LogicalDisk) = DiskDrive


Oui, c'est ce que j'ai fait grosso modo.
Je mentionnais toutes les tables mais je passe directement de table de
lien en table de lien.

Plus tard, je regarderai si on peut faire une requête. Je ne connais pas
trop WMI sinon au travers de quelques scripts que j'avais adaptés du
temps où je faisais un peu d'administration réseau.

--
Fred

Publicité
Poster une réponse
Anonyme