<# .SYNOPSIS Converts the specified value into a form to safle inject it into a script. .PARAMETER value The value to convert for injection. #> function ConvertTo-Injection { param( $Value ) "([System.Text.Encoding]::Default.GetString([System.Convert]::FromBase64String('$( [System.Convert]::ToBase64String([System.Text.Encoding]::Default.GetBytes($value)) )')))" } <# .SYNOPSIS Writes a PowerShell script to a specified location. .PARAMETER FileName The name of the file to write the script to. .PARAMETER Script The script to write to the file. .PARAMETER Replace A value indicating whether the file should be overwritten if it exists. .PARAMETER Append A value indicating whether the content should be appended if the file already exists. #> function Write-PSScript { param( [Parameter(Mandatory=$true)] [Parameter(ParameterSetName="Common")] [Parameter(ParameterSetName="Replace")] [Parameter(ParameterSetName="Append")] [string] $FileName, [Parameter(Mandatory=$true)] [Parameter(ParameterSetName="Common")] [Parameter(ParameterSetName="Replace")] [Parameter(ParameterSetName="Append")] [string] $Script, [Parameter(ParameterSetName="Replace", Mandatory=$true)] [switch] $Replace, [Parameter(ParameterSetName="Append", Mandatory=$true)] [switch] $Append ) Import-Module PSScriptAnalyzer; $dirName = Split-Path -Parent $FileName; $Script = ($Script -split "\r?\n") -join [System.Environment]::NewLine; $content = Invoke-Formatter -ScriptDefinition $Script; $exists = Test-Path -PathType Leaf $FileName; if (-not (Test-Path -PathType Container $dirName)) { $null = New-Item -ItemType Directory $dirName; } if ($exists -and ($Append.IsPresent)) { Add-Content -Force $FileName "`n$content"; } else { if ((-not $exists) -or $Replace.IsPresent) { Set-Content -Force $FileName $content; } else { Write-Host "The file ``$FileName`` already exists!"; } } }