分享

使用WMI(三)

 quasiceo 2013-12-09

(2013-06-05 10:46:46)

原文地址:使用WMI(三)作者:小桃红

八、WMI的应用

这一节将主要分类举出WMI应用的例子,不过暂时不会涉及WMI事件。

No.1.计算机硬件

1.查看可用的物理内存

你可以使用Win32_OperatingSystem类和FreePhysicalMemory属性.

$strComputer = "."

$objWMIService = ObjGet("winmgmts:" _

& "{impersonationLevel=impersonate}!\" _

& $strComputer& "rootcimv2")

$colSettings = $objWMIService.ExecQuery_

("Select * from Win32_OperatingSystem")

For $objOperatingSystem in$colSettings

ConsoleWrite("可用物理内存: " & _

$objOperatingSystem.FreePhysicalMemory )

Next

2.判断计算机是否有DVD驱动器

使用Win32_CDROMDrive类下的Name或者DeviceID属性。

$strComputer = "."

$objWMIService = ObjGet("winmgmts:" _

& "{impersonationLevel=impersonate}!\" _

& $strComputer& "rootcimv2")

$colItems = $objWMIService.ExecQuery_

("Select * from Win32_CDROMDrive")

For $objItemin $colItems

ConsoleWrite("Device ID: " &$objItem.DeviceID&@CRLF _

& "Description: "& $objItem.Description &@CRLF _

& "Name: "& $objItem.Name &@CRLF&@CRLF)

Next

3.检查系统信息处理器数目

使用Win32_ComputerSystem类下的NumberOfProcessors属性.

$strComputer = "."

$objWMIService = ObjGet("winmgmts:" _

& "{impersonationLevel=impersonate}!\" _

& $strComputer& "rootcimv2")

$colSettings = $objWMIService.ExecQuery_

("Select * from Win32_ComputerSystem")

For $objComputerin $colSettings

ConsoleWrite("System Name: " &$objComputer.Name& @CRLF )

ConsoleWrite("Number of Processors: " & _

$objComputer.NumberOfProcessors )

Next

4.检查PCMCIA接口数量

使用Win32_PCMCIAController类下的Count 属性

$strComputer = "."

