Change log#
See upgrade notes for helpful information when upgrading from previous versions.
Attention
PSRule v0 is a prior release. For more information see v2 release notes. Please check out our upgrade notes to get prepared for upgrading to the latest version.
v0.22.0#
What's changed since v0.21.0:
- Engine features:
- General improvements:
- Bug fixes:- Fixed handling for null or empty arrays with StartsWith,Contains,EndsWith,In, andNotIn. #579
 
- Fixed handling for null or empty arrays with 
What's changed since pre-release v0.22.0-B2010014:
- No additional changes.
v0.22.0-B2010014 (pre-release)#
What's changed since v0.21.0:
- Engine features:
- General improvements:
- Bug fixes:- Fixed handling for null or empty arrays with StartsWith,Contains,EndsWith,In, andNotIn. #579
 
- Fixed handling for null or empty arrays with 
v0.21.0#
What's changed since v0.20.0:
- Engine features:- Added support for formatting results as markdown. #474- Use -OutputFormat Markdownor configureOutput.Formatto output markdown.
- To format as either detail or summary, use the -Asparameter or configureOutput.As.
 
- Use 
- Added character case assertion helpers IsLower, andIsUpper. #555- IsLowerchecks that all letters in a field value are lowercase.
- IsUpperchecks that all letters in a field value are uppercase.
 
 
- Added support for formatting results as markdown. #474
- General improvements:
- Engineering:- Bump Manatee.Json from 13.0.2 to 13.0.3. #563
 
- Bug fixes:
What's changed since pre-release v0.21.0-B2010010:
- No additional changes.
v0.21.0-B2010010 (pre-release)#
What's changed since pre-release v0.21.0-B2010003:
- General improvements:- Improved rule error reporting by including rule and source location. #565
 
v0.21.0-B2010003 (pre-release)#
What's changed since pre-release v0.21.0-B2009016:
- General improvements:- Added help links and default snippets to schemas. #561
 
- Engineering:- Bump Manatee.Json from 13.0.2 to 13.0.3. #563
 
- Bug fixes:
v0.21.0-B2009016 (pre-release)#
What's changed since pre-release v0.21.0-B2009006:
- Engine features:- Added character case assertion helpers IsLower, andIsUpper. #555- IsLowerchecks that all letters in a field value are lowercase.
- IsUpperchecks that all letters in a field value are uppercase.
 
 
- Added character case assertion helpers 
- Bug fixes:- Fixed NUnit report reasons should be escaped in markdown. #471
 
v0.21.0-B2009006 (pre-release)#
What's changed since v0.20.0:
- Engine features:- Added support for formatting results as markdown. #474- Use -OutputFormat Markdownor configureOutput.Formatto output markdown.
- To format as either detail or summary, use the -Asparameter or configureOutput.As.
 
- Use 
 
- Added support for formatting results as markdown. #474
- General improvements:
v0.20.0#
What's changed since v0.19.0:
- Engine features:- Added support for scanning repository files. #524- Added Fileinput type (-InputType File) to scan for files without deserializing them.
- Added Input.PathIgnoreoption to ignore files.
- When using the Fileinput type path specs in.gitignoreare ignored.
 
- Added 
- Added Get-PSRuleTargetcmdlet to read input files and return raw objects. #525- This cmdlet can be used to troubleshoot PSRule input issues.
 
- Baselines can now be flagged as obsolete. #499- Set the metadata.annotations.obsoleteproperty totrueto flag a baseline as obsolete.
- When an obsolete baseline is used, a warning will be generated.
 
- Set the 
- Added file assertion helpers FileHeader, andFilePath. #534- FileHeaderchecks for a comment header in the file.
- FilePathchecks that a file path (optionally with suffixes) exist.
 
 
- Added support for scanning repository files. #524
- General improvements:- Added automatic binding for Rule object. #542
 
- Engineering:
- Bug fixes:- Fixed out of bounds exception when empty markdown documentation is used. #516
 
What's changed since pre-release v0.20.0-B2009013:
- Bug fixes:- Fixed excessive obsolete property warnings. #545
 
v0.20.0-B2009013 (pre-release)#
What's changed since pre-release v0.20.0-B2009007:
- General improvements:- Added automatic binding for Rule object. #542
 
- Bug fixes:- Fixed InputFileInfoTypeproperty causes downstream binding issues. #541
 
- Fixed 
v0.20.0-B2009007 (pre-release)#
What's changed since pre-release v0.20.0-B2008010:
- Engine features:- Added file assertion helpers FileHeader, andFilePath. #534- FileHeaderchecks for a comment header in the file.
- FilePathchecks that a file path (optionally with suffixes) exist.
 
 
- Added file assertion helpers 
- Engineering:- Warn when deprecated $Ruleproperties are used. #536
 
- Warn when deprecated 
- Bug fixes:
v0.20.0-B2008010 (pre-release)#
What's changed since pre-release v0.20.0-B2008002:
- Engine features:- Baselines can now be flagged as obsolete. #499- Set the metadata.annotations.obsoleteproperty totrueto flag a baseline as obsolete.
- When an obsolete baseline is used, a warning will be generated.
 
- Set the 
 
- Baselines can now be flagged as obsolete. #499
- Engineering:- Bump YamlDotNet dependency to v8.1.2. #439
 
