Below is an example of the parameters of the policy. They need to match for the import to be successful:

.png)
.jpg)

.png)
Rule
If you create a policy with more than one filter (e.g. ComplexPolicy, as seen in the image), the definitions will need to follow each other (in rows) and cannot be separated by a definition in the new policy.
Filter Definitions
Below are some filter definitions for a filter policy.
ArchivedDate - (Equal, YoungerThan, OlderThan, NotEqual)
ItemDate - (Equal, YoungerThan, OlderThan, NotEqual)
Path - (Equal, NotEqual)
RetentionCateogry - (Equal, NotEqual)
ItemSize [size must be entered in bytes] - (Equal, NotEqual, GreaterEqual, GreaterThan, LessEqual, LesserThan)
HasShortcut - (this is automatically set to true)
LegalHold - (this is automatically set to true)
PowerShell Script
$computerName = 'l2-vlsk-01'
$CSVPath = "C:\filter_test.csv" #"\\l2-vlsk-01\filter_test.csv"
Connect-ASCore $computerName
$currentPolicyName = '';
Import-Csv -Path $CSVPath | ForEach-Object {
if($currentPolicyName -ne $_.PolicyName) {
$addedFilterPolicy = Add-ASFilterPolicy -Name $_.PolicyName
if($addedFilterPolicy -eq $null -or $addedFilterPolicy.Status -ne 'Success' -or $addedFilterPolicy.Error -ne $null){
Write-Host Error creating policy with name $_.PolicyName
return
} else{
Write-Host Succesfully created policy ($_.PolicyName)
}
}
if ($addedFilterPolicy -ne $null -and $addedFilterPolicy.FilterPolicyId -ne $null) {
Write-Host Adding filter definitions... ($_.FilterDefinition)
if($_.FilterDefinition -eq 'HasLegalHold') {
Add-ASFilterCondition -FilterPolicyId $addedFilterPolicy.FilterPolicyId -FilterDefinition $_.FilterDefinition -Value $true
} elseif ($_.FilterDefinition -eq 'HasShortcut') {
Add-ASFilterCondition -FilterPolicyId $addedFilterPolicy.FilterPolicyId -FilterDefinition $_.FilterDefinition
} else {
Add-ASFilterCondition -FilterPolicyId $addedFilterPolicy.FilterPolicyId -FilterDefinition $_.FilterDefinition -operator $_.Operator -Value $_.Value
}
} else {
Write-Host "Policy not found"
}
$currentPolicyName = $_.PolicyName
}
$computerName = 'l2-vlsk-01' $CSVPath = "C:\filter_test.csv" #"\\l2-vlsk-01\filter_test.csv" Connect-ASCore $computerName $currentPolicyName = ''; Import-Csv -Path $CSVPath | ForEach-Object { if($currentPolicyName -ne $_.PolicyName) { $addedFilterPolicy = Add-ASFilterPolicy -Name $_.PolicyName if($addedFilterPolicy -eq $null -or $addedFilterPolicy.Status -ne 'Success' -or $addedFilterPolicy.Error -ne $null){ Write-Host Error creating policy with name $_.PolicyName return } else{ Write-Host Succesfully created policy ($_.PolicyName) } } if ($addedFilterPolicy -ne $null -and $addedFilterPolicy.FilterPolicyId -ne $null) { Write-Host Adding filter definitions... ($_.FilterDefinition) if($_.FilterDefinition -eq 'HasLegalHold') { Add-ASFilterCondition -FilterPolicyId $addedFilterPolicy.FilterPolicyId -FilterDefinition $_.FilterDefinition -Value $true } elseif ($_.FilterDefinition -eq 'HasShortcut') { Add-ASFilterCondition -FilterPolicyId $addedFilterPolicy.FilterPolicyId -FilterDefinition $_.FilterDefinition } else { Add-ASFilterCondition -FilterPolicyId $addedFilterPolicy.FilterPolicyId -FilterDefinition $_.FilterDefinition -operator $_.Operator -Value $_.Value } } else { Write-Host "Policy not found" } $currentPolicyName = $_.PolicyName }