synaspe 发表于 2017-7-10 14:35:28

利用wmi参照网上的代码怎么都不成功?【已解决】

本帖最后由 synaspe 于 2017-7-11 12:19 编辑

$test=" "
$objWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
$objItems = $objWMI.ExecQuery("Select * from Win32_volume where DeviceID = '\\?\Volume{d8e9e3c7-3606-11e7-9fb1-806e6f6e6963}\'")
For $objabc In $objItems
$test = $objabc.DriveLetter
Next
MsgBox("","",$test)
用drive letter 查 deviceid是正常的

但是用deviceid查drive letter怎么尝试都是输出空白?有大神帮忙看下嘛?

yamakawa 发表于 2017-7-10 17:08:22

回复 1# synaspe


    因为你电脑中的标识符不一定是 “d8e9e3c7-3606-11e7-9fb1-806e6f6e6963”

synaspe 发表于 2017-7-10 17:16:40

回复 2# yamakawa
我自己先查过我电脑中的deviceid了这个就是我d盘的deviceid 但是不知道为什么显示的是空白,
你可以先在cmd里中运行下面这条命令查看下你自己的ID、然后帮我测试下 我这个运行就是空白什么都不显示
wmic volume get id,"drive letter"

yamakawa 发表于 2017-7-11 11:55:37

回复 1# synaspe


    对wmi不熟,,我测试了也是空白。。。

$objItems = $objWMI.ExecQuery("Select * from Win32_volume")
For $objabc In $objItems
IF $objabc.DeviceID = "xxxxxx" then $test = $objabc.DriveLetter
Next

这样可以。。

synaspe 发表于 2017-7-11 12:17:57

回复 4# yamakawa

测试下了你的方法可以,多谢兄弟了{:face (356):}
页: [1]
查看完整版本: 利用wmi参照网上的代码怎么都不成功?【已解决】