v0.20.0-B2008002 (pre-release)#
What's changed since v0.19.0:
- Engine features:- Added support for scanning repository files. #524- Added Fileinput type (-InputType File) to scan for files without deserializing them.
- Added Input.PathIgnoreoption to ignore files.
- When using the Fileinput type path specs in.gitignoreare ignored.
 
- Added 
- Added Get-PSRuleTargetcmdlet to read input files and return raw objects. #525- This cmdlet can be used to troubleshoot PSRule input issues.
 
 
- Added support for scanning repository files. #524
v0.19.0#
What's changed since v0.18.1:
- Engine features:- Added Reasonmethod to assertion results. #500- This new method, streamlines setting custom reasons particularly with formatted strings.
- The Reasonmethod replaces any previously set reasons with a custom string.
- Optional arguments can be provided to be included in string formatting.
 
- Improvements to assertion methods.
- Added module version constraints. #498- The module versions that PSRule uses can be constrained.
 
 
- Added 
- Bug fixes:
What's changed since pre-release v0.19.0-B2007030:
- No additional changes.
v0.19.0-B2007030 (pre-release)#
- Bug fixes:- Fixed Assert.Inunable to compare PSObject wrapped array items. #512
 
- Fixed 
v0.19.0-B2007023 (pre-release)#
- Engine features:- Added Reasonmethod to assertion results. #500- This new method, streamlines setting custom reasons particularly with formatted strings.
- The Reasonmethod replaces any previously set reasons with a custom string.
- Optional arguments can be provided to be included in string formatting.
 
- Improvements to assertion methods.
- Added module version constraints. #498- The module versions that PSRule uses can be constrained.
 
 
- Added 
- Bug fixes:
v0.18.1#
What's changed since v0.18.0:
- Bug fixes:
v0.19.0-B2006027 (pre-release)#
- Bug fixes:
v0.19.0-B2006018 (pre-release)#
- Bug fixes:- Fixed Csvoutput format with summary forInvoke-PSRule. #486
 
- Fixed 
v0.18.0#
What's changed since v0.17.0:
- General improvements:- Improved Assert-PSRuleoutput formatting. #472- Added recommendation and reasons for AzurePipelinesandGitHubActionsstyles.
- Summary line is has been updated to include synopsis instead of reasons.
 
- Added recommendation and reasons for 
 
- Improved 
- Bug fixes:
What's changed since pre-release v0.18.0-B2005015:
- No additional changes.
v0.18.0-B2005015 (pre-release)#
- General improvements:- Improved Assert-PSRuleoutput formatting. #472- Added recommendation and reasons for AzurePipelinesandGitHubActionsstyles.
- Summary line is has been updated to include synopsis instead of reasons.
 
- Added recommendation and reasons for 
 
- Improved 
- Bug fixes:
v0.17.0#
What's changed since v0.16.0:
- General improvements:- Improved Assert-PSRuleoutput formatting.- Added recommendation and reasons for ClientandPlainstyles. #456
 
- Added recommendation and reasons for 
- Added support for configuration of default module options. #459- bindingand- configurationoptions can be set to a default value.
- Updated New-PSRuleOptionparameter sets and help based on updates to module config.
 
- Added support for module fallback culture. #441
 
- Improved 
- Bug fixes:- Fixed resource schema to include useQualifiedNameandnameSeparatoroption. #458
 
- Fixed resource schema to include 
What's changed since pre-release v0.17.0-B2005010:
- No additional changes.
v0.17.0-B2005010 (pre-release)#
- General improvements:- Improved Assert-PSRuleoutput formatting.- Added recommendation and reasons for ClientandPlainstyles. #456
 
- Added recommendation and reasons for 
- Added support for configuration of default module options. #459- bindingand- configurationoptions can be set to a default value.
- Updated New-PSRuleOptionparameter sets and help based on updates to module config.
 
- Added support for module fallback culture. #441
 
- Improved 
- Bug fixes:- Fixed resource schema to include useQualifiedNameandnameSeparatoroption. #458
 
- Fixed resource schema to include 
v0.16.0#
What's changed since v0.15.0:
- General improvements:
- Bug fixes:
What's changed since pre-release v0.16.0-B2003027:
- No additional changes.
v0.16.0-B2003027 (pre-release)#
- Bug fixes:- Fixed output culture option ignored. #449
 
v0.16.0-B2003022 (pre-release)#
- General improvements:
- Bug fixes:- Fixed numeric comparison assertion with non-int types. #436
 
v0.15.0#
What's changed since v0.14.0:
- Engine features:- Added -ResultVariableto store results from Assert-PSRule into a variable. #412
 
- Added 
- General improvements:- Added recommendation to failure message of NUnit results. #421
 
- Bug fixes:- Fixed handling of vin field value with$Assert.Version. #429
- Fixed handling of warning action preference with Assert-PSRule. #428
- Fixed parent culture unwind with POSIX. #414
- Fixed output of warning with Assert-PSRule. #417
- Fixed NUnit report to include a failure element when reason is not specified. #420
 
