Skip to content

Change log#

See upgrade notes for helpful information when upgrading from previous versions.

Important notes:

  • Several options have been renamed and the old names will be removed in v3. See deprecations for details.
  • Several properties of rule and language block elements will be removed from v3. See deprecations for details.

Experimental features:

  • Baseline groups allow you to use a friendly name to reference baselines. See baselines for more information.
  • Functions within YAML and JSON expressions can be used to perform manipulation prior to testing a condition. See functions for more information.
  • Sub-selectors within YAML and JSON expressions can be used to filter rules and list properties. See sub-selectors for more information.
  • Processing of changes files only within a pipeline. See creating your pipeline for more information.

Unreleased#

What's changed since release v2.9.0:

  • General improvements:
    • Expanded support for FileHeader assertion by @BernieWhite. #1521
      • Added support for .bicepparam, .tsp, .tsx, .editorconfig, .ipynb, and .toml files.
  • Engineering:
    • Bump Microsoft.CodeAnalysis.NetAnalyzers to v7.0.3. #1550
    • Bump Microsoft.NET.Test.Sdk to v17.6.3. #1557
    • Bump YamlDotNet to v13.1.1. #1399
    • Bump xunit to v2.5.0. #1562
    • Bump xunit.runner.visualstudio to v2.5.0. #1561

v2.9.0#

What's changed since release v2.8.1:

  • New features:
    • Added sub-selector quantifiers for allOf or anyOf operators by @BernieWhite. #1423
      • Quantifiers allow you to specify the number of matches with count, less, lessOrEqual, greater, or greaterOrEqual.
      • See Sub-selectors for more information.
    • Added support for new functions by @BernieWhite. #1422
      • Added support for padLeft, and padRight.
    • Experimental: Added support for baseline groups by @BernieWhite. #1541
      • Baseline groups allow you to reference a baseline by a friendly name.
      • Update the baseline group to point to a new baseline.
      • Currently only a single baseline can be referenced by a baseline group.
      • See baselines for more information.
  • General improvements:
    • Added style and improved handling for restore command by @BernieWhite. #1152
    • Important change: Rename of execution options by @BernieWhite. #1456
      • Renamed options allow configuration of output level as Ignore, Warn, Error, or Debug.
      • Execution.AliasReferenceWarning is replaced with Execution.AliasReference.
      • Execution.InconclusiveWarning is replaced with Execution.RuleInconclusive.
      • Execution.InvariantCultureWarning is replaced with Execution.InvariantCulture.
      • Execution.NotProcessedWarning is replaced with Execution.UnprocessedObject.
      • Deprecated AliasReferenceWarning option, which will be removed in v3.
      • Deprecated InconclusiveWarning option, which will be removed in v3.
      • Deprecated InvariantCultureWarning option, which will be removed in v3.
      • Deprecated NotProcessedWarning option, which will be removed in v3.
    • Improved schema display names by @BernieWhite. #1488
  • Engineering:
    • Bump Pester to v5.4.1. #1510
    • Bump Microsoft.NET.Test.Sdk to v17.6.2. #1544
    • Bump Microsoft.CodeAnalysis.Common to v4.6.0. #1534
  • Bug fixes:
    • Fixed tool output on access denied to path by @BernieWhite. #1490
    • Fixed tool exit code on error or failure by @BernieWhite. #1491
    • Fixed include local not automatically being enabled for default module baseline by @BernieWhite. #1506

What's changed since pre-release v2.9.0-B0068:

  • No additional changes.

v2.9.0-B0068 (pre-release)#

What's changed since pre-release v2.9.0-B0033:

  • New features:
    • Experimental: Added support for baseline groups by @BernieWhite. #1541
      • Baseline groups allow you to reference a baseline by a friendly name.
      • Update the baseline group to point to a new baseline.
      • Currently only a single baseline can be referenced by a baseline group.
      • See baselines for more information.
  • General improvements:
    • Added style and improved handling for restore command by @BernieWhite. #1152
  • Engineering:
    • Bump Microsoft.NET.Test.Sdk to v17.6.2. #1544
    • Bump Microsoft.CodeAnalysis.Common to v4.6.0. #1534
  • Bug fixes:
    • Fixed include local not automatically being enabled for default module baseline by @BernieWhite. #1506

v2.9.0-B0033 (pre-release)#

What's changed since pre-release v2.9.0-B0013:

  • New features:
    • Added sub-selector quantifiers for allOf or anyOf operators by @BernieWhite. #1423
      • Quantifiers allow you to specify the number of matches with count, less, lessOrEqual, greater, or greaterOrEqual.
      • See Sub-selectors for more information.
    • Added support for new functions by @BernieWhite. #1422
      • Added support for padLeft, and padRight.

v2.9.0-B0013 (pre-release)#

What's changed since release v2.8.1:

  • General improvements:
    • Important change: Rename of execution options by @BernieWhite. #1456
      • Renamed options allow configuration of output level as Ignore, Warn, Error, or Debug.
      • Execution.AliasReferenceWarning is replaced with Execution.AliasReference.
      • Execution.InconclusiveWarning is replaced with Execution.RuleInconclusive.
      • Execution.InvariantCultureWarning is replaced with Execution.InvariantCulture.
      • Execution.NotProcessedWarning is replaced with Execution.UnprocessedObject.
      • Deprecated AliasReferenceWarning option, which will be removed in v3.
      • Deprecated InconclusiveWarning option, which will be removed in v3.
      • Deprecated InvariantCultureWarning option, which will be removed in v3.
      • Deprecated NotProcessedWarning option, which will be removed in v3.
    • Improved schema display names by @BernieWhite. #1488
  • Engineering:
    • Bump Pester to v5.4.1. #1510
    • Bump Microsoft.CodeAnalysis.Common to v4.5.0. #1455
  • Bug fixes:
    • Fixed tool output on access denied to path by @BernieWhite. #1490
    • Fixed tool exit code on error or failure by @BernieWhite. #1491

v2.8.1#

