SELECT * FROM MSISCSIInitiator_TargetClass提供通用失败错误

问题描述 投票:0回答:1

我试图找到我的机器是iscsi存储,但是下面的函数给出了通用故障:

StackTrace = "   at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus 
errorCode)\r\n   at  system.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()\r\n  at     System.Management.ManagementObjectCollection.get_Count()\r\n 

我的代码:

    private string GetISCSInfo(string DeviceID)
    {
        string StorageType = "Local";
        try
        {
            var scope = new ManagementScope("\\\\.\\ROOT\\WMI");
            **SelectQuery query = new SelectQuery("SELECT * FROM MSISCSIInitiator_TargetClass");**

            ManagementObjectSearcher iscsiSearcher = new ManagementObjectSearcher(scope, query);
            ManagementObjectCollection iscsiCollection;
            string iscsiDeviceID = null;

             ***//Get() is calling using validSearch function in this function error is throwing***
            if (validSearch(iscsiSearcher, out iscsiCollection))
            {

                foreach (ManagementObject item in iscsiCollection)
                {
                    if (validField(item, "InitiatorName"))
                    {
                        iscsiDeviceID = item["InitiatorName"].ToString();

                        if (string.Equals(iscsiDeviceID, DeviceID, StringComparison.OrdinalIgnoreCase))
                        {
                            StorageType = "iSCSI";
                        }
                    }
                }
            }
        }
        catch (Exception)
        {
            throw;
        }

        return StorageType;
    }

  //Error getting while count is checking
  public bool validSearch(ManagementObjectSearcher searcher,
                                        out ManagementObjectCollection collection)
    {
        collection = searcher.Get();
        bool result = false;
        try
        {
            if (collection.Count > 0)
            {
                result = true;
            }
        }
        catch (Exception e)
        {
            Trace.TraceWarning("Exception caught while running query: " + e);

            //Invalid
        }
        return result;
    }
c# windows visual-studio-2012 wmi
1个回答
0
投票

我已使用cimv2连接到远程计算机,因此查询我要求如下命令进行wmi连接的哪个条件

var scope = new ManagementScope("\\\\.\\ROOT\\WMI");
SelectQuery query = new SelectQuery("SELECT * FROM MSISCSIInitiator_TargetClass");**

ManagementObjectSearcher iscsiSearcher = new ManagementObjectSearcher(scope, query);

这里再次需要调用scope.connect()

问题已解决。

© www.soinside.com 2019 - 2024. All rights reserved.