- Fixed handling of 
What's changed since pre-release v0.15.0-B2002031:
- No additional changes.
v0.15.0-B2002031 (pre-release)#
- Fixed handling of vin field value with$Assert.Version. #429
- Fixed handling of warning action preference with Assert-PSRule. #428
v0.15.0-B2002019 (pre-release)#
- Added -ResultVariableto store results from Assert-PSRule into a variable. #412
v0.15.0-B2002012 (pre-release)#
- Fixed output of warning with Assert-PSRule. #417
- Fixed NUnit report to include a failure element when reason is not specified. #420
- Added recommendation to failure message of NUnit results. #421
v0.15.0-B2002005 (pre-release)#
- Fixed parent culture unwind with POSIX. #414
v0.14.0#
What's changed since v0.13.0:
- Engine features:- Added support for qualified target names. #395- Added options Binding.UseQualifiedNameandBinding.NameSeparator.
- See about_PSRule_Optionsfor details.
 
- Added options 
- Added assertion method HasJsonSchemato check if a JSON schema is referenced. #398- See about_PSRule_Assertfor usage details.
 
- See 
- Added file content helper for reading objects from files. #399- The method GetContentof$PSRulecan be used to read files as objects.
- See about_PSRule_Variablesfor usage details.
 
- The method 
 
- Added support for qualified target names. #395
- General improvements:
- Bug fixes:
What's changed since pre-release v0.14.0-B2002003:
- No additional changes
v0.14.0-B2002003 (pre-release)#
- Fixed wide formatting of rules with Get-PSRule. #407
- Fixed TargetName hash serialization for base types. #406
- Fixed output not generated with Assert-PSRule and Stop. #405
- Fixed NUnit results incorrectly reporting that the test had not executed. #403
- Improved NUnit results to include a failure message based on reported reasons. #404
- Improved reporting on runtime errors in rule blocks. #239
v0.14.0-B2001020 (pre-release)#
- Added support for qualified target names. #395- Added options Binding.UseQualifiedNameandBinding.NameSeparator.
- See about_PSRule_Optionsfor details.
 
- Added options 
- Added assertion method HasJsonSchemato check if a JSON schema is referenced. #398- See about_PSRule_Assertfor usage details.
 
- See 
- Added file content helper for reading objects from files. #399- The method GetContentof$PSRulecan be used to read files as objects.
- See about_PSRule_Variablesfor usage details.
 
- The method 
v0.13.0#
What's changed since v0.12.0:
- Engine features:- Improvements to rule help and documentation. #382 #316- Added links and notes sections to help.
- Added -Fullswitch toGet-PSRuleHelpto display links and notes sections.
- Added support for using a parent culture in rule help.
- Rule help will use parent culture when a more specific culture is not available.
 
- Added input format for reading PowerShell data .psd1files. #368- PowerShellDatahas been added to- Input.Format.
- See about_PSRule_Optionsfor details.
 
- Added custom rule data to results. #322- $PSRule.Datacan be used to set custom data during rule execution that is included in output.
- See about_PSRule_Variablesfor usage details.
 
- Improvements to assertion methods. #386 #374 #387 #344 #353 #357- Added support for assertion methods to be used within script pre-conditions.
- Added numeric comparison assertion helpers Greater,GreaterOrEqual,LessandLessOrEqual.
- Added semantic version assertion helper Version.
- Added string affix assertion helpers StartsWith,EndsWithandContains.
- See about_PSRule_Assertfor usage details.
 
- Improvements to output logging and formatting for Assert-PSRule.- Formatting now includes errors and warnings using style.
- Added PSRule banner with module information.
- Added rule success summary.
 
 
- Improvements to rule help and documentation. #382 #316
- General improvements:
- Bug fixes:
What's changed since pre-release v0.13.0-B2001013:
- No additional changes.
v0.13.0-B2001013 (pre-release)#
- Fixed JSON de-serialization fails with single object. #379
- Fixed stack overflow when parsing malformed JSON. #380
- Added rule documentation links and notes to help. #382- Added -Fullswitch toGet-PSRuleHelpto display links and notes sections.
 
- Added 
- Added aliases for -OutputFormat(-o) and-Module(-m) parameters. #384
- Improved numeric comparison assertion helpers to support strings. #387- Methods Greater,GreaterOrEqual,LessandLessOrEqualnow also check string length.
 
- Methods 
- Added support for assertion methods to be used within script pre-conditions. #386
v0.13.0-B1912043 (pre-release)#
- Added input format for reading PowerShell data .psd1files. #368- PowerShellDatahas been added to- Input.Format.
- See about_PSRule_Optionsfor details.
 
- Added numeric comparison assertion helpers. #374- Added methods Greater,GreaterOrEqual,LessandLessOrEqual.
- See about_PSRule_Assertfor usage details.
 
- Added methods 
v0.13.0-B1912027 (pre-release)#
- Added configuration helper for strings arrays. #363
- Added support for using a parent culture in rule help. #316- Rule help will use parent culture when a more specific culture is not available.
 
- Added custom rule data to results. #322- $PSRule.Datacan be used to set custom data during rule execution that is included in output.
- See about_PSRule_Variablesfor usage details.
 
v0.13.0-B1912012 (pre-release)#
- Improves output logging and formatting for Assert-PSRule. #357- Formatting now includes errors and warnings using style.
- Added PSRule banner with module information.
- Added rule success summary.
 
v0.13.0-B1912005 (pre-release)#
- Added semantic version assertion helper Version. #344
- Added string affix assertion helpers. #353- Added methods StartsWith,EndsWithandContains. Seeabout_PSRule_Assertfor usage details.
 
