
Можно ли определить из профиля 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
}