Skip to main content

PSFValidateScript

Synopsis

Describes how to use the [PSFValidateScript()] validation attribute.

Description

The [PSFValidateScript()] can be used to run a test script against any input object. If the return value of that scriptblock is $true, the validation is successful.

The error message can be custom tailored in order to be more user friendly.

Note: Validation attributes will be executed after type coercion. So expect to work with the expected input type.

Example

[CmdletBinding()]
param (
[PSFValidateScript({ Test-Path $_ })]
[string]
$Path
)

This will validate the input object as an existing path.

The error message will expect the user to understand the scriptblock.

[CmdletBinding()]
param (
[PSFValidateScript({ Test-Path $_ }, ErrorMessage = "Error procesing {0} - the path must exist")]
[string]
$Path
)

This will validate the input object as an existing path.

The error message will tell the user that it accepts only a existing paths and report the value that has been specified.

[CmdletBinding()]
param (
[PSFValidateScript('MyModule.Script.TestDomainController', ErrorString = "MyModule.Validation.NotADomainController")]
[string]
$DomainController
)

This executes the scriptblock registered under the name 'MyModule.Script.TestDomainController' (registered by using the command Set-PSFScriptBlock). If validation fails, it will then show the localized message registered under the name 'MyModule.Validation.NotADomainController' (registered by using the command Import-PSFLocalizedString).

Properties

Name:       ScriptBlock
Positional: True
Named: False

The scriptblock to execute to validate the input object.

Mutually exclusive with ScriptBlockName!

Name:       ScriptBlockName
Positional: True
Named: False

The name of a scriptblock registered with Set-PSFScriptblock. This allows the user to keep complex scriptblocks outside of the validation attribute itself, making the parameter block more neat.

Mutually exclusive with ScriptBlock

Name:       ErrorMessage
Positional: False
Named: True

The message to write when the scriptblock does not return $true for the input. This text will be formatted using the default string formatter, inserting the original input into {0} and the scriptblock into {1} if present.

Name:       ErrorString
Positional: False
Named: True

The name of a localized string to use to write a localized error message when the scriptblock does not return $true for the input. This text will be formatted using the default string formatter, inserting the original input into {0} and the scriptblock into {1} if present.

The name needs to be module-qualified. For example "MyModule.Validation.PathNotExist" rather than just "Validation.PathNotExist" as would be the case on Write-PSFMessage.

Mutually exclusive with ErrorMessage