在启动时使用PowerShell应用的动态AppLocker策略在两分钟后才会生效

时间:2013-06-15 23:12:55

标签: powershell windows-7 gpo

我们在启动时动态创建applocker规则存在问题。我们在Windows 7上使用本地GPO。域GPO不是项目中的选项。

在我们的案例中,我们使用powershellscript在系统启动时导入applocker规则。

问题是规则在系统运行大约2分钟之前不会生效。在那之后,我们可以随时锁定/解锁。

我已经检查过AppIDSvc服务设置为自动启动,我可以看到它正在运行。我还检查了它所依赖的服务。他们也自动启动(不会自动延迟) 我在事件日志中没有看到任何错误。

有人能告诉我是否有用于强制更新的命令?我没有运气就尝试了gpudate ...还试图重启applocker服务。

希望很快收到某人的消息。

这是一个锁定本地用户“abc”计算器的代码示例 - 仅作为示例。

锁定:

Import-Module AppLocker

$id = [guid]::NewGuid()
$tmpFileName = "c:\temp\temp.xml"
$appPath = "C:\Windows\system32\calc.exe"
$identity = "abc"
$objUser = New-Object System.Security.Principal.NTAccount($identity)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$identitySid = $strSID.Value

"<AppLockerPolicy Version=""1"">
        <RuleCollection Type=""Exe"" EnforcementMode=""Enabled"">
            <FilePathRule Id=""$id"" Name=""temp-$appPath"" Description=""Denies access to $appPath"" UserOrGroupSid=""$identitySid"" Action=""Deny"">
                <Conditions>
                    <FilePathCondition Path=""$appPath"" />
                </Conditions>
            </FilePathRule>
        </RuleCollection>
</AppLockerPolicy>" | out-file $tmpFileName

Set-AppLockerPolicy -XMLPolicy $tmpFileName -Merge
Remove-Item $tmpFileName

解锁:

Import-Module AppLocker

$tmpFileName = "c:\temp\temp.xml"
$appPath = "C:\Windows\system32\calc.exe"

[xml]$ruleXml = Get-AppLockerPolicy -Local -XML
$ruleNode = $ruleXml.SelectSingleNode("//FilePathRule[@Name='temp-$appPath']")

if ($ruleNode -ne $null)
{
    [void]$ruleNode.ParentNode.RemoveChild($ruleNode)
    $ruleXml.Save($tmpFileName)
    Set-AppLockerPolicy -XMLPolicy $tmpFileName
    Remove-Item $tmpFileName
}

亲切的问候, 的Morten

0 个答案:

没有答案