我有很多脚本按计划任务运行.因此,他们$host.setshouldexit(1)对任何失败都做了一次失败,它在任务调度程序中显示为返回码.
我还希望能够在调试和测试时以交互方式运行这些脚本.所以$host.setshouldexit()杀死我的powershell或ISE会话.
我的问题是:如何检测脚本是否以非交互方式运行?如果是,那么我将使用setshouldexit,否则它将打印错误代码或非破坏性的东西.(请注意,我不想使用,[environment]::userinteractive因为这些脚本并不总是在操作系统认为是非交互式会话中运行.)
我正在使用一个非交互式开关来执行计划任务.有什么方法可以从powershell查询吗?
该$Host.SetShouldExit方法不是必需的,实际上是不一致的,具体取决于您调用脚本的方式.使用关键字exit可以获得退出状态.
使用powershell -F script.ps1:
exit - 工作SetShouldExit - 忽略了使用powershell -c '.\script.ps1':
exit - 状态分别降至0或1,表示脚本成功或失败.SetShouldExit - 以正确状态退出,但脚本中的剩余行仍然运行.使用powershell -c '.\script.ps1; exit $LASTEXITCODE'[ 1 ]:
exit - 工作SetShouldExit - 退出状态== 0,脚本中的剩余行仍然运行.直接从powershell(> .\script.ps1)调用:
exit - 工作SetShouldExit - 终止以给定退出状态调用powershell主机