Test-AppLockerPolicy

Specifies the AppLocker policy to determine whether the input files will be allowed to run for a given user.

Syntax

Test-AppLockerPolicy
    [-XmlPolicy] <String>
    -Path <System.Collections.Generic.List`1[System.String]>
    [-User <String>]
    [-Filter <System.Collections.Generic.List`1[Microsoft.Security.ApplicationId.PolicyManagement.PolicyDecision]>]
    [<CommonParameters>]
Test-AppLockerPolicy
    [-XmlPolicy] <String>
    -Packages <System.Collections.Generic.List`1[Microsoft.Windows.Appx.PackageManager.Commands.AppxPackage]>
    [-User <String>]
    [-Filter <System.Collections.Generic.List`1[Microsoft.Security.ApplicationId.PolicyManagement.PolicyDecision]>]
    [<CommonParameters>]
Test-AppLockerPolicy
    [-PolicyObject] <AppLockerPolicy>
    -Path <System.Collections.Generic.List`1[System.String]>
    [-User <String>]
    [-Filter <System.Collections.Generic.List`1[Microsoft.Security.ApplicationId.PolicyManagement.PolicyDecision]>]
    [<CommonParameters>]

Description

The Test-AppLockerPolicy cmdlet specifies the AppLocker policy to determine whether a list of files is allowed to run on the local computer for a specified user.

To test AppLocker rules for a nested group, a representative member of the nested group should be specified for the User parameter. For example, a rule that allows the Everyone group to run calc.exe may not appear to apply correctly when the nested Finance group for the User parameter is specified. Instead, a representative member of the Finance group should be specified for the User parameter.

Examples

Example 1: Report if programs are allowed to run

PS C:\> Test-AppLockerPolicy -XMLPolicy C:\Policy.xml -Path c:\windows\system32\calc.exe, C:\windows\system32\notepad.exe -User Everyone

This example reports if calc.exe and notepad.exe will be allowed to run for Everyone under the policy specified by C:\Policy.xml.

Example 2: List executables specified by no policy

PS C:\> Get-ChildItem C:\windows\system32\*.exe | Test-AppLockerPolicy c:\Policy.xml -Filter DeniedByDefault

This example lists the executables under C:\Windows\System32 that everyone will be denied by the policy specified by C:\Policy.xml because there is no explicit rule for the file.

Example 3: List executables specified by no policy to a text file

PS C:\> Get-AppLockerPolicy -Local | Test-AppLockerPolicy -Path C:\Windows\System32\*.exe -User contoso\saradavis -Filter Denied | Format-List -Property | Set-Content (ꞌC:\temp\DeniedFiles.txtꞌ)

This example gets the local AppLocker policy, uses the policy to determine which executables in C:\Windows\System32 that contoso\saradavis is explicitly denied access to run, and then redirects the list to a text file.

Example 4: Lists packages and test against a policy

PS C:\> Get-AppxPackage -AllUsers | Test-AppLockerPolicy -XmlPolicy .\SamplePolicy.xml

This example lists all the packages installed on this computer, for all the users, and tests them against a saved policy.

Parameters

-Filter

Specifies the policy decision by which to filter the output for each input file. The acceptable values for this parameter are: Allowed, Denied, DeniedByDefault, or AllowedByDefault.

Type:List<T>[Microsoft.Security.ApplicationId.PolicyManagement.PolicyDecision]
Accepted values:Allowed, AllowedByDefault, Denied, DeniedByDefault
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Packages

Specifies a list of installed packaged applications, from which the file information is retrieved.

Type:List<T>[Microsoft.Windows.Appx.PackageManager.Commands.AppxPackage]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

Specifies the list of the file paths to test. Regular expressions are supported.

Type:List<T>[String]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PolicyObject

Specifies the Applocker policy. Can be obtained from the Get-AppLockerPolicy or the New-AppLockerPolicy cmdlet.

Type:AppLockerPolicy
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-User

Defines the user or group to be used for testing the rules in a specified AppLocker policy. The acceptable values for this parameter are:

  • DNS user name (domain\username)
  • User Principal Name ([email protected])
  • SAM user name (username)
  • Security identifier (S-1-5-21-3165297888-301567370-576410423-1103)
Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-XmlPolicy

Specifies the file path and name of the XML-formatted file that contains the AppLocker policy.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Inputs

Microsoft.Security.ApplicationId.PolicyManagement.PolicyModel.AppLockerPolicy

AppLockerPolicy

Outputs

Microsoft.Security.ApplicationId.PolicyManagement.AppLockerPolicyDecision