in src/Analyzer.PowerShellRuleEngine/PowerShellRuleEngine.cs [165:190]
private void UnblockRules()
{
var rulesDirectory = Path.Combine(AppContext.BaseDirectory, "Modules", PSRuleModuleName);
// Check if rules have already been unblocked
var moduleFileAlternateDataStream = Path.Combine(rulesDirectory, $"{PSRuleModuleName}.psd1:Unblocked");
if (File.Exists(moduleFileAlternateDataStream))
{
return;
}
string[] ruleFiles = Directory.GetFiles(rulesDirectory, "*.ps1", new EnumerationOptions
{
RecurseSubdirectories = true,
MatchCasing = MatchCasing.CaseInsensitive
});
// Delete the Zone.Identifier Alternate Data Stream on each rule file
foreach (string ruleFile in ruleFiles)
{
File.Delete($"{ruleFile}:Zone.Identifier");
}
// Create a new Alternate Data Stream on the .psd1 module file to indicate that the rules have been unblocked
File.WriteAllBytes(moduleFileAlternateDataStream, new byte[0]);
}