What's changed since release v2.8.0:

  • Bug fixes:
    • Fixed wrong message for excluded rules by @BernieWhite. #1493
    • Fixed job summary reports completed time by @BernieWhite. #1492

v2.8.0#

What's changed since release v2.7.0:

  • General improvements:
    • Important change: Replaced SuppressedRuleWarning execution option with RuleSuppressed by @BernieWhite. #1456
      • Improved options for output of suppressed rules with RuleSuppressed option.
      • Deprecated SuppressedRuleWarning option, which will be removed in v3.
    • Added support for logging excluded rules by @BernieWhite. #1432
    • Added additional options to schema for PSRule for Azure by @BernieWhite. #1446
    • Improved error message for failing to read options file by @BernieWhite. #1433
    • Added support for import within initialize block by @BernieWhite. #1448
    • Added support for direct typing on import by @BernieWhite. #1449
      • Use the $PSRule.ImportWithType method to import an object with a specific type.
    • Added support for case sensitivity matching with match and notMatch expressions by @BernieWhite. #1480
  • Engineering:
    • Bump Pester to v5.4.0. #1414 Bump Microsoft.CodeAnalysis.Common to v4.4.0. #1341
    • Bump BenchmarkDotNet to v0.13.5. #1413
    • Bump BenchmarkDotNet.Diagnostics.Windows to v0.13.5. #1413
    • Bump Microsoft.NET.Test.Sdk to v17.5.0. #1442
    • Bump Newtonsoft.Json to v13.0.3. #1467
    • Bump Microsoft.CodeAnalysis.NetAnalyzers to v7.0.1. #1468
  • Bug fixes:
    • Fixes handling of numerics in tests for that are impacted by regional format by @BernieWhite. #1405
    • Fixed no output with using job summary with as summary by @BernieWhite. #1483
      • Fixed output and added error for unsupported scenarios.
    • Fixed LocalizedData is not exposed to if pre-conditions by @BernieWhite. #1083
    • Fixed LocalizedData is not exposed to conventions by @BernieWhite. #1477
    • Fixed problem binding when not set locally by @BernieWhite. #1473

What's changed since pre-release v2.8.0-B0171:

  • No additional changes.

v2.8.0-B0171 (pre-release)#

What's changed since pre-release v2.8.0-B0121:

  • General improvements:
    • Added support for case sensitivity matching with match and notMatch expressions by @BernieWhite. #1480
  • Bug fixes:
    • Fixed no output with using job summary with as summary by @BernieWhite. #1483
      • Fixed output and added error for unsupported scenarios.

v2.8.0-B0121 (pre-release)#

What's changed since pre-release v2.8.0-B0076:

  • Bug fixes:
    • Fixed LocalizedData is not exposed to if pre-conditions by @BernieWhite. #1083
    • Fixed LocalizedData is not exposed to conventions by @BernieWhite. #1477

v2.8.0-B0076 (pre-release)#

What's changed since pre-release v2.8.0-B0034:

  • Engineering:
    • Bump Newtonsoft.Json to v13.0.3. #1467
    • Bump Microsoft.CodeAnalysis.NetAnalyzers to v7.0.1. #1468
  • Bug fixes:
    • Fixed problem binding when not set locally by @BernieWhite. #1473

v2.8.0-B0034 (pre-release)#

What's changed since v2.7.0:

  • General improvements:
    • Important change: Replaced SuppressedRuleWarning execution option with RuleSuppressed by @BernieWhite. #1456
      • Improved options for output of suppressed rules with RuleSuppressed option.
      • Deprecated SuppressedRuleWarning option, which will be removed in v3.
    • Added support for logging excluded rules by @BernieWhite. #1432
    • Added additional options to schema for PSRule for Azure by @BernieWhite. #1446
    • Improved error message for failing to read options file by @BernieWhite. #1433
    • Added support for import within initialize block by @BernieWhite. #1448
    • Added support for direct typing on import by @BernieWhite. #1449
      • Use the $PSRule.ImportWithType method to import an object with a specific type.
  • Engineering:
    • Bump Pester to v5.4.0. #1414
    • Bump Microsoft.CodeAnalysis.NetAnalyzers to v7.0.0. #1374 Bump Microsoft.CodeAnalysis.Common to v4.4.0. #1341
    • Bump BenchmarkDotNet to v0.13.5. #1413
    • Bump BenchmarkDotNet.Diagnostics.Windows to v0.13.5. #1413
    • Bump Microsoft.NET.Test.Sdk to v17.5.0. #1442
  • Bug fixes:
    • Fixes handling of numerics in tests for that are impacted by regional format by @BernieWhite. #1405

v2.7.0#

What's changed since v2.6.0:

  • New features:
    • Added API version date comparison assertion method and expression by @BernieWhite. #1356
    • Added support for new functions by @BernieWhite. #1227
      • Added support for trim, replace, split, first, and last.
  • General improvements:
    • Added support target scope by @BernieWhite. #1350
    • Added support for hasValue expression with scope by @BernieWhite. #1382
    • Return target object scope as an array by @BernieWhite. #1383
    • Improve support of string comparisons to support an array of strings by @BernieWhite. #1384
    • Added help properties to rules from YAML/ JSON resources by @BernieWhite. #1386
  • Engineering:
    • Bump Newtonsoft.Json to v13.0.2. #1358
    • Bump System.Drawing.Common to v7.0.0. #1332
    • Bump Microsoft.NET.Test.Sdk to v17.4.1. #1389
  • Bug fixes:
    • Fixed exception with comments in JSON baselines by @BernieWhite. #1336
    • Fixed handling of constrained language mode with PowerShell 7.3 by @BernieWhite. #1348
    • Fixed exception calling RuleSource value cannot be null by @BernieWhite. #1343
    • Fixed null reference for link property by @BernieWhite. #1393
    • Fixed reason are emitted for pre-condition sub-selectors by @BernieWhite. #1394
    • Fixed CLI failed to load required assemblies by @BernieWhite. #1361
    • Fixed CLI ignores modules specified in Include.Modules by @BernieWhite. #1362
    • Fixed job summary directory creation by @BernieWhite. #1353
    • Fixed same key for ref and name by @BernieWhite #1354
    • Fixed object path fails to iterate JSON object with wildcard selector by @BernieWhite. #1376
    • Fixed rule annotations are not included from YAML/ JSON definition by @BernieWhite. #1378
    • Fixed loop stuck parsing JSON allOf not rule condition by @BernieWhite. #1370
    • Fixed handling of uint64 with LessOrEqual assertion method by @BernieWhite. #1366