$objWMIService = ObjGet("winmgmts:\" & $strComputer & "rootcimv2")

$colItems = $objWMIService.ExecQuery("Select * from Win32_PCMCIAController")

ConsoleWrite("Number of PCMCIA slots: " _

& $colItems.Count)

5.列出没有工作的硬件

你可以使用 Win32_PnPEntity类, 然后通过使用WQL 查询WHERE ConfigManagerErrorCode <> 0 来判断

$strComputer = "."

$objWMIService = ObjGet("winmgmts:\" & $strComputer & "rootcimv2")

$colItems = $objWMIService.ExecQuery_

("Select * from Win32_PnPEntity " _

& "WHERE ConfigManagerErrorCode <> 0")

For $objItemin $colItems

ConsoleWrite("Class GUID: " &$objItem.ClassGuid & @CRLF )

ConsoleWrite("Description: " &$objItem.Description & @CRLF )

ConsoleWrite("Device ID: " &$objItem.DeviceID& @CRLF )

ConsoleWrite("Manufacturer: " &$objItem.Manufacturer & @CRLF )

ConsoleWrite("Name: " & $objItem.Name& @CRLF )

ConsoleWrite("PNP Device ID: " &$objItem.PNPDeviceID & @CRLF )

ConsoleWrite("Service: " & $objItem.Service& @CRLF &@CRLF )

Next

6.列出所有鼠标的信息

使用 Win32_PointingDevice类,这样会列出所有指针设备,而不仅仅是鼠标

.$strComputer = "."

$objWMIService = ObjGet( _

"winmgmts:\" &$strComputer &"rootcimv2")

$colItems = $objWMIService.ExecQuery( _

"Select * from Win32_PointingDevice")

For $objItemin $colItems

ConsoleWrite("Description: " &$objItem.Description & @CRLF )

ConsoleWrite("Device ID: " &$objItem.DeviceID& @CRLF )

ConsoleWrite("Device Interface: " _

& $objItem.DeviceInterface & @CRLF )

ConsoleWrite("Double Speed Threshold: " _

& $objItem.DoubleSpeedThreshold & @CRLF )

ConsoleWrite("Handedness: " &$objItem.Handedness & @CRLF )

ConsoleWrite("Hardware Type: " &$objItem.HardwareType & @CRLF )

ConsoleWrite("INF File Name: " &$objItem.InfFileName & @CRLF )

ConsoleWrite("INF Section: " &$objItem.InfSection & @CRLF )

ConsoleWrite("Manufacturer: " &$objItem.Manufacturer & @CRLF )

ConsoleWrite("Name: " & $objItem.Name& @CRLF )

ConsoleWrite("Number Of Buttons: " _

& $objItem.NumberOfButtons & @CRLF )

ConsoleWrite("PNP Device ID: " &$objItem.PNPDeviceID & @CRLF )

ConsoleWrite("Pointing Type: " &$objItem.PointingType & @CRLF )

ConsoleWrite("Quad Speed Threshold: " _

& $objItem.QuadSpeedThreshold & @CRLF )

ConsoleWrite("Resolution: " &$objItem.Resolution & @CRLF )

ConsoleWrite("Sample Rate: " &$objItem.SampleRate & @CRLF )

ConsoleWrite("Synch: " & $objItem.Synch& @CRLF &@CRLF )

Next

7.判断计算机是台式机还是笔记本

使用 Win32_SystemEnclosure类下的 ChassisType 属性

$strComputer = "."

$objWMIService = ObjGet("winmgmts:" _

& "{impersonationLevel=impersonate}!\" _

& $strComputer& "rootcimv2")

$colChassis = $objWMIService.ExecQuery_

("Select * from Win32_SystemEnclosure")

For $objChassisin $colChassis

For $objItemin $objChassis.ChassisTypes

ConsoleWrite("Chassis Type: " &$objItem & @CRLF )

Next

Next

8.检查USB接口里插入的是什么设备

使用 Win32_USBHub类并检查 Description 属性

$strComputer = "."

$objWMIService = ObjGet("winmgmts:\" & $strComputer & "rootcimv2")

$colItems = $objWMIService.ExecQuery( _

"Select * from Win32_USBHub")

For $objItemin $colItems

ConsoleWrite("Device ID: " &$objItem.DeviceID& @CRLF )

ConsoleWrite("PNP Device ID: " _

& $objItem.PNPDeviceID & @CRLF )

ConsoleWrite("Description: " _

& $objItem.Description & @CRLF & @CRLF)

Next

9.检查系统有多少Tape设备

使用 Win32_TapeDrive类然后使用 Count途径

$strComputer = "."

$objWMIService = ObjGet("winmgmts:" _

& "{impersonationLevel=impersonate}!\" _

& $strComputer& "rootcimv2")

$colItems = $objWMIService.ExecQuery( _

"Select * from Win32_TapeDrive")

ConsoleWrite("Number of tape drives: " _

& $colItems.Count & @CRLF)

No.2.计算机软件

1.卸载软件

如果软件是使用Microsoft Windows Installer (MSI) 安装的话,使用Win32_Product类和 Uninstall途径

$strComputer = "."

$objWMIService = ObjGet("winmgmts:" _

& "{impersonationLevel=impersonate}!\" _

& $strComputer& "rootcimv2")

$colSoftware = $objWMIService.ExecQuery_

("Select * from Win32_Product " _

& "Where Name = 'Personnel database'")

For $objSoftwarein $colSoftware

$objSoftware.Uninstall()

Next

2.列出全部的已安装的软件

如果软件是使用Microsoft Windows Installer (MSI) 安装的话,使用 Win32_Product类

$strComputer = "."

$objWMIService = ObjGet("winmgmts:" _

& "{impersonationLevel=impersonate}!\" _

& $strComputer& "rootcimv2")

$colSoftware = $objWMIService.ExecQuery_

("Select * from Win32_Product")

For $objSoftwarein $colSoftware

ConsoleWrite("Name: " & $objSoftware.Name& @CRLF )

ConsoleWrite("Version: " & $objSoftware.Version& @CRLF &@CRLF )

Next

3.检查用户安装的Microsoft Office的版本

使用 Win32_Product类下的 Version 属性

$strComputer = "."

$objWMIService = ObjGet("winmgmts:" _

& "{impersonationLevel=impersonate}!\" _

& $strComputer& "rootcimv2")

$colSoftware = $objWMIService.ExecQuery("Select * from Win32_Product " & _

"Where IdentifyingNumber =" _

& " '{90280409-6000-11D3-8CFE-0050048383C9}'")

For $objItemin $colSoftware

ConsoleWrite("Name: " & $objItem.Name& @CRLF )

ConsoleWrite("Version: " & $objItem.Version& @CRLF &@CRLF )

Next

No.3.桌面管理

1.判断系统是否启动在安全模式的网络状态下下

使用 Win32_ComputerSystem类并检查 PrimaryOwnerName 属性.

$strComputer = "."

$objWMIService = ObjGet("winmgmts:" _

& "{impersonationLevel=impersonate}!\" _

& $strComputer& "rootcimv2")

$colSettings = $objWMIService.ExecQuery_

("Select * from Win32_ComputerSystem")

For $objComputerin $colSettings

ConsoleWrite("System Name: " _

& $objComputer.Name& @CRLF )

ConsoleWrite("Registered owner: " _

& $objComputer.PrimaryOwnerName& @CRLF )

Next

2.检查屏幕保护是否需要密码

使用 Win32_Desktop类并检查 ScreenSaverSecure 属性.

$strComputer = "."

$objWMIService = ObjGet("winmgmts:\" & $strComputer & "rootcimv2")

$colItems = $objWMIService.ExecQuery("Select * from Win32_Desktop")

For $objItemin $colItems

ConsoleWrite("Screen Saver Secure: " _

& $objItem.ScreenSaverSecure & @CRLF )

Next

3.获取屏幕分辨率

使用 Win32_DesktopMonitor类并检查 ScreenHeight 和 ScreenWidth属性.

$strComputer = "."

$objWMIService = ObjGet("winmgmts:\" & $strComputer & "rootcimv2")

$colItems = $objWMIService.ExecQuery( "Select * from Win32_DesktopMonitor")

For $objItemin $colItems

ConsoleWrite("Screen Height: " _

& $objItem.ScreenHeight & @CRLF )

ConsoleWrite("Screen Width: " _

& $objItem.ScreenWidth & @CRLF )

Next

4.获取系统开机的时间

使用 Win32_OperatingSystem类的 LastBootUpTime 属性.

$strComputer = "."

$objWMIService = ObjGet("winmgmts:" _

& "{impersonationLevel=impersonate}!\" _

& $strComputer& "rootcimv2")

$colOperatingSystems = $objWMIService.ExecQuery_

("Select * from Win32_OperatingSystem")

For $objOSin $colOperatingSystems

ConsoleWrite($objOS.LastBootUpTime)

Next

.5.重启或关闭远程计算机

使用 Win32_OperatingSystem类以及 Win32Shutdown途径

$strComputer = "atl-dc-01"

$objWMIService = ObjGet("winmgmts:" _

& "{impersonationLevel=impersonate,(Shutdown)}!\"& _

$strComputer &"rootcimv2")

$colOperatingSystems = $objWMIService.ExecQuery_

("Select * from Win32_OperatingSystem")

For $objOperatingSystem in$colOperatingSystems

$ObjOperatingSystem.Shutdown(1)

Next

6.检查开机自启动项

使用 Win32_StartupCommand类

$strComputer = "."

$objWMIService = ObjGet("winmgmts:" _

& "{impersonationLevel=impersonate}!\" _

& $strComputer& "rootcimv2")

$colStartupCommands = $objWMIService.ExecQuery_

("Select * from Win32_StartupCommand")

For $objStartupCommand in$colStartupCommands

ConsoleWrite("Command: " & $objStartupCommand.Command& @CRLF _

& "Description: "& $objStartupCommand.Description & @CRLF _

& "Location: "& $objStartupCommand.Location& @CRLF _

& "Name: "& $objStartupCommand.Name& @CRLF _

& "SettingID: "& $objStartupCommand.SettingID& @CRLF _

& "User: "& $objStartupCommand.User& @CRLF &@CRLF )

Next

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多