Mat*_*att 15 powershell pstools
剧本相当直接。只是尝试启动一堆 Windows 服务。在目标机器上执行本地工作正常。当通过 PsExec 完成时,该脚本实际上也能正常执行,直到我在 CMD 提示符下按“回车”键,它才会返回。这是一个问题,因为这是从 TeamCity 调用的,它使 Agent 挂起,等待 PsExec 返回。
我尝试了以下方法:
exit和exit 0< NUL根据此 SF 问题中的答案,在 PsExec 调用的末尾添加一个>标准输出重定向这就是我实际调用 psexec 的方式:
psexec \\target -u domain\username -p password powershell c:\path\script.ps1
Run Code Online (Sandbox Code Playgroud)
无论我做什么,它都会挂起,直到我在 cmd 提示符下本地。按回车后,我收到消息:
powershell exited on target with error code 0.
Run Code Online (Sandbox Code Playgroud)
Ven*_*zir 12
我知道答案来晚了,它本来已经被弄清楚了,否则它可能对未来的访问者有用。
STDIN 必须在 powershell 执行中重新定向,以便能够从挂起(这里它在 STDIN 中等待)。能够做到这一点使用 -inputformat none
powershell -inputformat none -File powershell_script.ps1 将工作。
Mat*_*att 11
事实证明这是一个常见的问题。在这里找到了解决方案。本质上,如果您使用 cmd 在 stdin 上传输一些数据,它将在执行后正确返回(因为它是通过 cmd 运行的,而不是 powershell)。
例子:
psexec \\target -u domain\username -p password cmd /c "echo . | powershell c:\path\script.ps1"
Run Code Online (Sandbox Code Playgroud)
小智 5
psexec \\target -u domain\username -p password -d powershell c:\path\script.ps1
Run Code Online (Sandbox Code Playgroud)
也解决了问题。
-d 不要等待应用程序终止。
仅用于非交互式应用程序。
| 归档时间: |
|
| 查看次数: |
41773 次 |
| 最近记录: |