What's changed since pre-release v2.7.0-B0126:

  • No additional changes.

v2.7.0-B0126 (pre-release)#

What's changed since pre-release v2.7.0-B0097:

  • Bug fixes:
    • Fixed null reference for link property by @BernieWhite. #1393
    • Fixed reason are emitted for pre-condition sub-selectors by @BernieWhite. #1394

v2.7.0-B0097 (pre-release)#

What's changed since pre-release v2.7.0-B0070:

  • General improvements:
    • Added support for hasValue expression with scope by @BernieWhite. #1382
    • Return target object scope as an array by @BernieWhite. #1383
    • Improve support of string comparisons to support an array of strings by @BernieWhite. #1384
    • Added help properties to rules from YAML/ JSON resources by @BernieWhite. #1386
  • Engineering:
    • Bump Newtonsoft.Json to v13.0.2. #1358
    • Bump System.Drawing.Common to v7.0.0. #1332
    • Bump Microsoft.NET.Test.Sdk to v17.4.1. #1389

v2.7.0-B0070 (pre-release)#

What's changed since pre-release v2.7.0-B0049:

  • Bug fixes:
    • Fixed object path fails to iterate JSON object with wildcard selector by @BernieWhite. #1376
    • Fixed rule annotations are not included from YAML/ JSON definition by @BernieWhite. #1378

v2.7.0-B0049 (pre-release)#

What's changed since pre-release v2.7.0-B0031:

  • Bug fixes:
    • Fixed loop stuck parsing JSON allOf not rule condition by @BernieWhite. #1370
    • Fixed handling of uint64 with LessOrEqual assertion method by @BernieWhite. #1366

v2.7.0-B0031 (pre-release)#

What's changed since pre-release v2.7.0-B0016:

  • New features:
    • Added API version date comparison assertion method and expression by @BernieWhite. #1356
    • Added support for new functions by @BernieWhite. #1227
      • Added support for trim, replace, split, first, and last.
  • Bug fixes:
    • Fixed CLI failed to load required assemblies by @BernieWhite. #1361
    • Fixed CLI ignores modules specified in Include.Modules by @BernieWhite. #1362

v2.7.0-B0016 (pre-release)#

What's changed since pre-release v2.7.0-B0006:

  • Bug fixes:
    • Fixed job summary directory creation by @BernieWhite. #1353
    • Fixed same key for ref and name by @BernieWhite #1354

v2.7.0-B0006 (pre-release)#

What's changed since pre-release v2.7.0-B0001:

  • General improvements:
    • Added support target scope by @BernieWhite. #1350
  • Bug fixes:
    • Fixed exception with comments in JSON baselines by @BernieWhite. #1336
    • Fixed handling of constrained language mode with PowerShell 7.3 by @BernieWhite. #1348

v2.7.0-B0001 (pre-release)#

What's changed since v2.6.0:

  • Bug fixes:
    • Fixed exception calling RuleSource value cannot be null by @BernieWhite. #1343

v2.6.0#

What's changed since v2.5.3:

  • New features:
    • Added support for generating job summaries by @BernieWhite. #1264
      • Job summaries provide a markdown output for pipelines in addition to other supported output formats.
      • To use, configure the Output.JobSummaryPath option.
    • Added support for time bound suppression groups by @BernieWhite. #1335
      • Suppression groups can be configured to expire after a specified time by setting the spec.expiresOn property.
      • When a suppression group expires, the suppression group will generate a warning by default.
      • Configure the Execution.SuppressionGroupExpired option to ignore or error on expired suppression groups.
  • Engineering:
    • Bump Microsoft.NET.Test.Sdk to v17.4.0. #1331
    • Bump PSScriptAnalyzer to v1.21.0. #1318
    • Class clean up and documentation by @BernieWhite. #1186

What's changed since pre-release v2.6.0-B0034:

  • No additional changes.

v2.6.0-B0034 (pre-release)#

What's changed since pre-release v2.6.0-B0013:

  • New features:
    • Added support for generating job summaries by @BernieWhite. #1264
      • Job summaries provide a markdown output for pipelines in addition to other supported output formats.
      • To use, configure the Output.JobSummaryPath option.
    • Added support for time bound suppression groups by @BernieWhite. #1335
      • Suppression groups can be configured to expire after a specified time by setting the spec.expiresOn property.
      • When a suppression group expires, the suppression group will generate a warning by default.
      • Configure the Execution.SuppressionGroupExpired option to ignore or error on expired suppression groups.
  • Engineering:
    • Bump Microsoft.NET.Test.Sdk to v17.4.0. #1331

v2.6.0-B0013 (pre-release)#

What's changed since v2.5.3:

  • Engineering:
    • Bump Microsoft.NET.Test.Sdk to v17.3.2. #1283
    • Bump PSScriptAnalyzer to v1.21.0. #1318
    • Class clean up and documentation by @BernieWhite. #1186

v2.5.3#

What's changed since v2.5.2:

  • Bug fixes:
    • Fixed incorrect XML header for encoding by @BernieWhite. #1322

v2.5.2#

What's changed since v2.5.1:

  • Bug fixes:
    • Fixed NUnit output does not escape characters in all result properties by @BernieWhite. #1316

v2.5.1#

What's changed since v2.5.0:

  • Bug fixes:
    • Fixed In with array source object and dot object path by @BernieWhite. #1314

v2.5.0#