- Added methods 
- Added WithReasonto append/ replace reasons from assertion result. #354
v0.12.0#
What's changed since v0.11.0:
- Engine features:
- General improvements:
- Important change: Added $PSRulegeneric context variable. #341- Deprecated TargetName,TargetTypeandTargetObjectproperties on$Rule.
- Use TargetName,TargetTypeandTargetObjecton$PSRuleinstead.
- Properties TargetName,TargetTypeandTargetObjecton$Rulewill be removed in the future.
- Going forward $Rulewill only contain properties that relate to the current rule context.
 
- Deprecated 
- Bug fixes:
What's changed since pre-release v0.12.0-B1912007:
- Fixed key has already been added for default baseline. #349
v0.12.0-B1912007 (pre-release)#
- Fixed multiple value tag filtering. #346
- Added filtering for rules against a baseline with Get-PSRule. #345
v0.12.0-B1912002 (pre-release)#
- Fixed TargetType fall back to type name. #339
- Added custom field binding. #321- Added new option Binding.Fieldavailable in baselines to configure binding.
 
- Added new option 
- Added parameter alias -ffor-InputPath. #340- -fwas added to- Invoke-PSRule,- Assert-PSRuleand- Test-PSRuleTargetcmdlets.
 
- Important change: Added $PSRulegeneric context variable. #341- Deprecated TargetName,TargetTypeandTargetObjectproperties on$Rule.
- Use TargetName,TargetTypeandTargetObjecton$PSRuleinstead.
- Properties TargetName,TargetTypeandTargetObjecton$Rulewill be removed in the future.
- Going forward $Rulewill only contain properties that relate to the current rule context.
 
- Deprecated 
v0.12.0-B1911013 (pre-release)#
- Fixed NUnit serialization issue for unprocessed rules. #332
- Added -Alloption toExistskeyword. #331
v0.11.0#
What's changed since v0.10.0:
- General improvements:- Added -TargetTypeparameter to filter input objects by target type. #176- This parameter applies to Invoke-PSRule,Assert-PSRuleandTest-PSRuleTarget.
 
- This parameter applies to 
 
- Added 
- Bug fixes:
- Breaking change: Unprocessed object results are not returned from Test-PSRuleTargetby default. #318- Previously unprocessed objects returned $True, now unprocessed objects return no result.
- Use -Outcome Allto return$Truefor unprocessed objects the same as <= v0.10.0.
 
- Previously unprocessed objects returned 
What's changed since pre-release v0.11.0-B1911002:
- No additional changes.
v0.11.0-B1911002 (pre-release)#
- Fixed null reference exception when bound property is null. #323
v0.11.0-B1910014 (pre-release)#
- Fixed missing Markdowninput format in options schema. #315
- Added -TargetTypeparameter to filter input objects by target type. #176- This parameter applies to Invoke-PSRule,Assert-PSRuleandTest-PSRuleTarget.
 
- This parameter applies to 
- Breaking change: Unprocessed object results are not returned from Test-PSRuleTargetby default. #318- Previously unprocessed objects returned $True, now unprocessed objects return no result.
- Use -Outcome Allto return$Truefor unprocessed objects the same as <= v0.10.0.
 
- Previously unprocessed objects returned 
v0.10.0#
What's changed since v0.9.0:
- General improvements:- Added source note properties to input objects read from disk with -InputPath. #302
 
- Added source note properties to input objects read from disk with 
- Engine features:- Added assertion helper for checking field default value. #289
- Added dependency DependsOninformation to results fromGet-PSRule. #210- To include dependencies that would normally be filtered out use -IncludeDependencies.
 
- To include dependencies that would normally be filtered out use 
- Added input format for reading markdown front matter. #301- Markdown front matter is deserialized and evaluated as an object.
 
- Added Assert-PSRulecmdlet to improve integration into CI processes. #290- Added Output.Styleoption to support output in the following styles:- Client/ Plain - Output returns easy to read log of rule pass/ fail.
- Azure Pipelines - Report rule failures as errors collected by Azure Pipelines.
- GitHub Actions - Reports rule failures as errors collected by GitHub Actions.
 
 
- Added 
 
- Bug fixes:- Fix Get-PSRuleHelp-Online in constrained language mode. #296
 
- Fix 
- Breaking change: Removed previously deprecated alias HintforRecommend. #165- Use the Recommendkeyword instead.
 
- Use the 
What's changed since pre-release v0.10.0-B1910036:
- No additional changes.
v0.10.0-B1910036 (pre-release)#
- Added dependency DependsOninformation to results fromGet-PSRule. #210- To include dependencies that would normally be filtered out use -IncludeDependencies.
 
- To include dependencies that would normally be filtered out use 
- Added input format for reading markdown front matter. #301- Markdown front matter is deserialized and evaluated as an object.
 
- Added source note properties to input objects read from disk with -InputPath. #302
- Breaking change: Removed previously deprecated alias HintforRecommend. #165- Use the Recommendkeyword instead.
 
