【发布时间】:2018-08-27 19:38:50
【问题描述】:
我有一个编排机制(bamboo 服务器),它将启动我的 ps1 脚本。
但是,它会在没有 powershell.exe 的 -noninteractive 参数的情况下启动脚本。
这反过来又使我的所有脚本停止并等待用户交互。
Atlassian 不想改变他们的启动机制,所以我想弄清楚我是否可以从“内部”以某种方式操纵我的 powershell 会话。
问题是这样的: 有什么方法可以让我的 powershell 会话在它已经启动时更改为“非交互模式”?
【问题讨论】:
-
我不知道这是否可能,但在您的脚本中,您可以简单地以非交互模式再次启动 PowerShell,为其指定您自己的脚本名称(加上一个参数以确保当然,这不会循环)。笨拙,它可能不适合 I/O 重定向,但这是一个想法。
-
我不明白这句话“这 [即,使用
-NonInteractive] 反过来会使我的所有脚本停止并等待用户交互。”-NonInteractive参数使 PowerShell 终止提示输入的脚本;它不会强制用户交互。 -
@Bill_Stewart "without" 诀窍是阅读上面的行:“但是它会在没有 powershell.exe 的 -noninteractive 参数的情况下启动脚本”
-
“脚本中的提示并导致它在不以交互方式运行时停止” 我们有大约 6 个模块,其中包含 > 400 个 cmdlet,我们每天都会更改这些模块。我们看到的是,当我们在某处添加一个参数并且在没有新参数的情况下调用调用链时,它只是停止了。这大约每周发生一次,我们用来查找它的时间量很大。相反,如果它只是抛出一个异常,我们将能够在调用堆栈中看到它。
-
在我的情况下,问题是竹子偶尔会在没有适当凭据的情况下将我的工作交给代理,并且登录尝试会失败并尝试提示(是的,这是代理功能问题,但构建应该'因为它而挂起)。从技术上讲,这也是 powershell “约定”的一个问题,它说提示是正确的做法,而不仅仅是错误(并且在该级别不使其成为可选)。