Powershell — определить, запущен ли он в интерактивном режиме или нет

Powershell — определить, запущен ли он в интерактивном режиме или нет

Можно ли определить из профиля powershell, был ли powershell вызван интерактивно или нет? Я вижу, что некоторые люди используют, $host.nameно, похоже, он всегда возвращает ConsoleHost.

решение1

Вот очень простой метод, чтобы поместить ваш $PROFILE, который работает, пока вызывающий процесс передает параметр -NonInteractive. Он может не работать со всем, но, как Даллас упомянул выше, есть другие, более сложные методыэтот вопрос Stackoverflow.

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

Затем вы можете использовать эту переменную в своих скриптах, чтобы сделать что-то вродеудаление цветовых кодовиз выходных данных пакетного задания.

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

Связанный контент