- Use the 
v0.10.0-B1910025 (pre-release)#
- Fix Get-PSRuleHelp-Online in constrained language mode. #296
- Added Assert-PSRulecmdlet to improve integration into CI processes. #290- Added Output.Styleoption to support output in the following styles:- Client/ Plain - Output returns easy to read log of rule pass/ fail.
- Azure Pipelines - Report rule failures as errors collected by Azure Pipelines.
- GitHub Actions - Reports rule failures as errors collected by GitHub Actions.
 
 
- Added 
v0.10.0-B1910011 (pre-release)#
- Added assertion helper for checking field default value. #289
v0.9.0#
What's changed since v0.8.0:
- General improvements:
- Engine features:- Added support for a wildcard match using the Withinkeyword. #272
- Added rule info display name. #276
- Added support for matching an array of tag values. #282
- Added named baselines. Now baselines are a separate resource that can be individually used.- Baselines can be packaged within module.
- Modules can specify a default baseline in module manifest.
- Target binding options (Binding) are now part of baselines.
- See about_PSRule_Baseline for more information.
 
 
- Added support for a wildcard match using the 
- Bug fixes:
- Breaking change: Baseline improvements, fundamentally changes how baselines work. #274- Previously, baselines were specified as workspace options.
- The previous baselineoptions property has been renamed torule.
- The previous configurationproperty is now a top level option.
 
What's changed since pre-release v0.9.0-B190905:
- No additional changes
v0.9.0-B190905 (pre-release)#
- Added support for matching an array of tag values. #282
- Updated Get-PSRuleHelpto include help within the current path by default. #197
- Fix can not serialize nested System.IO.DirectoryInfo property. #281
- Fix export of Likeparameter forWithinkeyword. #279
- Breaking change: Added named baselines. This changes how baselines work. #274- Previously, baselines were specified as workspace options.
- Now, baselines are a separate resource that can be individually used. Additionally:- Baselines can be packaged within module.
- Modules can specify a default baseline in module manifest.
- Target binding options (Binding) are now part of baselines.
 
- The previous baselineoptions property has been renamed torule.
- The previous configurationproperty is now a top level option.
- See about_PSRule_Baseline for more information.
 
v0.9.0-B190819 (pre-release)#
- Added support for a wildcard match using the Withinkeyword. #272
- Added rule info display name. #276
- Fix ModuleName not displayed in Get-PSRuleHelp list. #275
v0.9.0-B190810 (pre-release)#
- Improve feedback of parsing errors. #185
- Fix outcome reported when error or exception is raised. #211
v0.8.0#
What's changed since v0.7.0:
- General improvements:- PSRule options are now displayed as YAML instead of a complex object. #233
- Add detection for improper keyword use. #203
- Automatically load rule modules. #218
- Added support for debug messages and Write-Debugin rule definitions. #146
- Added Logging.LimitDebugandLogging.LimitVerboseoptions to limit logging to named scopes. #235
 
- Engine features:- Added per object reason for failing rules. #200- Keywords Exists,Match,WithinandTypeOfautomatically add a reason when they fail.
- Custom reason can be set for keywords Exists,Match,WithinandTypeOfwith-Reason.
- Added Reasonkeyword to add to reason for custom logic.
- Added wide output display for Invoke-PSRulewhich include the reason why rule failed.- To use wide output use the -OutputFormat Wideparameter.
 
- To use wide output use the 
- Renamed -Messageparameter to-Texton theRecommendkeyword.- The -Messageis an alias of-Textand will be deprecated in the future.
 
- The 
 
- Keywords 
- Added assertion helper $Assertfor extensibility. #250- Add built-in assertions for HasField,HasFieldValueandNullOrEmpty.
- Add JSON schema assertion method JsonSchema. #42
 
- Add built-in assertions for 
 
- Added per object reason for failing rules. #200
- Bug fixes:
- Breaking change: Use rule references consistent with cmdlet fully qualified syntax. #217- Rule names have to be unique within the current execution path or within a module.- Previously rule names only had to be unique within a single file.
 
- Previously the filename.rule.ps1/RuleNamewas required to reference rules across files.- This is no longer required because rule names are unique.
 
- You can reference a rule from a loaded module by using the syntax ModuleName\RuleName.
 
- Rule names have to be unique within the current execution path or within a module.
What's changed since pre-release v0.8.0-B190806:
- Fix export of assertion helper variable $Assert. #262
v0.8.0-B190806 (pre-release)#
- Fix module reloading with different versions. #254
- Fix not finding rules in current path by default. #256
- Fix rule synopsis comment capture. #214
v0.8.0-B190742 (pre-release)#
- Fix inconsistent handling of $PWD. #249
- Add detection for improper keyword use. #203
- Automatically load rule modules. #218
- Added assertion helper $Assertfor extensibility. #250- Add built-in assertions for HasField,HasFieldValueandNullOrEmpty.
- Add JSON schema assertion method JsonSchema. #42
 
- Add built-in assertions for 
- Breaking change: Use rule references consistent with cmdlet fully qualified syntax. #217- Rule names have to be unique within the current execution path or within a module.- Previously rule names only had to be unique within a single file.
 
- Previously the filename.rule.ps1/RuleNamewas required to reference rules across files.- This is no longer required because rule names are unique.
 
- You can reference a rule from a loaded module by using the syntax ModuleName\RuleName.
 
- Rule names have to be unique within the current execution path or within a module.
v0.8.0-B190716 (pre-release)#
- Added per object reason for failing rules. #200- The keywords Exists,Match,WithinandTypeOfautomatically add a reason when they fail.
- Added -Reasonparameter toExists,Match,WithinandTypeOfkeywords to allow a custom reason to be set.
- Added Reasonkeyword to add to reason for custom logic.
- Added wide output display for Invoke-PSRulewhich include the reason why rule failed.- To use wide output use the -OutputFormat Wideparameter.
 
