Powershell et wmi, comment à la carte logique de disques/volumes sur un disque dur ou vice-versa?
Get-WmiObject -ComputerName $ip -Credential $credential -Class Win32_logicaldisk
Cela me met des disques que je les vois dans "Mon ordinateur", par exemple. C:, D:, E:
Maintenant, comment je reçois correspondant disques physiques sous-jacents ?
Si je exécuter la commande suivante
Get-WmiObject -ComputerName $ip -Credential $credential -Class win32_diskdrive
- Je obtenir le disque 0, disque 1, disque 2
Alors comment savoir qui de disque logique sur le disque physique qui ?
Une autre question est de savoir comment trouver le numéro de volume ? Si je lance la commande diskpart et exécute "list volume", j'obtiens le résultat suivant
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 2 C NTFS Partition 59 GB Healthy Boot
...
Comment puis-je savoir que la logique du disque C: est le Volume 2 ?
cordialement, Primoz.
OriginalL'auteur Primoz | 2011-01-27
Vous devez vous connecter pour publier un commentaire.
Essayer cette
Cela vous donne les instances de WIn32_logicalDisk où Win32_LogicalDisk est dépendante de l'entité dans la relation. Ainsi, vous obtenez le Win32_DiskDrive instances.
OriginalL'auteur ravikanth
Voici un script que j'ai créé à la liste des disques logiques, la partition et le décalage de la partition pour vérifier l'alignement de disque problèmes. (source: mon blog http://sev17.com/2009/02/disk-alignment-partitioning-the-good-the-bad-the-ok-and-the-not-so-ugly/)
OriginalL'auteur Chad Miller
Autres réponses avec WMI relation est bonne si vous n'avez pas de soins sur le point de montage de volume car il n'est pas possible avec WMI directement à associer le point de montage de volume avec une partition ou un disque.
Mais il y a une clé de registre qui peut vous aider à comprendre quelques informations qui vous permettront d'établir la connexion en tant que windows n' :
Ce code devrait donner en retour vous chaque signature d'une table de hachage avec le lecteur de disque de la signature du disque qui sont associées avec le mountedDevice. Il renvoie également DiskPartitionStartingOffset que sera la même que la partition.StartingOffset associés à la mountedDevice.
Si vous voulez écrire le code vous-même, les 4 premiers octets de ce registre SYSTEM\MountedDevices valeur sont le lecteur de disque signature mais attention les little-endian. Les 8 octets sont les PartitionStartingOffset.
Avec cette information, vous pouvez utiliser WMI pour obtenir de lecteur de disque de l'information et de brancher le tout pour vraiment obtenir tout le volume relatif à tous les lecteurs physiques, vous avez indépendamment de la façon dont ils sont montés.
Cela ne marche pas pour un volume fractionné.
Être très prudent lors de la lecture dans ce genre de registre.
function
) destiné à faire partie d'un autre script/fonction, parce qu'il y a unreturn
déclaration.Vous êtes de droite. J'ai édité pour mettre un résumé de la code que j'ai utilisé maintenant. Je ne peux pas le mettre parce que c'est un 900 lignes de code destiné à être exécuté sur un ordinateur distant exécutant divers système d'exploitation windows. Les bits du convertisseur de partie est très importante car la version précédente, pouvait ne pas convertir correctement.
OriginalL'auteur Alex
Vérifier Win32_LogicalDisktoPartition Que de vous donner une carte de la de disque logique pour la physique de disque et de partition sur ce disque dans l'Antécédent. Juste obtenir le label pour chaque lecteur de disque
OriginalL'auteur mjolinor
ici est une autre alternative en utilisant le noyau. Microsoft conseille contre il, mais il a montré pour être très efficace dans le piégeage volume fractionné, le point de montage et autres type de volume de l'information pour aider à associer le disque et le volume.
vous pouvez l'appeler avec :
Il doit être exécuté sur la machine distante, vous voulez de l'information avec un compte administrateur.
OriginalL'auteur Alex
Ici est le Tchad, Miller répondre modifié pour fonctionner avec PowerShell de Base et avec les guillemets et les apostrophes, de sorte qu'il fonctionne en fait sur Linux/Windows et indépendamment de la durée (c'est à dire, UTF-8 ou pas):
OriginalL'auteur Michael Goldshteyn