Articles of WMI

Get-Process不适用于远程Windows 7客户端

我一直在试图对远程计算机运行Microsoft的GetNetworkStatistics脚本 ,以使我们能够跟踪哪些进程正在使用带宽以及其他工具。 我无法对远程Windows 7客户端运行脚本。 在远程和本地运行Windows Server 2012 R2计算机时,它工作正常。 在Windows 7计算机上本地运行时也可以正常工作。 我已经在Windows 7客户端上运行了Enable-PSRemoting,并且允许在Windows防火墙中使用Windows远程pipe理和Windows Management Instrumentation。 这是我在远程Windows 7计算机上运行时遇到的错误 WARNING: Could not run Get-Process -computername win7. Verify permissions and connectivity. Defaulting to no ShowProcessNames 'C:\netstat.txt' on win7 converted to '\\win7\C$\netstat.txt'. This path is not accessible from your system. At C:\Users\user\Desktop\Get-NetworkStatistics.ps1:200 char:25 + Throw "'$tempFile' on $computername converted to […]

使用WMI来检测已连接的USB驱动器,无论它是否已安装?

我正在编写一个脚本,使用MS KB 823732来暂时阻止用户插入新的USB存储设备。 这工作正常,和HKLM\…\Services\UsbStorregistry项成功阻止新连接的设备被访问。 是否有一个WMI事件会告诉我,一个驱动器已连接 ,无论它是否被安装? 我试着查询__InstanceCreationEvent但显然只有在驱动器被安装并可用后才会产生,这不符合我的要求。

如何让WMI在启用RAID的Dell Poweredge服务器中的物理磁盘上返回信息?

我正在使用WMI来收集我们的一些服务器上的统计信息,并试图获取每台服务器中安装的物理磁盘的详细信息。 这些服务器是各种Dell PowerEdge型号。 Windows的内置提供程序正在报告RAID卷和逻辑分区,但是我找不到任何方式来报告服务器中安装的实际物理驱动器是什么(可能是因为Windows只能看到RAID卷由控制器呈现,并且没有关于在该层下面发生什么的信息) 有没有可以为此安装的Dell RAID WMI提供程序,或者我可以做些什么来收集这些统计信息?

WMI权限:selectCommandLine,ProcessId FROM Win32_Process不返回CommandLine的数据