- To use wide output use the 
- Renamed -Messageparameter to-Texton theRecommendkeyword.- The -Messageis an alias of-Textand will be deprecated in the future.
 
- The 
 
- The keywords 
v0.8.0-B190708 (pre-release)#
- Fix YAML options file discovery issue in dotted directory. #232
- Fix comparison of wrapped types and null with Within. #237
- PSRule options are now displayed as YAML instead of a complex object. #233
- Added support for debug messages and Write-Debugin rule definitions. #146
- Added Logging.LimitDebugandLogging.LimitVerboseoptions to limit logging to named scopes. #235
v0.7.0#
What's changed since v0.6.0:
- Fix reading nested arrays from JSON input. #223
- Fix comparison of non-string types with Within. #226
- Fix circular rule dependency issue. #190
- Fix rule DependsOnparameter allows null. #191
- Fix error message when attempting to use the rule keyword in a rule definition. #189
- Fix TargetName binding when TargetName or Name property is null. #202
- Fix handling of non-boolean results in rules. Rule is failed with more specific error message. #187 #224
- Include .ps1 files that are specified directly with -Path, instead of only .Rule.ps1 files. #182- Improved warning message displayed when no Rule.ps1 files are founds.
 
- Added support for Invoke-PSRuleto return CSV formatted results. #169- To generate CSV results use the -OutputFormat Csvparameter.
- Added Output.Pathoption to allow output to be saved directly to file.
- Added Output.Encodingoption configure encoding used to write to file.
- By default, UTF-8 encoding without BOM is used.
- Invoke-PSRulecmdlet also provides a parameter- -OutputPathto write results to file.
 
- To generate CSV results use the 
- Reordered cmdlet parameters to improve usage of frequently used parameters. #175- -Moduleparameter will tab-complete with imported rule modules.
 
- Added culture support for PowerShell informational messages. #158- A new $LocalizedDatavariable can be used within rule definitions.
 
- A new 
- Added -Notswitch toWithinandMatchkeywords to allow negative comparison. #208
- Improve discovery of rule tags. #209- Add wide format -OutputFormat WidetoGet-PSRuleto allow output of rule tags.
 
- Add wide format 
- Breaking change: Changed rule filtering by tag to be case-insensitive. #204- Previously tag value was case-sensitive, however this is confusing since PowerShell is case-insensitive by default.
 
- Breaking change: Rule time is recorded in milliseconds instead of seconds. #192
What's changed since pre-release v0.7.0-B190664:
- No additional changes.
v0.7.0-B190664 (pre-release)#
- Fix reading nested arrays from JSON input. #223
- Fix comparison of non-string types with Within. #226
- Improve handling of null rule result. #224
v0.7.0-B190652 (pre-release)#
- Fix TargetName binding when TargetName or Name property is null. #202
- Add culture support for PowerShell informational messages. #158- A new $LocalizedDatavariable can be used within rule definitions.
 
- A new 
- Add -Notswitch toWithinandMatchkeywords to allow negative comparison. #208
- Improve discovery of rule tags. #209- Add wide format -OutputFormat WidetoGet-PSRuleto allow output of rule tags.
 
- Add wide format 
- Breaking change: Change rule filtering by tag to be case-insensitive. #204- Previously tag value was case-sensitive, however this is confusing since PowerShell is case-insensitive by default.
 
v0.7.0-B190633 (pre-release)#
- Fix circular rule dependency issue. #190
- Fix rule DependsOnparameter allows null. #191
- Fix error message when attempting to use the rule keyword in a rule definition. #189
- Breaking change: Rule time is recorded in milliseconds instead of seconds. #192
v0.7.0-B190624 (pre-release)#
- Fix handling of non-boolean results in rules. Rule is failed with more specific error message. #187
- Include .ps1 files that are specified directly with -Path, instead of only .rule.ps1 files. #182- Improved warning message displayed when no Rule.ps1 files are founds.
 
v0.7.0-B190613 (pre-release)#
- Added support for Invoke-PSRuleto return CSV formatted results. #169- To generate CSV results use the -OutputFormat Csvparameter.
- Added Output.Pathoption to allow output to be saved directly to file.
- Added Output.Encodingoption configure encoding used to write to file.
- By default, UTF-8 encoding without BOM is used.
- Invoke-PSRulecmdlet also provides a parameter- -OutputPathto write results to file.
 
- To generate CSV results use the 
- Reordered cmdlet parameters to improve usage of frequently used parameters. #175- -Moduleparameter will tab-complete with imported rule modules.
 
v0.6.0#
What's changed since v0.5.0:
- Fix operation is not supported on this platform failure. #152
- Fix FullName cannot be found on this object error. #149
- Fix discovery of rules within paths that contain spaces fails. #168
- Added rule documentation, which allows additional rule information to be stored in markdown files. #157- Rule documentation also adds culture support. #18
- Rule documentation can be accessed like help with the Get-PSRuleHelpcmdlet.
 
- Added annotations, which are non-indexed metadata stored in rule documentation. #148- Annotations can contain a link to online version of the documentation. #147
 
- Important change: Changed Hintkeyword toRecommendto align with rule documentation. #165- Use of Hintkeyword is deprecated and will be removed in a future release. CurrentlyHintis aliased toRecommendfor compatibility.
 
