Private/ConvertTo-SDSafeFileName.ps1

function ConvertTo-SDSafeFileName {
    <#
    .SYNOPSIS
        Replaces characters that are invalid in file names (on any platform) with '_'.
    #>

    [CmdletBinding()]
    [OutputType([string])]
    param(
        [Parameter(Mandatory = $true)]
        [string]$Name
    )

    $invalid = [IO.Path]::GetInvalidFileNameChars() + [char[]]'<>:"/\|?*'
    $builder = New-Object -TypeName System.Text.StringBuilder
    foreach ($char in $Name.ToCharArray()) {
        if ($invalid -contains $char) { [void]$builder.Append('_') } else { [void]$builder.Append($char) }
    }
    $builder.ToString()
}