What's changed since v2.4.2:

  • New features:
    • Experimental: Added support for only processing changed files by @BernieWhite. #688
      • To ignore unchanged files, set the Input.IgnoreUnchangedPath option to true.
      • See creating your pipeline for more information.
  • General improvements:
    • Added labels metadata from grouping and filtering rules by @BernieWhite. #1272
      • Labels are metadata that extends on tags to provide a more structured way to group rules.
      • Rules can be classified by setting the metadata.labels property or -Labels parameter.
    • Provide unblock for command line tools by @BernieWhite. #1261
  • Engineering:
    • Bump Microsoft.NET.Test.Sdk to v17.3.1. #1248
  • Bug fixes:
    • Fixed could not load Microsoft.Management.Infrastructure by @BernieWhite. #1249
      • To use minimal initial session state set Execution.InitialSessionState to Minimal.
    • Fixed unhandled exception with GetRootedPath by @BernieWhite. #1251
    • Fixed Dockerfile case sensitivity by @BernieWhite. #1269

What's changed since pre-release v2.5.0-B0080:

  • No additional changes.

v2.5.0-B0080 (pre-release)#

What's changed since pre-release v2.5.0-B0045:

  • Bug fixes:
    • Fixed exception with PathExpressionBuilder.GetAllRecurse by @BernieWhite. #1301

v2.5.0-B0045 (pre-release)#

What's changed since pre-release v2.5.0-B0015:

  • New features:
    • Experimental: Added support for only processing changed files by @BernieWhite. #688
      • To ignore unchanged files, set the Input.IgnoreUnchangedPath option to true.
      • See creating your pipeline for more information.
  • General improvements:
    • Added labels metadata from grouping and filtering rules by @BernieWhite. #1272
      • Labels are metadata that extends on tags to provide a more structured way to group rules.
      • Rules can be classified by setting the metadata.labels property or -Labels parameter.
  • Bug fixes:
    • Fixed Dockerfile case sensitivity by @BernieWhite. #1269
    • Fixed markdown parsing of Spanish translated help fails by @BernieWhite @jonathanruiz. #1286 #1285

v2.5.0-B0015 (pre-release)#

What's changed since pre-release v2.5.0-B0004:

  • General improvements:
    • Provide unblock for command line tools by @BernieWhite. #1261

v2.5.0-B0004 (pre-release)#

What's changed since v2.4.0:

  • Engineering:
    • Bump Microsoft.NET.Test.Sdk to v17.3.1. #1248
  • Bug fixes:
    • Fixed could not load Microsoft.Management.Infrastructure by @BernieWhite. #1249
      • To use minimal initial session state set Execution.InitialSessionState to Minimal.
    • Fixed unhandled exception with GetRootedPath by @BernieWhite. #1251

v2.4.2#

What's changed since v2.4.1:

  • Bug fixes:
    • Fixed exception with PathExpressionBuilder.GetAllRecurse by @BernieWhite. #1301

v2.4.1#

What's changed since v2.4.0:

  • Bug fixes:
    • Fixed markdown parsing of Spanish translated help fails by @BernieWhite @jonathanruiz. #1286 #1285

v2.4.0#

What's changed since v2.3.2:

  • New features:
    • Experimental: Added support for functions within YAML and JSON expressions by @BernieWhite. #1227 #1016
      • Added conversion functions boolean, string, and integer.
      • Added lookup functions configuration, and path.
      • Added string functions concat, substring.
      • See functions for more information.
    • Experimental: Added support for sub-selector YAML and JSON expressions by @BernieWhite. #1024 #1045
      • Sub-selector pre-conditions add an additional expression to determine if a rule is executed.
      • Sub-selector object filters provide an way to filter items from list properties.
      • See sub-selectors for more information.
  • Engineering:
    • Improvements to PSRule engine API documentation by @BernieWhite. #1186
    • Updates to PSRule engine API by @BernieWhite. #1152
      • Added tool support for baselines parameter.
      • Added module path discovery.
      • Added output for verbose and debug messages.
    • Bump support projects to .NET 6 by @BernieWhite. #1209
    • Bump Microsoft.NET.Test.Sdk to v17.3.0. #1213
    • Bump BenchmarkDotNet to v0.13.2. #1241
    • Bump BenchmarkDotNet.Diagnostics.Windows to v0.13.2. #1242
  • Bug fixes:
    • Fixed reporting of duplicate identifiers which were not generating an error for all cases by @BernieWhite. #1229
      • Added Execution.DuplicateResourceId option to configure PSRule behaviour.
      • By default, duplicate resource identifiers return an error.
    • Fixed exception on JSON baseline without a synopsis by @BernieWhite. #1230
    • Fixed repository information not in output by @BernieWhite. #1219

What's changed since pre-release v2.4.0-B0091:

  • No additional changes.

v2.4.0-B0091 (pre-release)#

What's changed since pre-release v2.4.0-B0063:

  • Engineering:
    • Bump BenchmarkDotNet to v0.13.2. #1241
    • Bump BenchmarkDotNet.Diagnostics.Windows to v0.13.2. #1242

v2.4.0-B0063 (pre-release)#

What's changed since pre-release v2.4.0-B0039:

  • New features:
    • Experimental: Added support for sub-selector YAML and JSON expressions by @BernieWhite. #1024 #1045
      • Sub-selector pre-conditions add an additional expression to determine if a rule is executed.
      • Sub-selector object filters provide an way to filter items from list properties.
      • See sub-selectors for more information.
  • Engineering:
    • Improvements to PSRule engine API documentation by @BernieWhite. #1186

v2.4.0-B0039 (pre-release)#

What's changed since pre-release v2.4.0-B0022:

  • New features:
    • Experimental: Added support for functions within YAML and JSON expressions by @BernieWhite. #1227 #1016
      • Added conversion functions boolean, string, and integer.
      • Added lookup functions configuration, and path.
      • Added string functions concat, substring.
      • See functions for more information.
  • Bug fixes:
    • Fixed reporting of duplicate identifiers which were not generating an error for all cases by @BernieWhite. #1229
      • Added Execution.DuplicateResourceId option to configure PSRule behaviour.
      • By default, duplicate resource identifiers return an error.
    • Fixed exception on JSON baseline without a synopsis by @BernieWhite. #1230

