
PowerShell プロファイルから、PowerShell が対話的に呼び出されたかどうかを検出することは可能ですか? 使用している人もいます$host.name
が、常に が返されるようですConsoleHost
。
答え1
これは、呼び出しプロセスが -NonInteractive パラメータを渡す限り機能する、$PROFILE に記述する非常にシンプルな方法です。すべての場合に機能するわけではありませんが、ダラスが上で述べたように、より複雑な方法もあります。この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
}