Private/ConvertTo-ParameterString.ps1
Function ConvertTo-ParameterString { <# .SYNOPSIS Converts bound parameters from called functions to a quoted string formatted to be supplied to the PACLI command line tool .DESCRIPTION Allows values supplied against PowerShell function parameters to be easily translated into a specifically formatted string to be used to supply arguments to native PACLI functions. Common Parameters, like Verbose or Debug, which may be contained in the array passed to this function are excluded from the output by default as they will not be interpreted by the PACLI utility and will result in an error. .PARAMETER boundParameters The $PSBoundParameters object from a PowerShell function. .PARAMETER doNotQuote Optional parameterNames that will be included int he output without "quotes" .PARAMETER NoVault Specify switch parameter to not include vault parameter in output string .PARAMETER NoUser Specify switch parameter to not include user parameter in output string .PARAMETER NoSessionID Specify switch parameter to not include sessionID parameter in output string .EXAMPLE $PSBoundParameters.getEnumerator() | ConvertTo-ParameterString #Outputs a string where the Key/Value pairs contained in PSBoundParameters #are converted into KEY="VALUE" .EXAMPLE $PSBoundParameters.getEnumerator() | ConvertTo-ParameterString -DoNotQuote thisParameter #Outputs a string where the Key/Value pairs contained in PSBoundParameters #are converted into KEY="VALUE" #and Key/Value pair for parameter $thisParameter #is converted into KEY=VALUE .NOTES AUTHOR: Pete Maan #> [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', 'Parameters', Justification = "False Positive")] [CmdLetBinding()] [OutputType('System.String')] param( [Parameter( Mandatory = $True, ValueFromPipeline = $True)] [hashtable]$boundParameters, [Parameter( Mandatory = $False, ValueFromPipeline = $False)] [array]$doNotQuote, [Parameter( Mandatory = $False, ValueFromPipeline = $False)] [switch]$NoVault, [Parameter( Mandatory = $False, ValueFromPipeline = $False)] [switch]$NoUser, [Parameter( Mandatory = $False, ValueFromPipeline = $False)] [switch]$NoSessionID ) Begin { $doNotQuote += "sessionID" $ValueTerminators = '^|$' $ValueTrue = '"True"' $ValueFalse = '"False"' $excludedParameters = [Collections.Generic.List[String]]@( [System.Management.Automation.PSCmdlet]::CommonParameters + [System.Management.Automation.PSCmdlet]::OptionalCommonParameters ) } Process { $boundParameters.Keys | ForEach-Object { #Create collection to hold parameters $Parameters = [Collections.Generic.List[String]]@() } { switch ($PSItem) { ( { $excludedParameters -Contains $PSItem }) { break } ( { $doNotQuote -NotContains $PSItem }) { $null = $Parameters.Add($($PSItem) + "=" + $(((($($boundParameters[$PSItem]) -replace $ValueTerminators, '"').ToString()).Replace($ValueTrue, "Yes")).Replace($ValueFalse, "No"))) break } ( { $doNotQuote -Contains $PSItem }) { $null = $Parameters.Add($($PSItem) + "=" + $($boundParameters[$PSItem])) break } } } { If ((-not ($NoSessionID.IsPresent)) -and $($Script:PV.sessionID)) { $null = $Parameters.Add("sessionID=" + $($Script:PV.sessionID)) } If ((-not ($NoVault.IsPresent)) -and $($Script:PV.vault)) { $null = $Parameters.Add("vault=" + '"' + $($Script:PV.vault) + '"') } If ((-not ($NoUser.IsPresent)) -and $($Script:PV.user)) { $null = $Parameters.Add("user=" + '"' + $($Script:PV.user) + '"') } } } End { #output parameter string $Parameters -join ' ' } } |