我在 Windows 2008 上看到过 WmiPrvSE 泄漏的参考资料,但对 Windows 2008 R2 一无所知。
我们在 Hyper-V (2008) 之上运行 R2。我们还运行 NSClient++ 以从 opsview 进行监控。随着时间的推移,WmiPrvSE.exe 开始使用大量内存,从而导致内存警报问题(可用空间少于 10%)。VM 有 2GB,WmiPrvSE 在我杀死它之前最多消耗 500-600MB。
终止进程似乎没有任何负面影响;它再次启动,我没有注意到任何问题。但是一两天后,它又回到了同样的情况。
关于该怎么做的任何想法?资源监视器不显示 WmiPrvSE.exe 的任何磁盘或网络 IO。只是慢慢攀爬私人记忆……
编辑添加:我们没有运行群集或 Windows 系统资源管理器。我能猜到的唯一常规 WMI 用户是 NSClient++,但我们在其他服务器上似乎没有这个问题。
我非常需要你的帮助和帮助。
我们在登录和启动 Windows 7 Enterprise 系统时遇到问题。我们有 3000 多个 Windows 桌面,分布在校园周围大约 20 多座建筑物中。几乎校园里的每一台计算机都有我将要描述的问题。我花了一个多月的时间查看来自 Windows 性能分析器(一个很棒的产品)的 etl 文件和数十万个事件日志。我今天来到你面前很谦虚,我无法弄清楚这一点。
简单地说,我们的登录时间非常长。根据安装的软件,首次登录的平均时间大约为 2-10 分钟。所有计算机都是 Windows 7,最旧的计算机已经使用了 5 年。各种计算机上的启动时间从好(1-2 分钟)到非常差(5-60 分钟)不等。我们的第二次登录时间从 30 秒到 4 分钟不等。
我们在网络上的每台计算机之间都有一个千兆连接。我们有 5 个域控制器,它们也兼作我们的 DNS 服务器。
最初的测试让我们相信这是一个软件问题。所以我花了几天时间测试机器,结果发现 xperfview 的 etl 文件的结果不一致。校园中的每个计算机子集都有不同的软件问题子集,似乎没有一个会干扰登录刚启动。
所以我开始查看我们的组策略并找到一些非常有趣的事件 ID。
组策略 1129:由于缺少与域控制器的网络连接,组策略的处理失败。
组策略 1055:组策略处理失败。Windows 无法解析计算机名称。这可能是由以下多个原因之一引起的: a) 当前域控制器上的名称解析失败。b) Active Directory 复制延迟(在另一个域控制器上创建的帐户尚未复制到当前域控制器)。
NETLOGON 5719:这台计算机无法与域 OURDOMAIN 中的域控制器建立安全会话,原因如下: 当前没有可用的登录服务器来为登录请求提供服务。这可能会导致身份验证问题。确保此计算机已连接到网络。如果问题仍然存在,请联系您的域管理员。E1kexpress 27:英特尔®82567LM-3 千兆网络连接 - 网络链接已断开。
NetBT 4300 – 无法创建驱动程序。
WMI 10 - 由于错误 0x80041003,无法在命名空间“//./root/CIMV2”中重新激活带有查询“SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA“Win32_Processor”AND TargetInstance.LoadPercentage > 99”的事件过滤器。在问题得到纠正之前,无法通过此过滤器传递事件。 …
当然,与这个问题相关。
在发现它有点……危险之前,我在许多 Windows Server 2008 R2 SP1 服务器上安装了Windows Management Framework 3.0,而 WMI 在所有这些服务器上都被完全破坏了。
这是 WMI 命名空间在普通服务器上的样子(来自服务器管理器 -> 配置 -> WMI 控制):

这是安装 WMF 3.0 后的样子:

