just searched this again and found my own answer, but as a comment, adding as a response a few corrections / other input values, as well as a test to check to see if it works as expected:
Function ParseBool{ [CmdletBinding()] param( [Parameter(Position=0)] [System.String]$inputVal ) switch -regex ($inputVal.Trim()) { "^(1|true|yes|on|enabled)$" { $true } default { $false } } } Describe "ParseBool Testing" { $testcases = @( @{ TestValue = '1'; Expected = $true }, @{ TestValue = ' true'; Expected = $true }, @{ TestValue = 'true '; Expected = $true }, @{ TestValue = 'true'; Expected = $true }, @{ TestValue = 'True'; Expected = $true }, @{ TestValue = 'yes'; Expected = $true }, @{ TestValue = 'Yes'; Expected = $true }, @{ TestValue = 'on'; Expected = $true }, @{ TestValue = 'On'; Expected = $true }, @{ TestValue = 'enabled'; Expected = $true }, @{ TestValue = 'Enabled'; Expected = $true }, @{ TestValue = $null; Expected = $false }, @{ TestValue = ''; Expected = $false }, @{ TestValue = '0'; Expected = $false }, @{ TestValue = ' false'; Expected = $false }, @{ TestValue = 'false '; Expected = $false }, @{ TestValue = 'false'; Expected = $false }, @{ TestValue = 'False'; Expected = $false }, @{ TestValue = 'no'; Expected = $false }, @{ TestValue = 'No'; Expected = $false }, @{ TestValue = 'off'; Expected = $false }, @{ TestValue = 'Off'; Expected = $false }, @{ TestValue = 'disabled'; Expected = $false }, @{ TestValue = 'Disabled'; Expected = $false } ) It 'input <TestValue> parses as <Expected>' -TestCases $testCases { param ($TestValue, $Expected) ParseBool $TestValue | Should Be $Expected } }
source share