
¿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.name
pero 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
}