我正在使用配置基准。我想从“ Get-CMBaseline -Name MyBaselineName”开始,然后按我的方式处理计算机的名称。我试图弄清楚如何获取“兼容”,“错误”和“不兼容”的计算机名称。我在“部署状态”中看到了这些计算机的名称,但是我需要通过PowerShell来使用它们。
答案 0 :(得分:0)
通过内置的cmdlet可以实现许多功能,但是有些还不行(还好吗?)。但是,几乎总是可以通过wmi获得与控制台相同的行为(因为控制台使用wmi本身)
要弄清楚有一个日志文件“ SMSProv.log”如何告诉您控制台对打开的每个对话框的作用,这是很好的。它位于站点服务器上您在子文件夹“日志”中安装ConfigMgr的位置(因此默认值为%Program Files%\ Microsoft Configuration Manager \ Logs)。
因此,如果在检查基线的部署状态时使用它,您会注意到它基本上转换为3个命令(全部在名称空间中
Root\SMS\site_<SiteCode>
在您的站点服务器上):
SELECT * FROM SMS_DCMDeploymentCompliantAssetDetails WHERE AssignmentID=<AssignmentID>
SELECT * FROM SMS_DCMDeploymentNonCompliantAssetDetails WHERE AssignmentID=<AssignmentID>
SELECT * FROM SMS_DCMDeploymentErrorAssetDetails WHERE AssignmentID=<AssignmentID>
其中AssignemtID是您将获得的ID,例如来自
(Get-CMBaselineDeployment -Name "<Your Baslines Name>").AssignmentID
一个小小的例外是控制台会根据错误类型进一步过滤错误,但对我来说,这似乎甚至不是您想要的,并且以后可以根据需要在Powershell中轻松实现。
在大多数情况下,SQLPro命令在SMSProv.log中也可用,并且在某些情况下,它可以加快执行速度。但是,在这种情况下可能并非如此,并且大多数时候情况要复杂得多。