![如何使用我自己的 PowerShell 脚本运行 OpenSCAP](https://linux22.com/image/748529/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%88%91%E8%87%AA%E5%B7%B1%E7%9A%84%20PowerShell%20%E8%84%9A%E6%9C%AC%E8%BF%90%E8%A1%8C%20OpenSCAP.png)
我想使用我自己的 PowerShell 脚本和 OpenSCAP 1.3.2(Windows 版本)检查我的 Windows 10 Pro 上的屏幕保护程序是否处于活动状态。我写了这样的文件测试文件:
<?xml version="1.0" encoding="UTF-8"?>
<Benchmark
xmlns="http://checklists.nist.gov/xccdf/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
id="RHEL-7"
resolved="0"
xml:lang="en-US">
<status date="2011-12-08">draft</status>
<title>Test XCCDF Benchmark</title>
<version>0.1</version>
<Profile id="standard">
<title>Standard System Security Profile</title>
<select idref="Screensaver_Is_Active" selected="true"/>
</Profile>
<Group id="password_requirements">
<title>Active Screensaver Test</title>
<Rule id="Screensaver_Is_Active" selected="false" severity="medium" weight="10.000000">
<title>Check if screensaver is active?</title>
<description>
<xhtml:pre xmlns:xhtml="http://www.w3.org/1999/xhtml">Check screensaver</xhtml:pre>
</description>
<check system="http://open-scap.org/page/SCE">
<check-import import-name="stdout" />
<check-content-ref href="test.ps1" />
</check>
</Rule>
</Group>
</Benchmark>
和测试.ps1
$data = Get-ItemProperty -Path "HKCU:\Control Panel\Desktop"
if ($data.ScreenSaveActive) {
Write-Output "Passed"
exit $XCCDF_RESULT_PASS
} else {
Write-Output "Failed"
exit $XCCDF_RESULT_FAIL
}
然后我开始使用命令检查并得到“未检查”的响应:
PS C:\> oscap xccdf eval --profile standard test.xml
Title
Check if screensaver is active?
Rule Screensaver_Is_Active
Result notchecked
文件 test.ps1 和 test.xml 也在路径“C:\”上
我的例子有什么问题?为什么检查只有“未检查”状态?
答案1
首先尝试使用oscap
该选项,以便我们可以获得更多有关正在发生的事情的信息。INFO
级别应该没问题:
--verbose <verbosity_level> - Turn on verbose mode at specified verbosity level.
Verbosity level must be one of: DEVEL, INFO, WARNING, ERROR.
但我不确定 SCE 模块是否适用于 Windows。
另外尝试运行oscap --version
并检查是否有以下列出的功能:
==== Capabilities added by auto-loaded plugins ====