Hide-GitHubOutput.ps1

function Hide-GitHubOutput
{
    <#
    .Synopsis
        Masks output
    .Description
        Prevents a message from being printed in a GitHub Workflow log.
    .Example
        Hide-GitHubOutput 'IsItSecret?'
        'IsItSecret?' | Out-Host
    .Link
        Write-GitHubOutput
    .Link
        https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions
    #>

    [OutputType([string])]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSAvoidUsingWriteHost", "",
        Justification="Directly outputs in certain scenarios")]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute("Test-ForUnusableFunction", "",
        Justification="Directly outputs in certain scenarios")]
    param(
    # The message to hide. Any time this string would appear in logs, it will be replaced by asteriks.
    [Parameter(Mandatory,Position=0,ValueFromPipelineByPropertyName)]
    [string]
    $Message
    )

    process {
        #region Write or output the GitHub add-mask command.
        $out = "::add-mask::$Message"
        if ($env:GITHUB_WORKFLOW -and $DebugPreference -eq 'SilentlyContinue') {
            Write-Host $out
        } else {
            $out
        }
        #endregion Write or output the GitHub add-mask command.
    }
}