Modules/businessdev.ALbuild.Core/Private/New-ALbuildNamedMutex.ps1

function New-ALbuildNamedMutex {
    # The one place a named mutex is created, so tests can make it fail.
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Justification = 'Opens an in-memory lock handle; nothing on disk changes.')]
    [CmdletBinding()]
    [OutputType([System.Threading.Mutex])]
    param([Parameter(Mandatory)] [string] $Name)
    return [System.Threading.Mutex]::new($false, $Name)
}