- Use of 
- Breaking change: Changed rule properties to align with rule documentation. #164- Rule Synopsis, is a brief summary of the rule andDescriptionis a detailed purpose of the rule.
- Description:metadata keyword used in comment help is now- Synopsis:, use of- Description:will set synopsis. Description metadata keyword is deprecated and will be removed in a future update.
- Output property Messageon rule results is nowRecommendation.
 
- Rule 
What's changed since pre-release v0.6.0-B190627:
- Fix discovery of rules within paths that contain spaces fails. #168
- Fix exporting of Recommendkeyword andHintalias. #171
v0.6.0-B190627 (pre-release)#
- Important change: Changed Hintkeyword toRecommendto align with rule documentation. #165- Use of Hintkeyword is deprecated and will be removed in a future release. CurrentlyHintis aliased toRecommendfor compatibility.
 
- Use of 
- Breaking change: Changed rule properties to align with rule documentation. #164- Rule Synopsis, is a brief summary of the rule andDescriptionis a detailed purpose of the rule.
- Description:metadata keyword used in comment help is now- Synopsis:, use of- Description:will set synopsis. Description metadata keyword is deprecated and will be removed in a future update.
- Output property Messageon rule results is nowRecommendation.
 
- Rule 
v0.6.0-B190614 (pre-release)#
- Added rule documentation, which allows additional rule information to be stored in markdown files. #157- Rule documentation also adds culture support. #18
- Rule documentation can be accessed like help with the Get-PSRuleHelpcmdlet.
 
- Added annotations, which are non-indexed metadata stored in rule documentation. #148- Annotations can contain a link to online version of the documentation. #147
 
v0.6.0-B190514 (pre-release)#
- Fix operation is not supported on this platform failure. #152
- Fix FullName cannot be found on this object error. #149
v0.5.0#
What's changed since v0.4.0:
- Fix PSRule options schema usage of additionalProperties. #136
- Fix null reference exception when traversing null field. #123
- Fix missing help topics for options and variables. #125
- Improved handling of default YAML options file. #137
- Added support for Invoke-PSRuleto return NUnit3 formatted results. #129- To generate NUnit3 results use the -OutputFormat NUnit3parameter.
 
- To generate NUnit3 results use the 
- Added Set-PSRuleOptioncmdlet to configure YAML options file. #135
- Added parameters to New-PSRuleOption to configure common options. #134- Additional parameters are an alternative to using a -Optionhashtable.
 
- Additional parameters are an alternative to using a 
What's changed since pre-release v0.5.0-B190423:
- Fix schema conformance of -OutputFormat NUnit3to NUnit report schema. #141
- Fix PSRule options schema usage of additionalProperties. #136
v0.5.0-B190423 (pre-release)#
- Added support for Invoke-PSRuleto return NUnit3 formatted results. #129- To generate NUnit3 results use the -OutputFormat NUnit3parameter.
 
- To generate NUnit3 results use the 
- Added Set-PSRuleOptioncmdlet to configure YAML options file. #135
- Added parameters to New-PSRuleOption to configure common options. #134- Additional parameters are an alternative to using a -Optionhashtable.
 
- Additional parameters are an alternative to using a 
- Improved handling of default YAML options file. #137
v0.5.0-B190405 (pre-release)#
- Fix null reference exception when traversing null field. #123
- Fix missing help topics for options and variables. #125
v0.4.0#
What's changed since v0.3.0:
- Fix incorrect JSON de-serialization. #109 #111
- Added support for using -InputPathinstead of using-InputObjectto handle serialized objects. #106- -Formatis automatically detected for- .yaml,- .ymland- .jsonfile extensions.
 
- Added -OutputFormatparameter to serialize output fromInvoke-PSRuleas YAML or JSON. #29
- Added support for logging pass or fail outcomes to a data stream such as Error, Warning or Information. #97
- Breaking change: Deprecated usage of the -TargetNameparameter on theHintkeyword has been removed. #81
What's changed since pre-release v0.4.0-B190328:
- No additional changes.
v0.4.0-B190328 (pre-release)#
- Fix summary is not correctly serialized with JSON or YAML output format. #116
- Fix missing properties on serialized YAML output. #115
- Fix incorrect property name case of YAML serialized results. #114
v0.4.0-B190320 (pre-release)#
- Fix incorrect JSON de-serialization of nested arrays. #109
- Fix incorrect JSON de-serialization of non-object arrays. #111
v0.4.0-B190311 (pre-release)#
- Added support for using -InputPathinstead of using-InputObjectto handle serialized objects. #106- -Formatis automatically detected for- .yaml,- .ymland- .jsonfile extensions.
 
- Added -OutputFormatparameter to serialize output fromInvoke-PSRule. #29
- Added support for logging pass or fail outcomes to a data stream such as Error, Warning or Information. #97
- Breaking change: Deprecated usage of the -TargetNameparameter on theHintkeyword has been removed. #81
v0.3.0#
What's changed since v0.2.0:
- Added support for pipelining with Exists,Within,MatchandTypeOfkeywords #90
- Added support for packaging rules in modules #16
- Import objects from YAML or JSON format #75- Added support for input de-serialization from FileInfo objects #95
 
- Support nested TargetObjects #77
- Export variables to improve authoring experience #83
- Binding improvements:- Added object type binding and dynamic filtering for rules #82
- Added support for indexed and quoted field names #86
- Added support for case-sensitive binding operations #87- Binding ignores case by default. Set option Binding.CaseSensitivetotrueto enable case-sensitivity.
 
