Powershell: detecta si se ejecuta en modo interactivo o no

Powershell: detecta si se ejecuta en modo interactivo o no

¿Es posible detectar desde un perfil de PowerShell si PowerShell se ha invocado de forma interactiva o no? Veo que algunas personas lo usan $host.namepero parece que siempre regresa ConsoleHost.

Respuesta1

Aquí hay un método muy simple para ingresar su $PROFILE que funciona siempre que el proceso de llamada pase el parámetro -NonInteractive. Puede que no funcione con todo pero, como Dallas mencionó anteriormente, existen otros métodos más complejos enesta pregunta de Stackoverflow.

if ([Environment]::GetCommandLineArgs().Contains('-NonInteractive')) {
    $Global:InteractiveMode=$false
} else {
    $Global:InteractiveMode=$true
}

Luego puedes usar esa variable en tus scripts para hacer algo comoeliminando códigos de colorde la salida del trabajo por lotes.

if (-not $InteractiveMode) {
    # For PWSH 7.2+
    $PSStyle.OutputRendering = [System.Management.Automation.OutputRendering]::PlainText
}

información relacionada