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 Markdown
or configureOutput.Format
to output markdown. - To format as either detail or summary, use the
-As
parameter or configureOutput.As
.
- Use
- Added character case assertion helpers
IsLower
, andIsUpper
. #555IsLower
checks that all letters in a field value are lowercase.IsUpper
checks 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
. #555IsLower
checks that all letters in a field value are lowercase.IsUpper
checks 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 Markdown
or configureOutput.Format
to output markdown. - To format as either detail or summary, use the
-As
parameter 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
File
input type (-InputType File
) to scan for files without deserializing them. - Added
Input.PathIgnore
option to ignore files. - When using the
File
input type path specs in.gitignore
are ignored.
- Added
- Added
Get-PSRuleTarget
cmdlet 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.obsolete
property totrue
to flag a baseline as obsolete. - When an obsolete baseline is used, a warning will be generated.
- Set the
- Added file assertion helpers
FileHeader
, andFilePath
. #534FileHeader
checks for a comment header in the file.FilePath
checks 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
InputFileInfo
Type
property 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
. #534FileHeader
checks for a comment header in the file.FilePath
checks that a file path (optionally with suffixes) exist.
- Added file assertion helpers
- Engineering:
- Warn when deprecated
$Rule
properties 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.obsolete
property totrue
to 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
File
input type (-InputType File
) to scan for files without deserializing them. - Added
Input.PathIgnore
option to ignore files. - When using the
File
input type path specs in.gitignore
are ignored.
- Added
- Added
Get-PSRuleTarget
cmdlet 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
Reason
method to assertion results. #500- This new method, streamlines setting custom reasons particularly with formatted strings.
- The
Reason
method 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.In
unable to compare PSObject wrapped array items. #512
- Fixed
v0.19.0-B2007023 (pre-release)#
- Engine features:
- Added
Reason
method to assertion results. #500- This new method, streamlines setting custom reasons particularly with formatted strings.
- The
Reason
method 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
Csv
output format with summary forInvoke-PSRule
. #486
- Fixed
v0.18.0#
What's changed since v0.17.0:
- General improvements:
- Improved
Assert-PSRule
output formatting. #472- Added recommendation and reasons for
AzurePipelines
andGitHubActions
styles. - 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-PSRule
output formatting. #472- Added recommendation and reasons for
AzurePipelines
andGitHubActions
styles. - 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-PSRule
output formatting.- Added recommendation and reasons for
Client
andPlain
styles. #456
- Added recommendation and reasons for
- Added support for configuration of default module options. #459
binding
andconfiguration
options can be set to a default value.- Updated
New-PSRuleOption
parameter sets and help based on updates to module config.
- Added support for module fallback culture. #441
- Improved
- Bug fixes:
- Fixed resource schema to include
useQualifiedName
andnameSeparator
option. #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-PSRule
output formatting.- Added recommendation and reasons for
Client
andPlain
styles. #456
- Added recommendation and reasons for
- Added support for configuration of default module options. #459
binding
andconfiguration
options can be set to a default value.- Updated
New-PSRuleOption
parameter sets and help based on updates to module config.
- Added support for module fallback culture. #441
- Improved
- Bug fixes:
- Fixed resource schema to include
useQualifiedName
andnameSeparator
option. #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
-ResultVariable
to 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
v
in 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
v
in field value with$Assert.Version
. #429 - Fixed handling of warning action preference with
Assert-PSRule
. #428
v0.15.0-B2002019 (pre-release)#
- Added
-ResultVariable
to 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.UseQualifiedName
andBinding.NameSeparator
. - See
about_PSRule_Options
for details.
- Added options
- Added assertion method
HasJsonSchema
to check if a JSON schema is referenced. #398- See
about_PSRule_Assert
for usage details.
- See
- Added file content helper for reading objects from files. #399
- The method
GetContent
of$PSRule
can be used to read files as objects. - See
about_PSRule_Variables
for 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.UseQualifiedName
andBinding.NameSeparator
. - See
about_PSRule_Options
for details.
- Added options
- Added assertion method
HasJsonSchema
to check if a JSON schema is referenced. #398- See
about_PSRule_Assert
for usage details.
- See
- Added file content helper for reading objects from files. #399
- The method
GetContent
of$PSRule
can be used to read files as objects. - See
about_PSRule_Variables
for 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
-Full
switch toGet-PSRuleHelp
to 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
.psd1
files. #368PowerShellData
has been added toInput.Format
.- See
about_PSRule_Options
for details.
- Added custom rule data to results. #322
$PSRule.Data
can be used to set custom data during rule execution that is included in output.- See
about_PSRule_Variables
for 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
,Less
andLessOrEqual
. - Added semantic version assertion helper
Version
. - Added string affix assertion helpers
StartsWith
,EndsWith
andContains
. - See
about_PSRule_Assert
for 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
-Full
switch toGet-PSRuleHelp
to 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
,Less
andLessOrEqual
now 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
.psd1
files. #368PowerShellData
has been added toInput.Format
.- See
about_PSRule_Options
for details.
- Added numeric comparison assertion helpers. #374
- Added methods
Greater
,GreaterOrEqual
,Less
andLessOrEqual
. - See
about_PSRule_Assert
for 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.Data
can be used to set custom data during rule execution that is included in output.- See
about_PSRule_Variables
for 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
,EndsWith
andContains
. Seeabout_PSRule_Assert
for usage details.
- Added methods
- Added
WithReason
to append/ replace reasons from assertion result. #354
v0.12.0#
What's changed since v0.11.0:
- Engine features:
- General improvements:
- Important change: Added
$PSRule
generic context variable. #341- Deprecated
TargetName
,TargetType
andTargetObject
properties on$Rule
. - Use
TargetName
,TargetType
andTargetObject
on$PSRule
instead. - Properties
TargetName
,TargetType
andTargetObject
on$Rule
will be removed in the future. - Going forward
$Rule
will 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.Field
available in baselines to configure binding.
- Added new option
- Added parameter alias
-f
for-InputPath
. #340-f
was added toInvoke-PSRule
,Assert-PSRule
andTest-PSRuleTarget
cmdlets.
- Important change: Added
$PSRule
generic context variable. #341- Deprecated
TargetName
,TargetType
andTargetObject
properties on$Rule
. - Use
TargetName
,TargetType
andTargetObject
on$PSRule
instead. - Properties
TargetName
,TargetType
andTargetObject
on$Rule
will be removed in the future. - Going forward
$Rule
will 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
-All
option toExists
keyword. #331
v0.11.0#
What's changed since v0.10.0:
- General improvements:
- Added
-TargetType
parameter to filter input objects by target type. #176- This parameter applies to
Invoke-PSRule
,Assert-PSRule
andTest-PSRuleTarget
.
- This parameter applies to
- Added
- Bug fixes:
- Breaking change: Unprocessed object results are not returned from
Test-PSRuleTarget
by default. #318- Previously unprocessed objects returned
$True
, now unprocessed objects return no result. - Use
-Outcome All
to return$True
for 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
Markdown
input format in options schema. #315 - Added
-TargetType
parameter to filter input objects by target type. #176- This parameter applies to
Invoke-PSRule
,Assert-PSRule
andTest-PSRuleTarget
.
- This parameter applies to
- Breaking change: Unprocessed object results are not returned from
Test-PSRuleTarget
by default. #318- Previously unprocessed objects returned
$True
, now unprocessed objects return no result. - Use
-Outcome All
to return$True
for 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
DependsOn
information 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-PSRule
cmdlet to improve integration into CI processes. #290- Added
Output.Style
option 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
Hint
forRecommend
. #165- Use the
Recommend
keyword instead.
- Use the
What's changed since pre-release v0.10.0-B1910036:
- No additional changes.
v0.10.0-B1910036 (pre-release)#
- Added dependency
DependsOn
information 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
Hint
forRecommend
. #165- Use the
Recommend
keyword instead.
- Use the
v0.10.0-B1910025 (pre-release)#
- Fix
Get-PSRuleHelp
-Online in constrained language mode. #296 - Added
Assert-PSRule
cmdlet to improve integration into CI processes. #290- Added
Output.Style
option 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
Within
keyword. #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
baseline
options property has been renamed torule
. - The previous
configuration
property 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-PSRuleHelp
to include help within the current path by default. #197 - Fix can not serialize nested System.IO.DirectoryInfo property. #281
- Fix export of
Like
parameter forWithin
keyword. #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
baseline
options property has been renamed torule
. - The previous
configuration
property 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
Within
keyword. #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-Debug
in rule definitions. #146 - Added
Logging.LimitDebug
andLogging.LimitVerbose
options to limit logging to named scopes. #235
- Engine features:
- Added per object reason for failing rules. #200
- Keywords
Exists
,Match
,Within
andTypeOf
automatically add a reason when they fail. - Custom reason can be set for keywords
Exists
,Match
,Within
andTypeOf
with-Reason
. - Added
Reason
keyword to add to reason for custom logic. - Added wide output display for
Invoke-PSRule
which include the reason why rule failed.- To use wide output use the
-OutputFormat Wide
parameter.
- To use wide output use the
- Renamed
-Message
parameter to-Text
on theRecommend
keyword.- The
-Message
is an alias of-Text
and will be deprecated in the future.
- The
- Keywords
- Added assertion helper
$Assert
for extensibility. #250- Add built-in assertions for
HasField
,HasFieldValue
andNullOrEmpty
. - 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/RuleName
was 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
$Assert
for extensibility. #250- Add built-in assertions for
HasField
,HasFieldValue
andNullOrEmpty
. - 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/RuleName
was 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
,Within
andTypeOf
automatically add a reason when they fail. - Added
-Reason
parameter toExists
,Match
,Within
andTypeOf
keywords to allow a custom reason to be set. - Added
Reason
keyword to add to reason for custom logic. - Added wide output display for
Invoke-PSRule
which include the reason why rule failed.- To use wide output use the
-OutputFormat Wide
parameter.
- To use wide output use the
- Renamed
-Message
parameter to-Text
on theRecommend
keyword.- The
-Message
is an alias of-Text
and 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-Debug
in rule definitions. #146 - Added
Logging.LimitDebug
andLogging.LimitVerbose
options 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
DependsOn
parameter 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-PSRule
to return CSV formatted results. #169- To generate CSV results use the
-OutputFormat Csv
parameter. - Added
Output.Path
option to allow output to be saved directly to file. - Added
Output.Encoding
option configure encoding used to write to file. - By default, UTF-8 encoding without BOM is used.
Invoke-PSRule
cmdlet also provides a parameter-OutputPath
to write results to file.
- To generate CSV results use the
- Reordered cmdlet parameters to improve usage of frequently used parameters. #175
-Module
parameter will tab-complete with imported rule modules.
- Added culture support for PowerShell informational messages. #158
- A new
$LocalizedData
variable can be used within rule definitions.
- A new
- Added
-Not
switch toWithin
andMatch
keywords to allow negative comparison. #208 - Improve discovery of rule tags. #209
- Add wide format
-OutputFormat Wide
toGet-PSRule
to 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
$LocalizedData
variable can be used within rule definitions.
- A new
- Add
-Not
switch toWithin
andMatch
keywords to allow negative comparison. #208 - Improve discovery of rule tags. #209
- Add wide format
-OutputFormat Wide
toGet-PSRule
to 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
DependsOn
parameter 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-PSRule
to return CSV formatted results. #169- To generate CSV results use the
-OutputFormat Csv
parameter. - Added
Output.Path
option to allow output to be saved directly to file. - Added
Output.Encoding
option configure encoding used to write to file. - By default, UTF-8 encoding without BOM is used.
Invoke-PSRule
cmdlet also provides a parameter-OutputPath
to write results to file.
- To generate CSV results use the
- Reordered cmdlet parameters to improve usage of frequently used parameters. #175
-Module
parameter 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-PSRuleHelp
cmdlet.
- 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
Hint
keyword toRecommend
to align with rule documentation. #165- Use of
Hint
keyword is deprecated and will be removed in a future release. CurrentlyHint
is aliased toRecommend
for compatibility.
- Use of
- Breaking change: Changed rule properties to align with rule documentation. #164
- Rule
Synopsis
, is a brief summary of the rule andDescription
is a detailed purpose of the rule. Description:
metadata keyword used in comment help is nowSynopsis:
, use ofDescription:
will set synopsis. Description metadata keyword is deprecated and will be removed in a future update.- Output property
Message
on 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
Recommend
keyword andHint
alias. #171
v0.6.0-B190627 (pre-release)#
- Important change: Changed
Hint
keyword toRecommend
to align with rule documentation. #165- Use of
Hint
keyword is deprecated and will be removed in a future release. CurrentlyHint
is aliased toRecommend
for compatibility.
- Use of
- Breaking change: Changed rule properties to align with rule documentation. #164
- Rule
Synopsis
, is a brief summary of the rule andDescription
is a detailed purpose of the rule. Description:
metadata keyword used in comment help is nowSynopsis:
, use ofDescription:
will set synopsis. Description metadata keyword is deprecated and will be removed in a future update.- Output property
Message
on 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-PSRuleHelp
cmdlet.
- 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-PSRule
to return NUnit3 formatted results. #129- To generate NUnit3 results use the
-OutputFormat NUnit3
parameter.
- To generate NUnit3 results use the
- Added
Set-PSRuleOption
cmdlet to configure YAML options file. #135 - Added parameters to New-PSRuleOption to configure common options. #134
- Additional parameters are an alternative to using a
-Option
hashtable.
- Additional parameters are an alternative to using a
What's changed since pre-release v0.5.0-B190423:
- Fix schema conformance of
-OutputFormat NUnit3
to NUnit report schema. #141 - Fix PSRule options schema usage of additionalProperties. #136
v0.5.0-B190423 (pre-release)#
- Added support for
Invoke-PSRule
to return NUnit3 formatted results. #129- To generate NUnit3 results use the
-OutputFormat NUnit3
parameter.
- To generate NUnit3 results use the
- Added
Set-PSRuleOption
cmdlet to configure YAML options file. #135 - Added parameters to New-PSRuleOption to configure common options. #134
- Additional parameters are an alternative to using a
-Option
hashtable.
- 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
-InputPath
instead of using-InputObject
to handle serialized objects. #106-Format
is automatically detected for.yaml
,.yml
and.json
file extensions.
- Added
-OutputFormat
parameter to serialize output fromInvoke-PSRule
as 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
-TargetName
parameter on theHint
keyword 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
-InputPath
instead of using-InputObject
to handle serialized objects. #106-Format
is automatically detected for.yaml
,.yml
and.json
file extensions.
- Added
-OutputFormat
parameter 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
-TargetName
parameter on theHint
keyword has been removed. #81
v0.3.0#
What's changed since v0.2.0:
- Added support for pipelining with
Exists
,Within
,Match
andTypeOf
keywords #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.CaseSensitive
totrue
to 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
-TargetName
parameter of theHint
keyword has been deprecated #81-TargetName
parameter not longer sets the pipeline object TargetName and generates a warning instead.- The
-TargetName
will be completely removed in v0.4.0, at which time using the parameter will generate an error.
- Breaking change: Changed parameter alias for
-Path
from-f
to-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
-Path
from-f
to-p
#99
v0.3.0-B190231 (pre-release)#
- Added support for pipelining with
Exists
,Within
,Match
andTypeOf
keywords #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.CaseSensitive
totrue
to enable case-sensitivity.
- Binding ignores case by default. Set option
- Important change: The
-TargetName
parameter of theHint
keyword has been deprecated #81-TargetName
parameter not longer sets the pipeline object TargetName and generates a warning instead.- The
-TargetName
will 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
,Within
andMatch
keywords #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-PSRuleTarget
command to return an overall$True
or$False
after 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
,Within
andMatch
keywords #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-PSRule
cmdlet toTest-PSRuleTarget
which 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-PSRule
command to return an overall$True
or$False
after 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
-Not
toExists
keyword - Improved verbose logging of
Exists
,AllOf
,AnyOf
keywords and core engine - Breaking change: Renamed outcome filtering parameters to align to type name and increase clarity
Invoke-PSRule
has a-Outcome
parameter instead of-Status
-Outcome
supports values ofPass
,Fail
,Error
,None
,Processed
andAll
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-Tag
parameter withInvoke-PSRule
andGet-PSRule
- Added option to report rule summary using
-As
parameter ofInvoke-PSRule
#12
v0.1.0-B181212 (pre-release)#
- Initial pre-release.