我有一个可以手动运行或可以通过计划任务运行的脚本。我需要以编程方式确定我是在非交互模式(通过计划任务运行时设置)还是正常模式下运行。我用谷歌搜索了一下,我能找到的最好的方法是添加命令行参数,但我没有任何可行的方法来处理计划任务,也不能合理地期望用户在运行它时添加参数手动。
非交互模式是否设置某种变量或我可以在脚本中检查的内容?
编辑:
我实际上无意中回答了我自己的问题,但我将其留在这里供后代使用。
我在脚本中插入了一个读取主机来向用户询问某些内容,当它以非交互模式运行时,繁荣,终止错误。将其放入 try/catch 块中,并根据我所处的模式执行操作。
不是最漂亮的代码结构,但它可以工作。如果还有人有更好的方法欢迎补充!
我不喜欢任何其他答案作为完整的解决方案。[Environment]::UserInteractive
报告用户是否是交互式的,而不是具体报告进程是否是交互式的。该 API 对于检测您是否在服务内运行非常有用。这是我处理这两种情况的解决方案:
function Assert-IsNonInteractiveShell {
# Test each Arg for match of abbreviated '-NonInteractive' command.
$NonInteractive = [Environment]::GetCommandLineArgs() | Where-Object{ $_ -like '-NonI*' }
if ([Environment]::UserInteractive -and -not $NonInteractive) {
# We are in an interactive shell.
return $false
}
return $true
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)