pf-Pson.ps1
function ConvertFrom-Pson { param ( [Parameter(ValueFromPipeline=$true)] [string]$value, [switch]$ForceOrderedHashTables ) process { # Ensure Hashtables are ordered so items wonn't change order when updating the file if ($ForceOrderedHashTables) { $value = $value.Replace('[ordered]@{','@{').Replace('@{','[ordered]@{') } $sb = [scriptblock]::Create($value) $result = $sb.InvokeReturnAsIs() return $result } } function ConvertTo-Pson { [CmdletBinding()] param ( [Parameter(ValueFromPipeline=$true)] $data ) process { $result = ConvertTo-Expression.ps1 $data -IndentChar ' ' -Indentation 2 # Remove unnecesary quotes on Hashtable keys $pretty = $result -replace '(?smi)(?<s>^|@{)(?<ident>\s*)''(?<name>\w+)''\s*=', { $_.Groups['s'].value + $_.Groups['ideConvertTo-Expressionnt'].value + $_.Groups['name'].value + " =" } return $pretty } } #Import-Script_AsModule -ScriptName ConvertTo-Expression -Global ` # -RequiredVersion 3.3.9 # -WhenNotDefined ConvertTo-Expression |