Functions/ConvertTo-Binary.ps1

function ConvertTo-Binary {
<#
.SYNOPSIS
    Convert an integer or array of integers to binary
.DESCRIPTION
    Convert an integer or array of integers to binary
.PARAMETER Number
    An array of integers that you want converted to binary
.PARAMETER MinimumWidth
    Minimum number of characters that the binary representation will be. The binary number could be longer than the minimum width. Aliased to 'Width'.
.PARAMETER IncludeInput
    Switch indicating that you want the input to be included in the output
.EXAMPLE
    ConvertTo-Binary -Number 23
 
    10111
.EXAMPLE
    ConvertTo-Binary -Number 32,0xff -IncludeInput
 
    Number Binary
    ------ ------
        32 100000
       255 11111111
.EXAMPLE
    ConvertTo-binary -Number 32,0xff -IncludeInput -MinimumWidth 16
 
    Number Binary
    ------ ------
        32 0000000000100000
       255 0000000011111111
.NOTES
    Changed to use unsigned 64 bit values so that larger numbers can be processed
#>


    #region Parameter
    [CmdletBinding(ConfirmImpact = 'Low')]
    [OutputType('string')]
    Param(
        [Parameter(Mandatory,HelpMessage='Enter an integer value(s)', Position = 0, ValueFromPipeline)]
        [uint64[]] $Number,

        [ValidateRange(1,255)]
        [Alias('Width')]
        [int] $MinimumWidth,

        [switch] $IncludeInput
    )
    #endregion Parameter

    begin {
        Write-Verbose -Message "Starting [$($MyInvocation.Mycommand)]"
    }

    process {
        foreach ($curNumber in $Number) {
            $ReturnVal = [convert]::ToString($curNumber, 2)
            if ($MinimumWidth) {
                $ReturnVal = $ReturnVal.PadLeft($MinimumWidth, '0')
            }
            if ($IncludeInput) {
                New-Object -TypeName psobject -Property ([ordered] @{
                        Number = $curNumber
                        Binary = $ReturnVal
                    })
            } else {
                Write-Output -InputObject $ReturnVal
            }
        }
    }

    end {
        Write-Verbose -Message "Ending [$($MyInvocation.Mycommand)]"
    }
}