Functions/Private/Remove-InvalidFileNameChars.ps1

<#
    .Synopsis
        Removes invalid characters from a file name.
    .DESCRIPTION
        Removes invalid characters from a file name.
    .EXAMPLE
        Remove-InvalidFileNameChars -Name '[MyFile]:*Name'
#>

Function Remove-InvalidFileNameChars {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true,
            Position = 0,
            ValueFromPipeline = $true,
            ValueFromPipelineByPropertyName = $true)]
        [string]$Name
    )
    $invalidChars = [IO.Path]::GetInvalidFileNameChars() -join ''
    $invalidChars += '{}' #I know these are allowed but I want to make my life easier
    $re = '[{0}]' -f [regex]::escape($invalidChars)
    $result = $Name -replace $re
    return ($result.replace('[', '').replace(']', ''))
}