v2.4.0-B0022 (pre-release)#

What's changed since pre-release v2.4.0-B0009:

  • Engineering:
    • Updates to PSRule engine API by @BernieWhite. #1152
      • Added tool support for baselines parameter.
      • Added module path discovery.
      • Added output for verbose and debug messages.

v2.4.0-B0009 (pre-release)#

What's changed since v2.3.2:

  • Engineering:
    • Bump support projects to .NET 6 by @BernieWhite. #1209
    • Bump Microsoft.NET.Test.Sdk to v17.3.0. #1213
  • Bug fixes:
    • Fixed repository information not in output by @BernieWhite. #1219

v2.3.2#

What's changed since v2.3.1:

  • Bug fixes:
    • Fixes lost scope for rules by @BernieWhite. #1214

v2.3.1#

What's changed since v2.3.0:

  • Bug fixes:
    • Fixed object path join handling of self path identifier by @BernieWhite. #1204

v2.3.0#

What's changed since v2.2.0:

  • General improvements:
    • Added PathPrefix method to add an object path prefix to assertion reasons by @BernieWhite. #1198
    • Added support for binding with JSON objects by @BernieWhite. #1182
    • Added support for full path from JSON objects by @BernieWhite. #1174
    • Improved reporting of full object path from pre-processed results by @BernieWhite. #1169
    • Added PSRule for Azure expansion configuration to options schema by @BernieWhite. #1149
  • Engineering:
    • Bump xunit to v2.4.2. #1200
    • Expose online link extension method by @BernieWhite. #1195
    • Added comment documentation to .NET classes and interfaces by @BernieWhite. #1186
    • Added publishing support for NuGet symbol packages @BernieWhite. #1173
    • Updated outcome option docs by @BernieWhite. #1166
    • Bump Sarif.Sdk to v2.4.16. #1177
    • Refactoring and updates to interfaces to allow use outside of PowerShell by @BernieWhite. #1152
  • Bug fixes:
    • Fixes JSON parsing of string array for single objects by @BernieWhite. #1193
    • Fixed handling for JSON objects in rules by @BernieWhite. #1187
    • Fixed null object reference for object equity comparison by @BernieWhite. #1157
    • Fixed expression evaluation not logging debug output when using the -Debug switch by @BernieWhite. #1158
    • Fixed startIndex cannot be larger than length of string by @BernieWhite. #1160
    • Fixed path within SDK package causes psd1 to compile by @BernieWhite. #1146

What's changed since pre-release v2.3.0-B0163:

  • No additional changes.

v2.3.0-B0163 (pre-release)#

What's changed since pre-release v2.3.0-B0130:

  • General improvements:
    • Added PathPrefix method to add an object path prefix to assertion reasons by @BernieWhite. #1198
  • Engineering:
    • Bump xunit to v2.4.2. #1200

v2.3.0-B0130 (pre-release)#

What's changed since pre-release v2.3.0-B0100:

  • Engineering:
    • Expose online link extension method by @BernieWhite. #1195
  • Bug fixes:
    • Fixes JSON parsing of string array for single objects by @BernieWhite. #1193

v2.3.0-B0100 (pre-release)#

What's changed since pre-release v2.3.0-B0074:

  • Engineering:
    • Added comment documentation to .NET classes and interfaces by @BernieWhite. #1186
  • Bug fixes:
    • Fixed handling for JSON objects in rules by @BernieWhite. #1187

v2.3.0-B0074 (pre-release)#

What's changed since pre-release v2.3.0-B0051:

  • General improvements:
    • Added support for binding with JSON objects by @BernieWhite. #1182

v2.3.0-B0051 (pre-release)#

What's changed since pre-release v2.3.0-B0030:

  • General improvements:
    • Added support for full path from JSON objects by @BernieWhite. #1174
  • Engineering:
    • Added publishing support for NuGet symbol packages @BernieWhite. #1173
    • Updated outcome option docs by @BernieWhite. #1166
    • Bump Sarif.Sdk to v2.4.16. #1177

v2.3.0-B0030 (pre-release)#

What's changed since pre-release v2.3.0-B0015:

  • General improvements:
    • Improved reporting of full object path from pre-processed results by @BernieWhite. #1169

v2.3.0-B0015 (pre-release)#

What's changed since pre-release v2.3.0-B0006:

  • Bug fixes:
    • Fixed null object reference for object equity comparison by @BernieWhite. #1157
    • Fixed expression evaluation not logging debug output when using the -Debug switch by @BernieWhite. #1158
    • Fixed startIndex cannot be larger than length of string by @BernieWhite. #1160

v2.3.0-B0006 (pre-release)#

What's changed since pre-release v2.3.0-B0001:

  • General improvements:
    • Added PSRule for Azure expansion configuration to options schema by @BernieWhite. #1149
  • Engineering:
    • Refactoring and updates to interfaces to allow use outside of PowerShell by @BernieWhite. #1152

v2.3.0-B0001 (pre-release)#

What's changed since v2.2.0:

  • Bug fixes:
    • Fixed path within SDK package causes psd1 to compile by @BernieWhite. #1146

v2.2.0#

