符合SCCM基准-Powershell脚本的输出用于报告目的

时间:2019-07-17 08:34:42

标签: .net powershell reporting-services sccm

我正在尝试创建有关该资产所安装的.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        : 

如您所见,输出巨大。我已经制作了一个导入此模块的小脚本,可以在localhost上运行它,而且很棒,但是...如何举报?

我已将其添加到SCCM中,并确定了使用该基线的基准,但是没有人知道如何,甚至可能进行报告/查询或其中的任何操作,从而从上方返回相同的输出,收集的每台计算机上的每台计算机?

1 个答案:

答案 0 :(得分:0)

我不知道这是否正是您要寻找的东西,但是我报名参加了一个以您可能会觉得有用的方式提出的想法。

您可以设置基线配置以运行脚本,并将脚本将输出写入主机。为此,您必须使符合条件不符合。因此,请设置符合条件,以使脚本返回不可能的值,这样它将不符合要求。

然后在SQL Management Studio中,您可以查询基线配置并查看每个系统的输出结果。

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

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   

The results return like this

希望这为您提供了一些可以运行的想法。