首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WMI : MSVM_Imagemanagmentservice装载方法未分配驱动器号

WMI : MSVM_Imagemanagmentservice装载方法未分配驱动器号
EN

Stack Overflow用户
提问于 2014-02-03 15:57:44
回答 1查看 409关注 0票数 0

我正在尝试在Windows2012 hyperV核心数据中心版上挂载一个虚拟硬盘。为了挂载虚拟硬盘,我在其中使用了MSVM_Imagemanagementservice类和挂载方法。磁盘已装载,但问题是没有分配驱动器号。我已经在其他2012年的数据中心版本和2012核心上尝试过了,它工作得很好。也就是说,在挂载之后,分配驱动器号。

任何关于这方面的想法都会有所帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-02-03 16:49:04

您可以查询驱动器号列表,然后根据需要分配驱动器号。下面给出的是获取驱动器号列表的函数。

代码语言:javascript
复制
Function GetDriveLetterList(path)

    'Where path is path of VHD

    Dim mountedImage, diskDevice, diskPartition, diskPartitions, logicalPartition, timeout, query
    Dim logicalPartitionList

    timeout = 0
    driveLetterList = ""

    path = Replace(path,"\","\\")

    Set wmiServiceCIM = GetObject("winmgmts:\\.\root\cimv2")  

    Do
        WScript.Sleep(3000)
        timeout = timeout + 3

        Set mountedImage = (wmiService.ExecQuery("SELECT * FROM Msvm_MountedStorageImage WHERE Name='" & path & "'")).ItemIndex(0)

        query = "SELECT * From Win32_DiskDrive WHERE Model='Msft Virtual Disk SCSI Disk Device' and SCSITargetId='" & mountedImage.TargetId & "' and SCSILogicalUnit='" & mountedImage.Lun & "' and SCSIPort='" & mountedImage.PortNumber & "'"
        Set diskDevice = wmiServiceCIM.ExecQuery(query).ItemIndex(0)

        query = "ASSOCIATORS OF {" & diskDevice.Path_.Path & "} where AssocClass=Win32_DiskDriveToDiskPartition"

        Set diskPartitions = wmiServiceCIM.ExecQuery(query)

        For Each diskPartition In diskPartitions

            query = "ASSOCIATORS OF {" & diskPartition.Path_.Path & "} WHERE AssocClass=Win32_LogicalDiskToPartition"
            Set logicalPartitionList = wmiServiceCIM.ExecQuery(query)
            If logicalPartitionList.count > 0 Then
                Set logicalPartition = logicalPartitionList.ItemIndex(0)
                'WScript.Echo logicalPartition.DeviceID
                driveLetterList = driveLetterList + logicalPartition.DeviceID
            End If

        Next
End Function

如果您想要检查系统驱动器。然后你可以这样做..。

代码语言:javascript
复制
folderPath = driveLetter + ":\Windows\System32"

Set fileSys = CreateObject("Scripting.FileSystemObject")
If filesys.FolderExists(folderPath) Then
    //doStuff
End If
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21522237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档