是的。除了 WMF 3.0 的新功能外,所有东西都消失了。
不用说,这些服务器上似乎没有任何工作了。不,这不是由于一些奇怪的安装错误,这发生在三台在安装 WMF 3.0 之前完美运行的服务器上,并且在所有这些服务器上都成功完成了安装。
不可否认,其中一个的设置有些复杂(各种 System Center 产品和 SQL Server 实例)……但其中两个只是普通的标准域控制器,什么也不做。
如何在不必在这些服务器上重新安装操作系统的情况下解决这个问题?
为什么它首先发生?
我们有一个 Windows 域,我在其中使用 GPO 来启用对使用 WMI 的所有工作站的远程管理和监控。我还可以通过计算机管理连接到我们所有的计算机,启动和停止服务以及查看事件日志等。所有这些都非常有效。
除了:
我们有一台运行 Windows 8.1 Pro 的计算机,并且上述所有远程管理等都可以正常工作;然后我们将其升级到 Windows 10 Pro 进行测试。似乎所有 GPO 也已应用于 Windows 10,但无法远程访问 WMI,并且(可能相关,也可能不相关)如果我(成功)连接到计算机管理,我可以访问除事件查看器(和WMI 安全设置)。
我重新运行winrm quickconfig,检查并允许DCOM权限和WMI权限,然后重新启动WMI服务,还是无法远程连接WMI。对任何 Windows 10 问题的网络搜索仍然没有得到好的结果,一般来说,我发现的这个问题没有任何结果。
有没有人远程访问 WMI 以在 Windows 10 计算机上工作?如果是这样,如何?
我在使用 Powershell 列出计算机上的所有打印机时遇到问题。
我们有一个批处理脚本,可以使用 PrintUI 添加/删除/列出“每台计算机”打印机。
我可以使用 PrintUI 来列出打印机。
rundll32 printui.dll,PrintUIEntry /ge /c"%UNC-NAME%"
Run Code Online (Sandbox Code Playgroud)
这将仅列出每台计算机的打印机,而...
Get-WMIObject -Class Win32_Printer -ComputerName $ComputerName
Run Code Online (Sandbox Code Playgroud)
将列出 WMI 中的所有打印机。
在上面的例子中,我有一个有 3 台打印机的系统,当用户登录时。 WMI 看到其中 2 台,PrintUI 看到 1 台。
我很困惑如何将它们全部列出!这样我就可以编写审核/添加/删除“每台计算机”和“本地”打印机的脚本
我想获取本地用户帐户的创建日期(如果重要,请使用 Win 7)。我查看了以下 WMI 对象(当然还有谷歌):
Win32_UserAccount
Win32_NetworkLoginProfile
返回的对象NetworkLoginProfile具有上次登录时间,但没有创建日期。检查Date Created他们的配置文件文件夹的属性只会给出该文件夹的创建日期,不一定是帐户本身。
操作系统:Server 2012 Core 和 Server 2012 R2 Core。DFS-Replication 已安装并显示正常。
我正在使用 WMI 从 DFSR 复制成员收集信息。查询可在许多计算机上运行,但有几个复制成员在查询中不起作用。
它是来自 root\MicrosoftDFS 命名空间的 DfsrReplicatedFolderInfo 类。
如果我执行以下 Powershell 命令:
Get-WmiObject -Namespace 'root\MicrosoftDFS' -Class DfsrReplicatedFolderInfo
结果为空。没有错误,但绝对没有输出。
如果我执行以下相应的 wmic 命令:
wmic /namespace:\\root\microsoftdfs path DfsrReplicatedFolderInfo get
它返回:
No Instance(s) Available.
无论命令是在本地还是远程执行,都会发生这种情况。
winmgmt /verifyrepository 返回:
WMI repository is consistent
使用wbemtest,我可以查看 DfsrReplicatedFolderInfo 类定义,但似乎没有它的实例。
同一命名空间中的其他 DFSR 相关类似乎工作正常。
我们一直在处理带有集合的包(现在是应用程序)的所有定位逻辑。既然我们已经从 SCCM 2007 转移到 SCCM 2012 SP1,建议我们将该逻辑转移到应用程序模型并使用全局条件和要求实施它。这有许多积极的好处 - 集合纯粹用于分层或逻辑分组,我们在使用 Supercedence 时获得更无缝的应用程序部署,以及改进的检测逻辑。
我将使用 Adobe Flash Player 插件作为示例。我们只想将 Adobe Flash Player Plugin 部署到安装了 Firefox 的工作站。使用 SCCM 2007 Package-Program 模型,我们将基于 WQL 查询创建一个集合,其中包含安装了 Firefox 的所有工作站:
select * from SMS_R_System inner join SMS_G_System_SoftwareProduct
on SMS_G_System_SoftwareProduct.ResourceId = SMS_R_System.ResourceId
where SMS_G_System_SoftwareProduct.ProductName like "Mozilla Firefox"
Run Code Online (Sandbox Code Playgroud)
一旦我们创建了集合,我们就会针对它部署我们的包程序。我正在尝试使用应用程序的全局条件和要求逻辑复制相同的逻辑。我所有尝试构建基于 WQL 查询的全局条件都会导致wbemErrTypeMismatch错误 ( 2147749893 (0x80041005))。
既然最佳实践建议我们将目标逻辑与应用程序捆绑在一起,我们需要做的是创建一个适当的 WQL 查询全局条件,然后我们可以使用应用程序的需求来评估它。
让我们从 WQL 查询开始。我使用 Scriptomatic 来转储SMS_InstalledSoftware属于root\cimv2\sms命名空间的WMI 类中的所有内容。我有理由确信SMS_InstalledSoftware是在尝试评估是否安装了某些东西时运行查询的最佳位置,因为 Win32_Product 仅适用于 Windows Installer 安装的软件。
我找到以下与 Firefox 相关的对象:
ARPDisplayName: …Run Code Online (Sandbox Code Playgroud) 我试图获取远程机器的磁盘信息,包括是否使用 win32_diskdrive 类在驱动器上启用了 SMART。
这比我想象的要棘手。虽然读取 status 属性很容易,但我在 Capabilities 属性中发现了一些有趣的东西——即表示“智能通知”是否可用的值。除非该命令在提升的安全上下文中运行,否则不会出现此值。因此,例如,如果我运行 (gwmi win32_diskdrive).Capabilities SMART 值 (10) 尚未出现在值数组中,如果我在提升的提示中运行它,它确实会出现。据我所知,您无法在提升的上下文中运行 winrm 会话(而且我对俗气的 schtasks hacks 或 psexec 不感兴趣)。
然后我尝试将 win32_diskdrive 映射到 MSStorageDriver_FailurePredictStatus 类。我想无论如何我都必须这样做,因为即使 SMART 出现在 Capabilities 属性中,也不一定意味着它已启用,对吗?
我正在将 win32_diskdrive 的 PNPDeviceID 属性映射到 MSStorageDriver_FailurePredictStatus 的 InstanceName 属性,但现在我的问题是我认为 InstanceName 属性不够独特,无法正常工作。例如,这是我的 InstanceName:IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_0
它显示接口类型 (IDE) 型号 (ST3250312AS) 固件版本 (JC47) 我认为是某种唯一标识符 ( 5&350bf0c3&0&0.0.0) 然后看起来像索引号 (_0)。当我用谷歌搜索时,5&350bf0c3&0&0.0.0它会在驱动器上找到一些信息,所以我认为这个数字不是唯一的。这意味着唯一性存在于索引号中,该索引号未包含在 win32_diskdrive 类的 PNPDeviceID 属性中。这是一个问题,因为我们的许多服务器都有多个相同的磁盘。
我担心的是,这MSStorageDriver_FailurePredictStatus将代表多个磁盘,如下所示:
IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_0
IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_1
IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0_2
Run Code Online (Sandbox Code Playgroud)
而所有这些的 win32_diskdrive 的 PNPDeviceID 属性就是
IDE\DiskST3250312AS_____________________________JC47____\5&350bf0c3&0&0.0.0
如何MSStorageDriver_FailurePredictStatus通过远程会话可靠地将从 win32_diskdrive 检索到的对象映射到powershell 或以另一种方式执行此操作? …
我正在尝试使用Start-CMSoftwareUpdateDeploymentcmdlet 将软件更新组部署到现有集合。
PS WHO:\> Start-CMSoftwareUpdateDeployment -SoftwareUpdateGroupName "Update Group - Microsoft Updates" -CollectionName `
Eval_OSUpdates -DeploymentType Required -SendWakeUpPacket $true -AllowRestart $true -PersistOnWriteFilterDevice $true `
-DownloadFromMicrosoftUpdate $true -DeploymentName "Evaluation Deployment - Update Group - Microsoft Updates" `
-UserNotification DisplayAll -RestartWorkstation $false -AllowUseMeteredNetwork $true
Run Code Online (Sandbox Code Playgroud)
给出了所有必需的参数,但是我在执行时收到以下错误:
Start-CMSoftwareUpdateDeployment : ConfigMgr Error Object:
instance of SMS_ExtendedStatus
{
Description = "One or more updates are present for which a EULA exists which hasn't been approved.";
ErrorCode = 1078462208;
File = "e:\\nts_sccm_release\\sms\\siteserver\\sdk_provider\\smsprov\\sspciassignment.cpp";
Line = 361;
Operation …Run Code Online (Sandbox Code Playgroud) wmi ×10
powershell ×4
windows ×3
sccm-2012 ×2
domain ×1
group-policy ×1
memory-leak ×1
networking ×1
printing ×1
smart ×1
update ×1
windows-10 ×1
windows-7 ×1
winrm ×1