我正在 Windows 7 信息亭上配置本地应用程序用户(BUILTIN\Users 的一部分)。自助服务终端有一个在虚拟 COM 端口上运行的特殊USB 设备。用户需要权限读取WMI类,MSSerial_PortName在root\WMI命名空间中,找到了COM端口。在 PowerShell 中(我用它来验证配置)
PS> Get-WmiObject -namespace 'root\WMI' -class 'MSSerial_PortName'
Run Code Online (Sandbox Code Playgroud)
并通过常规的 .NET 代码(这就是应用程序的编写方式)
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSSerial_PortName");
Run Code Online (Sandbox Code Playgroud)
除非以管理员身份或提升的会话身份运行,否则我会收到“访问被拒绝”错误。我已经阅读了大量有关类似访问问题的问答,但大多数人似乎建议以管理员身份运行。这不是此用户/信息亭/配置的选项。而且,目前,我无法使用设备供应商提供的托管包装器。
我在 Microsoft 管理控制台中运行,加载 WMI 控件,并修改了属性 | 安全 | 命名空间:根\WMI。我将用户组设置为与管理员组具有相同的权限。但这不起作用(我只是猜测)。
我找不到任何的MSDN文档MSSerial_PortName 的MSSerial命名空间“基地”类或其他相关的类(这所建议的文章)。而且我对 WMI 安全性一无所知。
我只需要将 GPO 应用于特定网络范围内的某些计算机。
我知道这个问题还有很多其他的解决方案。我可以将它们分组到一个 OU 中或使用站点。但是目前的情况不允许我以任何其他方式进行操作,除非确定客户端的 IP 地址是否在特定网络中。
因此,我假设我可以使用 WMI 过滤器,并向我的好朋友 Google 寻求帮助:我找到了http://waynes-world-it.blogspot.ch/2008/03/wmi-filter-for-subnet-filtered-group .html但是
Select * FROM Win32_IP4RouteTable
WHERE ((Mask='255.255.255.255' AND NextHop='127.0.0.1')
AND (Destination Like '10.31.%'))
Run Code Online (Sandbox Code Playgroud)
似乎不起作用。由于过滤器,该策略不适用于任何计算机。谁能给我提示如何解决这个问题?
非常感谢
我整理了一个 GPO 以将 MSI 文件部署到由计算机对象组成的安全组。在重新启动测试工作站以获取其组成员身份并运行 gpupdate 后,我然后运行 gpresult /r 并且我看到它正在获取用于软件安装的 GPO。重新启动后,软件不会安装。我们的防病毒软件 (SEP Cloud) 阻止了所有工作站的 WMI,我怀疑这就是问题所在。有谁知道组策略是否需要 WMI 来部署软件?如果是这样,我将编写一个 VBS 脚本来执行此操作。
我目前正在调查一个问题,我们怀疑过多的传出连接导致端口耗尽是一个因素。我希望能够确定服务器何时处于或接近端口耗尽,并且似乎应该有一些 wmi 计数器来指示这一点,尽管我不知道是哪个
提前致谢。
我想知道如何使用 WMIC 连接到远程主机并将其 PC 的操作系统信息(已安装程序列表)输出到文件。
我试过
wmic /node: <IP address> OS get vendor, name > c:\output.txt
Run Code Online (Sandbox Code Playgroud)
但我有错误 "Node - <IP> Error: Description = Invalid query"
但实际上,我认为我需要成为域管理员才能获得许可。所以我试过了
wmic /node: <IP> /domain: <domain.inc> /user:administrator /password:<password> OS get vendor, name > c:\output.txt
Run Code Online (Sandbox Code Playgroud)
我有错误: Invalid Global switch.
我想通过使用 WMIC 获取所有 PC 的操作系统信息(已安装的程序列表)。(我认为我需要与域管理员一起访问,因为所有 PC 都加入了域)并且我是管理员
请帮我 ?____?啊,当我只用我的电脑尝试时似乎没问题。
WMIC /output:C:\%computername%.txt product get name, vendor, version
Run Code Online (Sandbox Code Playgroud)
WMIC OS 获取名称、供应商、版本 >> C:\%computername%.txt
如果我像上面那样,就可以获取 txt 文件。但我想远程所有PC并获取信息文件...@_@~~~~
还有一个问题>>它与安全策略或组策略有关吗?或防火墙的东西..........@_@;;
我想从 WMI 命名空间的顶部开始,递归遍历所有对象,然后递归遍历每个对象的属性列表,过滤掉那些名称中包含mem 的属性并将其返回到控制台。
这是我到目前为止:
gwmi -namespace "root\cimv2" -list |???? |get-Member -MemberType property | Where-Object { $_.name -match 'mem'}
Run Code Online (Sandbox Code Playgroud)
注意大|???? 在中间那里。如果我删除它,该命令似乎可以运行,但无法找到我知道应该找到的属性。为什么?我认为这是因为我从以下两个命令中得到了不同的输出:
gwmi "Win32_operatingSystem" |get-Member -MemberType property (73 lines of output)
gwmi -namespace "root\cimv2" -list |where-object { $_.Name -eq 'Win32_OperatingSystem' } |get-Member -MemberType property (10 lines of output)
Run Code Online (Sandbox Code Playgroud)
我想要的是递归连接这个过程的单行:
gwmi -namespace "root\cimv2" -list
(manual selection of a WMI class from the list of 1000+ which appear)
gwmi "win32_OperatingSystem" | get-Member -MemberType property | Where-Object { …Run Code Online (Sandbox Code Playgroud) 从各种文档看来,要更改 WMI 访问权限,您需要使用 WMI 来访问正在运行的服务并修改树的特定部分。
使用 UI 更改 150,000 台主机有点烦人。
然后必须在添加新主机的过程中包含此类更改。
可以编写一个脚本来做同样的事情,但这需要要么连接到所有这些机器,要么在启动/安装脚本中分发以供以后更新。然后你必须从示例访问控制中复制二进制 SD 数据。
我还发现您可以更改 wbem/*.mof 文件以包含 SDDL,但我目前对这一切如何工作真的很模糊。
我是否只是错过了一些简单的管理?
看起来这应该很容易,但我没有找到任何关于如何通过 WMI、Powershell 或其他可以相对快速地查询大量机器的方法远程识别 Windows Server“核心”安装的信息。我试图报告我们运行核心与完整安装的服务器的百分比。有任何想法吗?
windows powershell windows-server-2008 wmi windows-server-2008-r2
我正在我的 64 位 Web 服务器上执行监控任务,该服务器有几个以 32 位模式运行的应用程序池。我在 perfmon 中使用 .Net CLR Memory 对象来监视它们。但是,我的性能监视器显示 0,除了 GC 句柄和正在使用的接收器块数之外的所有内容。其余的应用程序池工作正常。在以完全相同的方式配置的另一台服务器(在 64 位 IIS 上运行的 32 位应用程序池)上,WMI 甚至不会枚举我的所有 w3wp 实例。
有没有人对这些问题有任何想法?或者是否有工具可以监控在 64 位平台上运行的 32 位应用程序池,而不是使用内置的性能监控器?
另外,在 WMI 没有枚举所有 w3wp 实例的服务器上,我们在事件日志中有以下三个错误消息。
“ASP”服务的性能库“C:\WINDOWS\system32\aspperf.dll”的配置信息与存储在注册表中的可信性能库信息不匹配。该库中的函数不会被视为受信任的。(事件 ID 2003,源 Perflib)
“W3SVC”服务的性能库“C:\WINDOWS\system32\inetsrv\w3ctrs.dll”的配置信息与存储在注册表中的可信性能库信息不匹配。此库中的函数不会被视为受信任的。(事件 ID 2003,源 Perflib)
“InetInfo”服务的性能库“C:\WINDOWS\system32\infoctrs.dll”的配置信息与存储在注册表中的可信性能库信息不匹配。此库中的函数不会被视为受信任的。(事件 ID 2003,源 Perflib)
由于“ASP.NET_2.0.50727”服务的性能计数器库为该服务生成了一个或多个错误,因此该会话已禁用该服务的性能计数器数据收集。强制执行此操作的错误已写入应用程序事件日志。(事件 ID 1018,源 Perflib)
这些错误可能与我的问题有关。即使我在 wbem 目录中重新注册所有 .dll 文件,它仍然出现。有谁知道这些错误消息的含义以及如何修复它们?
另外对于.Net CLR Memory 对象中第一个值为0 的服务器,事件日志中没有错误消息。
iis windows-server-2003 monitoring performance-monitoring wmi
我正在尝试将卷(从win32_volume那些 where 中枚举的DriveType = 3)关联回win32_physicaldisk实例。我在研究中看到的一切都表明答案是“这是不可能的”,但话说回来,我没有阅读整个互联网。:) 我目前正在从diskpart 中获取信息,但是我遇到了这种方法的局限性。
作为奖励,如果答案是“不,这就是原因”,那也很有用。
wmi ×10
windows ×5
group-policy ×3
powershell ×2
dcom ×1
iis ×1
monitoring ×1
networking ×1
permissions ×1
query ×1
scripting ×1
serial ×1