Join-String.ps1

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


<#
 
.DESCRIPTION
 Join String from Array
.EXAMPLE
Join-String (Get-Process) -Property id
.EXAMPLE
Get-Process | Join-String -Property id
.EXAMPLE
Join-String @(1..3)
.EXAMPLE
1..3 | Join-String
 
#>


param(
    [Parameter(Mandatory=$true,ValueFromPipeline=$true)]$InputObject,
    [string]$Property = 'Name',
    [string]$Delimiter = [System.Globalization.CultureInfo]::CurrentCulture.TextInfo.ListSeparator
)
Begin {
    $Objects = @()
}
Process {
    $Objects += $InputObject
}
End {
    if($Objects | Get-Member -Name $Property){
        ($Objects | % {$_.$Property}) -join $Delimiter
    } else {
        ($Objects | % {$_.ToString()}) -join $Delimiter
    }

}