Private/Test-sqmInteractiveSession.ps1

<#
.SYNOPSIS
    Prueft, ob die aktuelle Sitzung eine Rueckfrage an den Benutzer beantworten kann.
 
.DESCRIPTION
    Liefert $false, wenn der Prozess nicht interaktiv laeuft (Dienst, SQL-Agent-Job,
    geplanter Task) oder mit -NonInteractive gestartet wurde. Ein Read-Host haengt dort
    entweder endlos oder bricht mit einem Fehler ab - Funktionen, die nachfragen wollen,
    muessen in dem Fall stattdessen einen eindeutigen Fehler mit Handlungsanweisung werfen.
    Als eigene Funktion, damit Unit-Tests beide Pfade gezielt ansteuern koennen.
#>

function Test-sqmInteractiveSession
{
    [CmdletBinding()]
    [OutputType([bool])]
    param ()

    if (-not [Environment]::UserInteractive) { return $false }

    # Show-sqmToolGui: the console sits behind the form, a Read-Host there hangs the GUI unseen
    if ($script:sqmGuiActive) { return $false }

    # -NonInteractive darf abgekuerzt werden (-noni, -NonI ...), -match ist case-insensitiv
    $nonInteractive = [Environment]::GetCommandLineArgs() | Where-Object { $_ -match '^[-/]noni' }
    return (-not $nonInteractive)
}