- Binding ignores case by default. Set option 
- Support TargetName binding of nested properties #71
 
- Added online help links to keywords #72
- Added schema for PSRule options #74
- Important change: The -TargetNameparameter of theHintkeyword has been deprecated #81- -TargetNameparameter not longer sets the pipeline object TargetName and generates a warning instead.
- The -TargetNamewill be completely removed in v0.4.0, at which time using the parameter will generate an error.
 
- Breaking change: Changed parameter alias for -Pathfrom-fto-p#99
What's changed since pre-release v0.3.0-B190231:
- Added support for input de-serialization from FileInfo objects #95
- Breaking change: Changed parameter alias for -Pathfrom-fto-p#99
v0.3.0-B190231 (pre-release)#
- Added support for pipelining with Exists,Within,MatchandTypeOfkeywords #90
- Fix empty YAML object causes format de-serialize to fail #92
v0.3.0-B190224 (pre-release)#
- Export variables to improve authoring experience #83
- Added support for packaging rules in modules #16
- Added support for indexed and quoted field names #86
- Added object type binding and dynamic filtering for rules #82
- Added support for case-sensitive binding operations #87- Binding ignores case by default. Set option Binding.CaseSensitivetotrueto enable case-sensitivity.
 
- Binding ignores case by default. Set option 
- Important change: The -TargetNameparameter of theHintkeyword has been deprecated #81- -TargetNameparameter not longer sets the pipeline object TargetName and generates a warning instead.
- The -TargetNamewill be completely removed in v0.4.0, at which time using the parameter will generate an error.
 
v0.3.0-B190208 (pre-release)#
- Added online help links to keywords #72
- Added schema for PSRule options #74
- Import objects from YAML or JSON format #75
- Support TargetName binding of nested properties #71
- Support nested TargetObjects #77
v0.2.0#
What's changed since v0.1.0:
- Added support for cross-platform environments (Windows, Linux and macOS) #49
- Added support for nested field names with Exists,WithinandMatchkeywords #60
- Added support for rule configuration using baselines #17
- Use rule description when hint message not set #61
- Allow objects to be suppressed by TargetName for individual rules #13
- Allow binding of TargetName to custom property #44
- Custom functions can be used to bind TargetName #44
- Objects that are unable to bind a TargetName will use a SHA1 object hash for TargetName #44
- Added Test-PSRuleTargetcommand to return an overall$Trueor$Falseafter evaluating rules for an object #30
- Improve reporting of inconclusive results and objects that are not processed by any rule #46- Inconclusive results and objects not processed will return a warning by default.
 
- Fix propagation of informational messages to host from rule scripts and definitions #48
- Fix Get-PSRule generates exception when no .rule.ps1 scripts exist in path #53
- Fix LocalizedData.PathNotFound warning when no .rule.ps1 scripts exist in path #54
What's changed since pre-release v0.2.0-B190121:
- No additional changes.
v0.2.0-B190121 (pre-release)#
- Added support for nested field names with Exists,WithinandMatchkeywords #60
- Added support for rule configuration using baselines #17
- Use rule description when hint message not set #61
v0.2.0-B190113 (pre-release)#
- Fix Get-PSRule generates exception when no .rule.ps1 scripts exist in path #53
- Fix LocalizedData.PathNotFound warning when no .rule.ps1 scripts exist in path #54
- Breaking change: Renamed Test-PSRulecmdlet toTest-PSRuleTargetwhich aligns more closely to the verb-noun naming standard #57
v0.2.0-B190105 (pre-release)#
- Allow objects to be suppressed by TargetName for individual rules #13
- Allow binding of TargetName to custom property #44
- Custom functions can be used to bind TargetName #44
- Objects that are unable to bind a TargetName will use a SHA1 object hash for TargetName #44
- Added Test-PSRulecommand to return an overall$Trueor$Falseafter evaluating rules for an object #30
- Improve reporting of inconclusive results and objects that are not processed by any rule #46- Inconclusive results and objects not processed will return a warning by default.
 
- Fix propagation of informational messages to host from rule scripts and definitions #48
- Added support for cross-platform environments (Windows, Linux and macOS) #49
v0.1.0#
- Initial release
What's changed since pre-release v0.1.0-B181235:
- Fix outcome filtering of summary results #33
- Fix target object counter in verbose logging #35
- Fix hashtable keys should be handled as fields #36
v0.1.0-B181235 (pre-release)#
- RuleId and RuleName are now independent. Rules are created with a name, and the RuleId is generated based on rule name and file name- Rules with the same name can exist and be cross linked with DependsOn, as long a the script file name is different
 
- Added -NottoExistskeyword
- Improved verbose logging of Exists,AllOf,AnyOfkeywords and core engine
- Breaking change: Renamed outcome filtering parameters to align to type name and increase clarity- Invoke-PSRulehas a- -Outcomeparameter instead of- -Status
- -Outcomesupports values of- Pass,- Fail,- Error,- None,- Processedand- All
 
v0.1.0-B181222 (pre-release)#
- Added rule tags to results to enable grouping and sorting #14
- Added support to check for rule tag existence. Use *for tag value on-Tagparameter withInvoke-PSRuleandGet-PSRule
- Added option to report rule summary using -Asparameter ofInvoke-PSRule#12
v0.1.0-B181212 (pre-release)#
- Initial pre-release.