Join-String.ps1

<#PSScriptInfo
 
.VERSION 1.1
 
.GUID e76c02b2-9bba-4f5f-8f00-4016d954ce4e
 
.AUTHOR saw-friendship
 
.COMPANYNAME
 
.COPYRIGHT
 
.TAGS Join String Pipeline
 
.LICENSEURI
 
.PROJECTURI
 
.ICONURI
 
.EXTERNALMODULEDEPENDENCIES
 
.REQUIREDSCRIPTS
 
.EXTERNALSCRIPTDEPENDENCIES
 
.RELEASENOTES
 
 
 
 
 
FormatString
 
 
 
UseCulture
 
#>


<#
 
.DESCRIPTION
 Join String from Array
.EXAMPLE
Join-String (Get-Process | select -f 3) -Property id
5892;18344;4992
.EXAMPLE
Get-Process | select -f 3 | Join-String -Property id
5892;18344;4992
.EXAMPLE
Join-String @(1..3)
1;2;3
.EXAMPLE
1..3 | Join-String
1;2;3
.EXAMPLE
1..3 | Join-String -Separator ',' -SingleQuote
'1','2','3'
.EXAMPLE
Get-Process | select -l 3 | Join-String -Property id -SingleQuote -OutputPrefix '"' -OutputSuffix '"'
"'11384';'15324';'13624'"
#>


param(
     [Parameter(Mandatory=$false,ValueFromPipeline=$true)]$InputObject
    ,[String]$Property = 'Name'
    ,[String][alias('Delimiter')]$Separator = ([System.Globalization.CultureInfo]::CurrentCulture).TextInfo.ListSeparator
    ,[String]$OutputPrefix
    ,[String]$OutputSuffix
    ,[Switch]$SingleQuote
    ,[Switch]$DoubleQuote
    ,[CultureInfo]$Culture = [System.Globalization.CultureInfo]::CurrentCulture
)
Begin {
    $Objects = @()
    if ($SingleQuote) {[String]$qs = "'"} else {[String]$qs = ''}
    if ($DoubleQuote) {[String]$qd = '"'} else {[String]$qd = ''}
}
Process {
    $Objects += $InputObject
}
End {
    if($Objects | Get-Member -Name $Property){
        $OutputPrefix + (($Objects | % {$qd+$qs+$_.$Property+$qs+$qd}) -join $Separator) + $OutputSuffix
    } else {
        $OutputPrefix + (($Objects | % {$qd+$qs+$_.ToString($Culture)+$qs+$qd}) -join $Separator) + $OutputSuffix
    }

}