What's changed since v2.1.0:

  • New features:
    • Added notCount expression and assertion helper by @ArmaanMcleod. #1091
  • General improvements:
    • Improved reporting of the object path that caused rule failures by @BernieWhite. #1092
      • Output include a new Detail property with details of the reason and the object path.
      • Custom methods ReasonFrom and ReasonIf accept a path parameter to specify the object path.
    • Added informational message when output has been written to disk by @BernieWhite. #1074
      • The Output.Footer option now supports OutputFile which reports the output file path. This is enabled by default.
    • Added descendant selector to object path syntax by @BernieWhite. #1133
      • Use .. to traverse into child objects, for example $..name finds names for all nested objects.
  • Engineering:
    • Bump Newtonsoft.Json to 13.0.1. #1137
    • Added more object path tests by @ArmaanMcleod. #1110
    • Bump xunit.runner.visualstudio to 2.4.5. #1084
    • Bump Pester to 5.3.3. #1079
    • Bump Microsoft.NET.Test.Sdk to 17.2.0. #1089
    • Added NuGet packaging publishing by @BernieWhite. #1093
    • Updated NuGet packaging metadata by @BernieWhite. #1093
  • Bug fixes:
    • Fixed output of reason with wide format by @BernieWhite. #1117
    • Fixed piped input does not respect excluded paths by @BernieWhite. #1114
      • By default, objects are not excluded by source.
      • To exclude piped input based on source configure the Input.IgnoreObjectSource option.
    • Fixed issue building a PSRule project by removing PSRule.psd1 from compile target by @BernieWhite. #1140
    • Fixed grouping of logical operators in object path by @BernieWhite. #1101

What's changed since pre-release v2.2.0-B0175:

  • No additional changes.

v2.2.0-B0175 (pre-release)#

What's changed since pre-release v2.2.0-B0131:

  • Bug fixes:
    • Fixed issue building a PSRule project by removing PSRule.psd1 from compile target by @BernieWhite. #1140

v2.2.0-B0131 (pre-release)#

What's changed since pre-release v2.2.0-B0089:

  • General improvements:
    • Added descendant selector to object path syntax by @BernieWhite. #1133
      • Use .. to traverse into child objects, for example $..name finds names for all nested objects.
  • Engineering:
    • Bump Newtonsoft.Json to 13.0.1. #1137

v2.2.0-B0089 (pre-release)#

What's changed since pre-release v2.2.0-B0052:

  • General improvements:
    • Improved reporting of the object path that caused rule failures by @BernieWhite. #1092
      • Output include a new Detail property with details of the reason and the object path.
      • Custom methods ReasonFrom and ReasonIf accept a path parameter to specify the object path.

v2.2.0-B0052 (pre-release)#

What's changed since pre-release v2.2.0-B0021:

  • General improvements:
    • Added informational message when output has been written to disk by @BernieWhite. #1074
      • The Output.Footer option now supports OutputFile which reports the output file path. This is enabled by default.
  • Engineering:
    • Added more object path tests by @ArmaanMcleod. #1110
  • Bug fixes:
    • Fixed output of reason with wide format by @BernieWhite. #1117
    • Fixed piped input does not respect excluded paths by @BernieWhite. #1114
      • By default, objects are not excluded by source.
      • To exclude piped input based on source configure the Input.IgnoreObjectSource option.

v2.2.0-B0021 (pre-release)#

What's changed since v2.1.0:

  • New features:
    • Added notCount expression and assertion helper by @ArmaanMcleod. #1091
  • Engineering:
    • Bump xunit.runner.visualstudio to 2.4.5. #1084
    • Bump Pester to 5.3.3. #1079
    • Bump Microsoft.NET.Test.Sdk to 17.2.0. #1089
    • Added NuGet packaging publishing by @BernieWhite. #1093
    • Updated NuGet packaging metadata by @BernieWhite. #1093
  • Bug fixes:
    • Fixed grouping of logical operators in object path by @BernieWhite. #1101

v2.1.0#

What's changed since v2.0.1:

  • General improvements:
    • Added notStartsWith, notEndsWith, and notContains expressions and assertion helpers. #1047
    • Added like, notLike expressions and assertion helpers. #1048
    • Added additional repository paths to ignore by default. #1043
    • Added custom suppression message during PSRule runs. #1046
      • When a rule is suppressed using a suppression group the synopsis is shown in the suppression warning.
      • Configure the suppression group synopsis to display a custom message.
      • Suppression groups synopsis can be localized using markdown documentation.
      • Use markdown to set a culture specific synopsis.
      • Custom suppression messages are not supported when suppressing individual rules using ps-rule.yaml.
      • See about_PSRule_SuppressionGroups for details.
    • Added source support for string conditions. #1068
  • Engineering:
    • Added code signing of module. #1049
    • Added SBOM manifests to module. #1050
    • Bump Sarif.Sdk to 2.4.15. #1075
    • Bump Pester to 5.3.2. #1062
  • Bug fixes:
    • Important change: Fixed source scope not updated in multi-module runs. #1053
      • Several properties of rule and language block elements have been renamed to improve consistency.
      • From v3 custom scripts may not work correctly until you update these names.
      • For details on the updated property names see deprecations.

What's changed since pre-release v2.1.0-B0069:

  • No additional changes.

v2.1.0-B0069 (pre-release)#

What's changed since pre-release v2.1.0-B0040:

  • General improvements:
    • Added notStartsWith, notEndsWith, and notContains expressions and assertion helpers. #1047
    • Added like, notLike expressions and assertion helpers. #1048
    • Added additional repository paths to ignore by default. #1043
  • Engineering:
    • Bump Sarif.Sdk to 2.4.15. #1075

v2.1.0-B0040 (pre-release)#

What's changed since pre-release v2.1.0-B0015:

  • General improvements:
    • Added custom suppression message during PSRule runs. #1046
      • When a rule is suppressed using a suppression group the synopsis is shown in the suppression warning.
      • Configure the suppression group synopsis to display a custom message.
      • Suppression groups synopsis can be localized using markdown documentation.
      • Use markdown to set a culture specific synopsis.
      • Custom suppression messages are not supported when suppressing individual rules using ps-rule.yaml.
      • See about_PSRule_SuppressionGroups for details.
    • Added source support for string conditions. #1068
  • Engineering:
    • Bump Sarif.Sdk to 2.4.14. #1064
    • Bump Pester to 5.3.2. #1062
  • Bug fixes:
    • Important change: Fixed source scope not updated in multi-module runs. #1053
      • Several properties of rule and language block elements have been renamed to improve consistency.
      • From v3 custom scripts may not work correctly until you update these names.
      • For details on the updated property names see deprecations.

v2.1.0-B0015 (pre-release)#

