Required/ConvertTo-PowershellEncodedString.ps1
function global:ConvertTo-PowershellEncodedString { param( $object ) $objectHasProperties = $object.Keys; $objectType = $object.GetType(); $objectIsArray = $objectType.ImplementedInterfaces.Contains([System.Collections.IList]); if ($objectHasProperties) { return "@{$(($object.Keys | ForEach-Object {"$_ = $(ConvertTo-PowershellEncodedString $object[$_])"}) -join ';')}"; } elseif ($objectIsArray) { return "@($(($object | ForEach-Object {ConvertTo-PowershellEncodedString $_}) -join ','))"; } else { if ($objectType -eq [String]) { return "'$object'" } return $object } } $string = "foo" $array = @(1,2,3) $object = @{ foo = "bar" } $objectWithArray = @{ foo = "bar" bar = @(1,2,3) } $objectWithObject = @{ foo = "bar" bar = @{ fur = "bur" } } Write-Output "String" ConvertTo-PowershellEncodedString $string Write-Output "Array" ConvertTo-PowershellEncodedString $array Write-Output "Object" ConvertTo-PowershellEncodedString $object Write-Output "ObjectWithArray" ConvertTo-PowershellEncodedString $objectWithArray Write-Output "ObjectWithObject" ConvertTo-PowershellEncodedString $objectWithObject |