Functions/Write-StringArray.ps1

function Write-StringArray {
<#
.SYNOPSIS
    Takes [string] or [string[]] input and writes the code that would create a string array with that information.
.DESCRIPTION
    Takes [string] or [string[]] input and writes the code that would create a string array with that information. Encloses strings in single quotes replacing any existing single quotes with 2 x single quotes.
.PARAMETER Text
    The text to be included in the string array
.PARAMETER VariableName
    The name of the string array variable
.PARAMETER ExcludeDollarSign
    Switch to exclude the dollar sign in front of the variable name. Useful when trying to create string array for *.psd1 files
.EXAMPLE
    Write-StringArray -Text Hello,World,"it's me"
 
    Would return
    $StringArray = @(
        'Hello',
        'World',
        'it''s me'
    )
.EXAMPLE
    1,2,99 | Write-StringArray -VariableName MyVariable
 
    Would return
    $MyVariable = @(
        '1',
        '2',
        '99'
    )
.EXAMPLE
    1,2,99 | Write-StringArray -VariableName MyVariable -ExcludeDollarSign
 
    Would return
    MyVariable = @(
        '1',
        '2',
        '99'
    )
.OUTPUTS
    [string[]]
#>


    #region Parameter
    [CmdletBinding(ConfirmImpact='None')]
    [OutputType('string')]
    Param(
        [Parameter(Mandatory,HelpMessage = 'Enter a series of values',Position = 0,ValueFromPipeline)]
        [string[]] $Text,

        [string] $VariableName = 'StringArray',

        [switch] $ExcludeDollarSign
    )
    #endregion Parameter

    begin {
        Write-Verbose -Message "Starting [$($MyInvocation.Mycommand)]"
        if ($ExcludeDollarSign) {
            $ReturnVal = "$VariableName = @(`n"
        } else {
            $ReturnVal = "`$$VariableName = @(`n"
        }
    }

    process {
        foreach ($CurLine in $Text) {
            $ReturnVal += " `'$($CurLine -replace "`'", "`'`'")',`n"
        }
    }

    end {
        $ReturnVal = $ReturnVal -replace ",`n$", "`n"
        $ReturnVal += ')'
        Write-Output -InputObject $ReturnVal
        Write-Verbose -Message "Ending [$($MyInvocation.Mycommand)]"
    }
}