What's changed since v2.0.1:

  • Engineering:
    • Added code signing of module. #1049
    • Added SBOM manifests to module. #1050

v2.0.1#

What's changed since v2.0.0:

  • Bug fixes:
    • Fixed read JSON failed with comments. #1051
    • Fixed null reference on elapsed time when required module check fails. #1054
    • Fixed failed to read JSON objects with a empty property name. #1052

v2.0.0#

What's changed since v1.11.1:

  • New features:
    • Add support for suppression groups. #793
    • Added source expression property. #933
      • Included the following expressions:
        • source
        • withinPath
        • notWithinPath
    • Added support for rule severity level. #880
      • Rules can be configured to be Error, Warning, or Information.
      • Failing rules with the Error severity level will cause the pipeline to fail.
      • Rules with the Warning severity level will be reported as warnings.
      • Rules with the Information severity level will be reported as informational messages.
      • By default, the severity level for a rule is Error.
    • Added expression support for type based assertions. #908
      • Included the following expressions:
        • IsArray
        • IsBoolean
        • IsDateTime
        • IsInteger
        • IsNumeric
    • Added support for formatting results as SARIF. #878
      • Set Output.Format to Sarif to output results in the SARIF format.
      • See about_PSRule_Options for details.
  • General improvements:
    • Add option to disable invariant culture warning. #899
    • Added support for object path expressions. #808 #693
      • Inspired by JSONPath, object path expressions can be used to access nested objects.
      • Array members can be filtered and enumerated using object path expressions.
      • Object path expressions can be used in YAML, JSON, and PowerShell rules and selectors.
      • See about_PSRule_Assert for details.
    • Improve tracking of suppressed objects. #794
      • Added Execution.SuppressedRuleWarning option to output warning for suppressed rules.
    • Added support for rule aliases. #792
      • Aliases allow rules to be references by an alternative name.
      • When renaming rules, add a rule alias to avoid breaking references to the old rule name.
      • To specify an alias use the -Alias parameter or alias metadata property in YAML or JSON.
    • Added support for stable identifiers with rule refs. #881
      • A rule ref may be optionally be used to reference a rule.
      • Rule refs should be: stable, not changing between releases; opaque, as opposed to being a human-readable string. Stable and opaque refs ease web lookup and to help to avoid language difficulties.
      • To specify a rule ref use the -Ref parameter or ref metadata property in YAML or JSON.
    • Added new properties for module lookup to SARIF results. #951
    • Capture and output repository info in Assert-PSRule runs. #978
      • Added Repository.Url option set repository URL reported in output.
      • Repository URL is detected automatically for GitHub Actions and Azure Pipelines.
      • Added RepositoryInfo to Output.Banner option.
      • Repository info is shown by default.
    • Added convert and caseSensitive to string comparison expressions. #1001
      • The following expressions support type conversion and case-sensitive comparison.
        • startsWith, contains, and endsWith.
        • equals and notEquals.
    • Added convert to numeric comparison expressions. #943
      • Type conversion is now supported for less, lessOrEquals, greater, and greaterOrEquals.
    • Added Extent property on rules reported by Get-PSRule. #990
      • Extent provides the line and position of the rule in the source code.
    • Breaking change: Added validation of resource names. #1012
      • Invalid rules names will now produce a specific error.
      • See upgrade notes for more information.
  • Engineering:
    • Breaking change: Removal of deprecated default baseline from module manifest. #755
      • Set the default module baseline using module configuration.
      • See upgrade notes for details.
    • Breaking change: Require apiVersion on YAML and JSON to be specified. #648
      • Resources should use github.com/microsoft/PSRule/v1 as the apiVersion.
      • Resources that do not specify an apiVersion will be ignored.
      • See upgrade notes for details.
    • Breaking change: Prefer module sources over loose files. #610
      • Module sources are discovered before loose files.
      • Warning is shown for duplicate rule names, and exception is thrown for duplicate rule Ids.
      • See upgrade notes for details.
    • Breaking change: Require rule sources from current working directory to be explicitly included. #760
      • From v2 onwards, $PWD is not included by default unless -Path . or -Path $PWD is explicitly specified.
      • See upgrade notes for details.
    • Added more tests for JSON resources. #929
    • Bump Sarif.Sdk to 2.4.13. #1007
    • Bump PowerShellStandard.Library to 5.1.1. #999
  • Bug fixes:
    • Fixed object path handling with dash. #902
    • Fixed empty suppression group rules property applies to no rules. #931
    • Fixed object reference for suppression group will rule not defined. #932
    • Fixed rule source loading twice from $PWD and .ps-rule/. #939
    • Fixed rule references in SARIF format for extensions need a toolComponent reference. #949
    • Fixed file objects processed with file input format have no source location. #950
    • Fixed GitHub code scanning alerts treats pass as problems. #955
      • By default, SARIF output will only include fail or error outcomes.
      • Added Output.SarifProblemsOnly option to include pass outcomes.
    • Fixed SARIF output includes rule property for default tool component. #956
    • Fixed Invoke-PSRule hanging if JSON rule file is empty. #969
    • Fixed SARIF should report base branch. #964
    • Fixed unclear error message on invalid rule names. #1012

What's changed since pre-release v2.0.0-B2203045:

  • No additional changes.

v2.0.0-B2203045 (pre-release)#

What's changed since pre-release v2.0.0-B2203033:

  • General improvements:
    • Added convert to numeric comparison expressions. #943
      • Type conversion is now supported for less, lessOrEquals, greater, and greaterOrEquals.
    • Breaking change: Added validation of resource names. #1012
      • Invalid rules names will now produce a specific error.
      • See upgrade notes for more information.
  • Bug fixes:
    • Fixed unclear error message on invalid rule names. #1012

v2.0.0-B2203033 (pre-release)#

What's changed since pre-release v2.0.0-B2203019:

  • General improvements:
    • Added Extent property on rules reported by Get-PSRule. #990
      • Extent provides the line and position of the rule in the source code.
  • Engineering:
    • Bump Sarif.Sdk to 2.4.13. #1007
    • Bump PowerShellStandard.Library to 5.1.1. #999

