Consulta WMI com base na cadeia antecedente

0

Estou tentando mapear Discos Físicos para partições montadas e ainda mais em letras de volume montadas (C: \ é montado na partição 0 do disco 0)

Primeiro, estou usando

 Select * from Win32_DiskDrive

para obter o índice de todas as unidades físicas. Então eu uso

 SELECT Name FROM Win32_DiskPartition WHERE Index = " & objDiskDrive.Index

O nome é algo na forma de Disk #0 Partition #0 . Usando isso eu tento executar uma consulta contra Win32_LogicalDiskToPartition Isso retorna coisas como:

Antecedent: \COMP_NAME\root\cimv2:Win32_DiskPartition.DeviceID="Disk #0, Partition #0"
Dependent: \COMP_NAME\root\cimv2:Win32_LogicalDisk.DeviceID="C:"
EndingAddress: 160039272959
StartingAddress: 1048576

Se eu pudesse consultar a cadeia antecedente e analisar a cadeia dependente, poderia obter meu mapeamento, mas isso não está funcionando. A consulta é inválida. Eu estou tentando executar o seguinte:

   Select * from Win32_LogicalDiskToPartition WHERE Antecedent LIKE '%Disk #0, Partition #0%'
    
por dfasasdasdf 11.04.2014 / 14:32

1 resposta

0

Acredito que você deve usar a expressão ASSOCIATORS OF ( referência ) para obter resultados que você precisa. Então a expressão wql seria:
"ASSOCIATORS OF {Win32_DiskPartition.DeviceID='Disk #0, Partition #0'} WHERE AssocClass = Win32_LogicalDiskToPartition"

Você também pode usar a mesma técnica para obter a (s) partição (ões) primeiro (com a classe assoc Win32_DiskDriveToDiskPartition )

Existe um trecho de código publicado pela Microsoft que faz exatamente o que você precisa (último: 'detectar qual letra de unidade está associada a uma partição de disco lógico', na qual eu baseei minha resposta) link

Espero que isso ajude

    
por 11.04.2014 / 17:15