我正在通过WMI收集性能数据,并希望避免为此使用Administrators组中的帐户。 目标计算机正在运行带有最新SP /更新的Windows Server 2003。 我已经完成了我认为是允许我们的用户访问WMI的适当configuration(类似于这里描述的: http : //msdn.microsoft.com/en-us/library/aa393266.aspx )。 以下是遵循的具体步骤: 打开pipe理工具 – >计算机pipe理:在计算机pipe理(本地)下展开服务和应用程序,右键单击WMI控制并select属性。 在“安全性”选项卡中,展开“根”,突出显示“CIMV2”,单击“安全性”(靠近窗口底部)。 添加性能监视器用户并启用选项:启用帐户和远程启用。 打开pipe理工具 – >组件服务:在控制台根目录下转到组件服务 – >计算机 – >右键单击我的电脑,select属性,selectCOM安全选项卡,在“访问权限”中点击“编辑默认”select(或者添加,然后select)“性能监视器用户”组,并允许本地访问和远程访问,然后单击确定。 在“启动和激活权限”中单击“编辑默认值”select(或添加,然后select)“性能监视器用户”组,并允许本地和远程启动和激活权限。 打开pipe理工具 – >组件服务:在控制台根目录下,进入组件服务 – >计算机 – >我的电脑 – > DCOMconfiguration – >突出显示“Windows Management and Instrumentation”右键,select属性,selectSecurity选项卡,在“Launch and激活权限“select自定义,然后单击编辑,添加”性能用户组“,并允许本地和远程的远程启动和远程激活权限。 我能够通过WMI Explorer远程连接,但是当我执行这个查询时: Select CommandLine, ProcessId FROM Win32_Process 我得到一个有效的结果,但每行都有一个空的CommandLine。 如果我将用户添加到pipe理员组并重新运行查询,CommandLine列包含预期的数据。 似乎有一个许可我失踪的地方,但我没有太多的运气跟踪下来。 提前谢谢了。

vbscript / ASP代码中的WMI模拟级别

我有一个运行“经典”ASP代码(而不是ASP.NET)的IIS 7.5网站,其中站点在正常的服务上下文中运行,只启用“Windows身份validation”。 用户和浏览网站没有任何问题,无论在IIS主机上是否具有隐式pipe理权限(大多数都不)。 但是,当我尝试在ASP代码中执行常见的Win32_PingStatus请求时,它将失败,除非用户在IIS主机上具有pipe理权限。 这是我的代码… On Error Resume Next asset = "Computer123" pingtest = False query = "Select StatusCode, Address FROM Win32_PingStatus " & _ "WHERE Address=" & Chr(34) & asset & Chr(34) Set colPingStatus = GetObject("winmgmts:" &_ "{impersonationLevel=impersonate}//./root/cimv2").ExecQuery(query) If err.Number <> 0 Then Response.Write "Access Denied (error: " & err.Number & " / " […]

如何从Windows上的iSCSI详细信息中获取物理分区名称?

我有一个需要\Device\Harddisk2\Partition1风格的分区名称的软件,如WinObj中所示。 我想从分区底层的iSCSI连接的详细信息中获取这个分区名称。 麻烦的是,磁盘顺序不固定 – 取决于什么设备连接和按什么顺序初始化,它可以四处移动。 因此,假设我有门户名称(iSCSI目标的DNS),目标IQN等。我想以某种方式自动地发现系统中哪些卷与之相关。 我可以编写一些PowerShell WMI查询,它们有点接近所需的信息: PS> get-wmiobject -class Win32_DiskPartition NumberOfBlocks : 204800 BootPartition : True Name : Disk #0, Partition #0 PrimaryPartition : True Size : 104857600 Index : 0 … 从这里的Name ,我想我可以通过加1分区编号来制造相应的名称: \Device\Harddisk0\Partition1 – Partition0似乎是一个虚拟的分区映射到整个磁盘。 但是上面没有足够的信息来映射到底层的物理设备,除非我根据精确的尺寸匹配进行猜测。 我可以在SCSI设备上获得一些信息,但是这对于join东西没有帮助(iSCSI目标是Nexenta / Solaris COMSTAR): PS> get-wmiobject -class Win32_SCSIControllerDevice __GENUS : 2 __CLASS : Win32_SCSIControllerDevice … […]

列出所有使用Powershell的打印机

我遇到的问题列出了使用Powershell的计算机上的所有打印机。 我们有一个批处理脚本,使用PrintUI添加/删除/列出“每台计算机”打印机。 我可以使用PrintUI列出打印机。 rundll32 printui.dll,PrintUIEntry /ge /c"%UNC-NAME%" 这将列出每个电脑打印机,而… Get-WMIObject -Class Win32_Printer -ComputerName $ComputerName 将列出WMI中的所有打印机。 在上面的例子中,我有一个有3台打印机的系统,当用户login的时候,WMI看到其中的2个,PrintUI看到的是1。 我很惊讶我怎么能列出他们! 这样我可以脚本审计/添加/删除“每台计算机”和“本地”打印机

在Windows上通过批处理命令禁用特定的以太网卡

我想要做的是禁用基于连接名称的网卡(又名:你在“networking连接”窗口中看到的,或者你将使用netsh命令)。 我知道启用/禁用可以使用devcon完成,但devcon使用物理NIC的硬件ID(例如: PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\4&282B82B8&0&08F0 )来PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\4&282B82B8&0&08F0 ,而不是与其关联的连接的名称(例如:“本地连接2" )。 所以基本上我需要将连接名称映射到设备的硬件ID,如下所示: devcon listclass Net 然后禁用可以通过devcon完成。 任何想法如何做到这一点? 任何更聪明/更简单的方法呢?

什么是WMI类来pipe理BitLockerToGo

我正在研究将用于审计某些机器的脚本。 我可以使用root \ cimv2 \ Security \ EncryptableVolume中的Win32_EncryptableVolume类来检查卷是否被encryption。 我可以在BitLockerToGo上查询哪些信息? (encryption可移动驱动器) 如何检查在计算机上执行的BitlockerToGo设置?

如何从事件日志中报告的卷名识别WMI中的卷?

我有一个Windows 2008R2服务器报告以下错误: 磁盘上的文件系统结构已损坏且无法使用。 请在卷\ Device \ HarddiskVolume2上运行chkdsk实用程序。 使用Powershell和WMI如何在查询Win32_Volume时识别这是哪个卷。 例如,如果我这样做: Get-WmiObject Win32_Volume 我得到了服务器上所有卷的列表,但是没有一个Win32_Volume类属性使用(显示为)这个“友好的”名称 – \Device\HarddiskVolume2 。 我可以看到有一个DeviceID属性返回一个像这样的值: DeviceID : \\?\Volume{4bc3df2a-65c7-11e0-9c33-806e6f6e6963}\ 还有一个Name属性,但这只是分配给该卷的驱动器号。 没有其他属性的值与事件日志中报告的内容类似。 我知道我可以parsing来自fltmc volumes或DISKPART的输出以获取此信息,但是必须有一种方法可以在PowerShell脚本中使用WMI获取此信息。 我还查看了Win32_DiskDrive , Win32_DiskPartition和Win32_LogicalDisk类,但没有提及类似\Device\HarddiskVolume2的属性值。