v2.0.0-B2203019 (pre-release)#

What's changed since pre-release v2.0.0-B2202072:

  • General improvements:
    • Added convert and caseSensitive to string comparison expressions. #1001
      • The following expressions support type conversion and case-sensitive comparison.
        • startsWith, contains, and endsWith.
        • equals and notEquals.

v2.0.0-B2202072 (pre-release)#

What's changed since pre-release v2.0.0-B2202065:

  • General improvements:
    • Capture and output repository info in Assert-PSRule runs. #978
      • Added Repository.Url option set repository URL reported in output.
      • Repository URL is detected automatically for GitHub Actions and Azure Pipelines.
      • Added RepositoryInfo to Output.Banner option.
      • Repository info is shown by default.
  • Bug fixes:
    • Fixed SARIF should report base branch. #964

v2.0.0-B2202065 (pre-release)#

What's changed since pre-release v2.0.0-B2202056:

  • Bug fixes:
    • Fixed broken documentation links. #980

v2.0.0-B2202056 (pre-release)#

What's changed since pre-release v2.0.0-B2202024:

  • Bug fixes:
    • Fixed Invoke-PSRule hanging if JSON rule file is empty. #969

v2.0.0-B2202024 (pre-release)#

What's changed since pre-release v2.0.0-B2202017:

  • New features:
    • Added source expression property. #933
      • Included the following expressions:
        • source
        • withinPath
        • notWithinPath

v2.0.0-B2202017 (pre-release)#

What's changed since pre-release v2.0.0-B2202006:

  • Bug fixes:
    • Fixed GitHub code scanning alerts treats pass as problems. #955
      • By default, SARIF output will only include fail or error outcomes.
      • Added Output.SarifProblemsOnly option to include pass outcomes.
    • Fixed SARIF output includes rule property for default tool component. #956

v2.0.0-B2202006 (pre-release)#

What's changed since pre-release v2.0.0-B2201161:

  • General improvements:
    • Added new properties for module lookup to SARIF results. #951
  • Bug fixes:
    • Fixed rule references in SARIF format for extensions need a toolComponent reference. #949
    • Fixed file objects processed with file input format have no source location. #950

v2.0.0-B2201161 (pre-release)#

What's changed since pre-release v2.0.0-B2201146:

  • New features:
    • Added support for rule severity level. #880
      • Rules can be configured to be Error, Warning, or Information.
      • Failing rules with the Error severity level will cause the pipeline to fail.
      • Rules with the Warning severity level will be reported as warnings.
      • Rules with the Information severity level will be reported as informational messages.
      • By default, the severity level for a rule is Error.
    • Added expression support for type based assertions. #908
      • Included the following expressions:
        • IsArray
        • IsBoolean
        • IsDateTime
        • IsInteger
        • IsNumeric
    • Added support for formatting results as SARIF. #878
      • Set Output.Format to Sarif to output results in the SARIF format.
      • See about_PSRule_Options for details.

v2.0.0-B2201146 (pre-release)#

What's changed since pre-release v2.0.0-B2201135:

  • Engineering:
    • Breaking change: Require rule sources from current working directory to be explicitly included. #760
      • From v2 onwards, $PWD is not included by default unless -Path . or -Path $PWD is explicitly specified.
      • See upgrade notes for details.
  • Bug fixes:
    • Fixed rule source loading twice from $PWD and .ps-rule/. #939

v2.0.0-B2201135 (pre-release)#

What's changed since pre-release v2.0.0-B2201117:

  • Engineering:
    • Breaking change: Prefer module sources over loose files. #610
      • Module sources are discovered before loose files.
      • Warning is shown for duplicate rule names, and exception is thrown for duplicate rule Ids.
      • See upgrade notes for details.
    • Added more tests for JSON resources. #929
  • Bug fixes:
    • Fixed empty suppression group rules property applies to no rules. #931
    • Fixed object reference for suppression group will rule not defined. #932

v2.0.0-B2201117 (pre-release)#

What's changed since pre-release v2.0.0-B2201093:

  • General improvements:
    • Add option to disable invariant culture warning. #899

v2.0.0-B2201093 (pre-release)#

What's changed since pre-release v2.0.0-B2201075:

v2.0.0-B2201075 (pre-release)#

What's changed since pre-release v2.0.0-B2201054:

  • General improvements:
    • Added support for rule aliases. #792
      • Aliases allow rules to be references by an alternative name.
      • When renaming rules, add a rule alias to avoid breaking references to the old rule name.
      • To specify an alias use the -Alias parameter or alias metadata property in YAML or JSON.
    • Added support for stable identifiers with rule refs. #881
      • A rule ref may be optionally be used to reference a rule.
      • Rule refs should be: stable, not changing between releases; opaque, as opposed to being a human-readable string. Stable and opaque refs ease web lookup and to help to avoid language difficulties.
      • To specify a rule ref use the -Ref parameter or ref metadata property in YAML or JSON.
  • Bug fixes:
    • Fixed object path handling with dash. #902

v2.0.0-B2201054 (pre-release)#

What's changed since v1.11.0:

  • General improvements:
    • Added support for object path expressions. #808 #693
      • Inspired by JSONPath, object path expressions can be used to access nested objects.
      • Array members can be filtered and enumerated using object path expressions.
      • Object path expressions can be used in YAML, JSON, and PowerShell rules and selectors.
      • See about_PSRule_Assert for details.
    • Improve tracking of suppressed objects. #794
      • Added Execution.SuppressedRuleWarning option to output warning for suppressed rules.
  • Engineering:
    • Breaking change: Removal of deprecated default baseline from module manifest. #755
      • Set the default module baseline using module configuration.
      • See upgrade notes for details.
    • Breaking change: Require apiVersion on YAML and JSON to be specified. #648
      • Resources should use github.com/microsoft/PSRule/v1 as the apiVersion.
      • Resources that do not specify an apiVersion will be ignored.
      • See upgrade notes for details.

Last update: 2023-07-10