【问题标题】:How to Create Deny rules for Applocker using Powershell如何使用 Powershell 为 Applocker 创建拒绝规则
【发布时间】:2016-05-12 01:27:24
【问题描述】:

当使用诸如

之类的命令时
ls 'C:\Program Files\*.exe' | Get-AppLockerFileInformation | New-AppLockerPolicy -RuleType Path -User everyone -xml -optimize

我总是看到它发出“允许”规则。如何在生成的 xml 中生成“拒绝”规则(即 Action="Deny")。 MSDN 文档没有说明拒绝选项。摆弄 XML 是唯一的方法吗?

【问题讨论】:

    标签: powershell group-policy gpo applocker


    【解决方案1】:

    您可以在调用Set-AppLockerPolicy 之前修改New-AppLockerPolicy 返回的策略规则对象:

    $Policy = ls 'C:\Program Files\*.exe' | Get-AppLockerFileInformation | New-AppLockerPolicy -RuleType Path -User Everyone -Optimize
    foreach($RuleCollection in $Policy.RuleCollections)
    {
        foreach($Rule in $RuleCollection)
        {
            $Rule.Action = 'Deny'
        }
    }
    Set-AppLockerPolicy -PolicyObject $Policy -Ldap "<DN to target policy>"
    

    在 PowerShell 4.0 及更高版本中,您也可以使用 ForEach({}) 扩展方法:

    $Policy = ... | New-AppLockerPolicy
    $Policy.RuleCollections.ForEach({ $_.ForEach({ $_.Action = 'Deny' }) })
    Set-AppLockerPolicy -PolicyObject $Policy -Ldap ...
    

    【讨论】:

    • 我之前试过这个,但我不认为 Action 属性是可设置的。在您的脚本中尝试$policy.RuleCollections[0].Action="Deny",然后打印$policy.RuleCollections[0]
    • 我的错。你说的对!!我没有看到它是一个双重集合(RuleCollections & RuleCollection),因此我错了。
    • 顺便说一句。您可能想从脚本中删除 -xml。
    • @AntonyThomas 你做错了 - RuleCollections 包含集合,每个集合都包含规则 - 它是一个嵌套数组 - $policy.RuleCollections[0][0].Action 是你想要探索的对象
    猜你喜欢
    • 2017-03-16
    • 1970-01-01
    • 2020-03-08
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    相关资源
    最近更新 更多