簡體   English   中英

Get-WMIObject無法枚舉增強的Powershell中的Win32_LogicalDiskToPartiion

[英]Get-WMIObject fails to enumerate Win32_LogicalDiskToPartiion in elevated powershell

我有一個非常簡單的Powershell查詢:

Get-WmiObject -query 'ASSOCIATORS OF {Win32_LogicalDisk.DeviceID="C:"} WHERE AssocClass = Win32_LogicalDiskToPartition'

在Windows 7(64位)計算機上,在Powershell中運行此計算機將正確枚舉單個管理對象。 但是,如果我在提升的Powershell中運行相同的查詢,則會停頓很長時間,然后沒有結果。

在嘗試在代碼中執行WMI查詢時,我發現了一個類似的問題(這是我實際上要嘗試執行的操作)-當我的程序在沒有提升的情況下運行時,代碼會起作用,在有提升的情況下運行時,不會返回任何結果。 這是顯示此問題的最簡單的代碼版本:

static void Main(string[] args)
{
    var query = "ASSOCIATORS OF {Win32_LogicalDisk.DeviceID=\"C:\"} WHERE AssocClass = Win32_LogicalDiskToPartition";
    var searcher = new ManagementObjectSearcher(query);
    foreach (var o in searcher.Get())
    {
        Console.WriteLine(o);
    }
    Console.WriteLine("DONE");
    Console.ReadLine();
}

為什么會這樣? 更重要的是,無論如何,我可以確保在提升運行時此查詢將正確執行-因為最終程序由於其他原因將需要提升運行。

我想我找到了罪魁禍首-我有一個使用TrueCrypt安裝的加密驅動器。 當我卸下該驅動器時,枚舉工作正常,再次安裝時,問題再次出現。

我最好的猜測是WMI遇到了問題,因為加密的驅動器沒有分區-盡管在不運行提升驅動器時為什么可以工作完全是另一回事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM