Scripting. Powershell, VMware, Windows, Active Directory & Exchange. All that kind of stuff…..
RSS icon Email icon Home icon
  • PowerShell Quick Tip: Converting a String to a Boolean Value

    Posted on May 4th, 2012 Jonathan Medd 2 comments

    Some PowerShell cmdlets include switch parameters, i.e. no arguments are typically supplied to them – they are either True / On when they are present and False / Off when they are not. However, it is also possible to explicitly specify them with $true and $false, e.g.

    -switchparameter:$true  or

    -switchparameter:$false

    Typically you would not use this when working manually at the console, but what if you needed to automate a task using a switch parameter and set it to be On or Off based on values from a CSV or XML file, i.e. you supply the true or false as a string?

    This can lead to some initially confusing behaviour; look at this example.

    
    $persistent = “False”
    
    [boolean]$persistent
    
    

    PowerShell appears to have converted our ‘false’ string to a Boolean ‘true’, not what we were expecting! This is because PowerShell will convert any string greater than 0 characters to a Boolean ‘true’, behaviour which is consistent across other programming languages.

    So there are a couple of ways round this, either change your data to an empty string (which may not be possible of course)….

    
    $persistent = “”
    
    [boolean]$persistent
    
    

    or use the .Net System.Convert ToBoolean method:

    
    $persistent = “False”
    
    [System.Convert]::ToBoolean($persistent)
    
    

    Looking at a practical example of how you might use this take a look at working with one of the Citrix XenDesktop providers to create a Hypervisor Connection (more on this topic to come)

    
    New-Item -Path xdhyp:\Connections –Name $Name –HypervisorAddress $HypervisorAddress –UserName $UserName –Password $Password –ConnectionType $ConnectionType –Persist: ([System.Convert]::ToBoolean($persistent))
    
    

    A more detailed explanation of this topic is well written up by Kirk Munro

    http://poshoholic.com/2007/09/13/essential-powershell-beware-of-promiscuous-types/

     

    2 responses to “PowerShell Quick Tip: Converting a String to a Boolean Value” RSS icon


    Leave a reply