Private/Get-ParameterString.ps1

Function Get-ParameterString{
Param(
    [Parameter(Mandatory = $True)]
    [AllowNull()]
    [hashtable]
    $Parameters
)


    $ParameterStrings = @()
    foreach ($Parameter in $Parameters.Keys){
        $ParameterValue = $Parameters[$Parameter]


        switch ($Parameters[$Parameter].GetType().Name){

            "Boolean"{
                $ParameterValue = $Parameters[$Parameter].ToString().ToLower()
            }

            default{
                $ParameterValue = $Parameters[$Parameter]
            }

        }

        if ($Parameters[$Parameter] -eq $null){
           throw ("Parameter '{0}' value is null" -f $Parameter)
        }

        if ($Parameter.Length -eq 1){
            $ParameterString = "-{0} `"{1}`"" -f $Parameter, $ParameterValue
        }
        else{
            $ParameterString = "--{0} `"{1}`"" -f $Parameter, $ParameterValue           
        }

        $ParameterStrings += $ParameterString

    }

    Return ($ParameterStrings -join ' ')

}