繁体   English   中英

SCCM 基线合规性 - 用于报告目的的 Powershell 脚本输出

[英]SCCM Baseline compliance - Output from Powershell script for reporting purposes

我正在尝试创建一份报告,说明在该资产上安装了哪个版本的 .NET,但我无法编辑 SCCM 库存的 .mof 文件...我需要大量执行此操作 - 独立的 Powershell 无法帮助我,因为在这种环境下它无法连接到远程注册表……但 SCCM 可以做到。

我认为是个好主意 - 创建基线来扫描遗产,获取数据,然后我会报告它。

我发现了一个非常棒的脚本https://github.com/EliteLoser/DotNetVersionLister - 这是输出的样子:

ComputerName : localhost
>=4.x        : 4.6.2
v4\Client    : Installed
v4\Full      : Installed
v3.5         : Not installed (no key)
v3.0         : Not installed (no key)
v2.0.50727   : Not installed (no key)
v1.1.4322    : Not installed (no key)
Ping         : True
Error        : 

正如你所看到的,输出是巨大的。 我制作了一个导入这个模块的小脚本,在本地主机上运行它,它很棒,但是......如何报告这个?

我已将其添加到 SCCM,为使用此设置了基线,但是否有人知道如何(如果可能的话)制作报告/查询或从中生成任何内容,这将在每台计算机上从上面返回相同的输出在我的收藏中?

我不知道这是否正是您要找的东西,但我注册了,以您可能认为有用的方式提出一个想法。

您可以设置基线配置来运行您的脚本并将输出写入主机。 为此,您必须使合规条件不合规。 所以设置合规条件,让脚本返回一个不可能的值,这样它将是不合规的。

然后在SQL management studio中,可以查询baseline config,查看各个系统的输出结果。

这是一个示例基线配置脚本。 在这个中,我们检查是否存在某些文件夹并根据结果写入输出,这只是向您展示一个示例,使用您设置的测试脚本将输出写入主机:

if (Test-Path -Path "C:\Windows") {
    if (Test-Path -Path "C:\Windows\Debug") {
        "Debug"
    }
    if (Test-Path -Path "C:\Windows\System") {
        "System"
    }
    if (Test-Path -Path "C:\Windows\System32") {
        "System32"
    }
    if (Test-Path -Path "C:\Windows\Nothing") {
        "Nothing"
    }
} else {
    "NOT INSTALLED"
}

为此创建一个基线并将其部署到一些测试系统。 在测试系统评估并报告结果后,您可以转到连接到 sccm 数据库的 sql 管理工作室并运行此 sql 命令。 使用您创建的配置项的确切名称对其进行修改:

Select csd.Netbios_Name0, csd.ConfigurationItemName, csd.CurrentValue, csd.Criteria, csd.LastComplianceMessageTime, csd.CIVersion
From v_CIComplianceStatusDetail csd
Where csd.ConfigurationItemName = 'YourConfigurationItemNameHere'
Order By csd.CurrentValue   

结果像这样返回

希望这能给你一些可以运行的想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM