gpt4 book ai didi

非交互模式的 Powershell 测试

转载 作者:行者123 更新时间:2023-12-03 13:20:23 26 4
gpt4 key购买 nike

我有一个可以手动运行或由计划任务运行的脚本。我需要以编程方式确定我是在 -noninteractive 模式(通过计划任务运行时设置)还是正常模式下运行。我已经用谷歌搜索了,我能找到的最好的方法是添加一个命令行参数,但我没有任何可行的方法来处理计划任务,也不能合理地期望用户在运行时添加参数手动。
非交互模式是否设置了某种变量或我可以在脚本中检查的内容?

编辑:
我实际上无意中回答了我自己的问题,但我将它留在这里以供后代使用。

我在脚本中插入了一个读取主机来询问用户一些事情,当它在非交互模式下运行时,繁荣,终止错误。将它卡在 try/catch 块中,并根据我所处的模式执行操作。

不是最漂亮的代码结构,但它有效。如果其他人有更好的方法,请添加它!

最佳答案

您可以使用 Get-WmiObject 检查如何调用 powershell。对于 WMI 对象:

(gwmi win32_process | ? { $_.processname -eq "powershell.exe" }) | select commandline

#commandline
#-----------
#"C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe" -noprofile -NonInteractive

更新:2020-10-08

Starting in PowerShell 3.0, this cmdlet has been superseded by Get-CimInstance


(Get-CimInstance win32_process -Filter "ProcessID=$PID" | ? { $_.processname -eq "pwsh.exe" }) | select commandline

#commandline
#-----------
#"C:\Program Files\PowerShell\6\pwsh.exe"

关于非交互模式的 Powershell 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9738535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com