【发布时间】:2017-06-17 10:09:15
【问题描述】:
目标是能够以尽可能少的仪式以非交互方式测试运行 PowerShell 脚本。 它故意在 CI 服务器上的运行方式与我交互式运行它时的运行方式不同,并且我想对其进行调试。理想情况下,我无需设置计划任务即可对此进行测试。命令行实用程序会很棒。
CI 服务器(TFS 构建,非交互式)和我的机器(交互式运行)之间的不同之处在于 [Environment]::UserInteractive 的值。当我在命令行输入powershell -c [Environment]::UserInteractive 时,我得到True 的预期。目标是能够键入 someutility powershell -c [Environment]::UserInteractive 并让它打印 False,就像它会在 TFS 构建下打印运行一样。
如果有人可以概述其工作原理,我愿意用 C++ 编写 someutility。我正在研究,但一个小时没有产生任何结果。每个人都已经在运行非交互式或想要启动交互式,而我正处于完全相反的情况。似乎应该有一种方法可以从非管理员命令行执行此操作,因为启动的进程应该具有相同的用户权限,但仅限于非交互式。
到目前为止,我可以使用计划任务并选择“无论用户是否登录都运行”来获得这种所需的[Environment]::UserInteractive = false 行为。但这很痛苦,我看不到非交互式标准输出,我知道这是可能的,因为 TFS 构建显示它是实时的。此外,计划任务在非交互式运行时不会结束,因此很难判断它何时完成。
【问题讨论】:
标签: windows interactive