【问题标题】:Execute powershell command remotely to run in the background远程执行powershell命令后台运行
【发布时间】:2021-12-22 23:51:57
【问题描述】:

我正在使用 ssh 连接到 Windows 机器并尝试执行命令以在后台运行。 在 ssh 建立后从终端运行以下命令:

start PowerShell.exe -ExecutionPolicy Unrestricted Invoke-Command -ScriptBlock{"cd C:\Users\myuser\AppData\Roaming\npm\node_modules\myserver\; npm start > log.log 2>&1"}

但我真正需要的是运行以下命令,但它不起作用:

ssh myuser@machine_ip "start PowerShell.exe -ExecutionPolicy Unrestricted Invoke-Command -ScriptBlock{\"cd C:\Users\myuser\AppData\Roaming\npm\node_modules\myserver\; npm start > log.log 2>&1\"}"

在没有“开始”的情况下运行第二个命令有效,但它“持有”终端。 如果有人可以告诉如何执行以下命令并使其在后台运行,基本上不必使用 powershell: cd C:\Users\myuser\AppData\Roaming\npm\node_modules\myserver\; npm start > log.log 2>&1

谢谢

【问题讨论】:

  • 为什么要使用invoke-command或powershell?
  • js2010,这根本不是强制性的,但这是我发送命令的方式。我找到了一种使用 'bat' 脚本和 psexec 绕过它的方法,但它也可以堆叠终端,例如:ssh myuser@machineIp psexec myscript.bat -d
  • @js2010 看我上面的评论
  • 终于找到了它的工作原理和解决方案-stackoverflow.com/questions/8675847/…

标签: windows powershell npm


【解决方案1】:

我无法测试这段代码,但 Invoke-Command 有一个名为 -asjob 的命令。

ssh myuser@machine_ip "start PowerShell.exe -ExecutionPolicy Unrestricted Invoke-Command -ScriptBlock{\"cd C:\Users\myuser\AppData\Roaming\npm\node_modules\myserver\; npm start > log.log 2>&1\"}" -AsJob

微软文档:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/invoke-command?view=powershell-5.1#example-8--run-a-background-job-on-several-remote-computers

【讨论】:

    猜你喜欢
    • 2021-05-10
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2012-04-28
    • 2018-05-27
    相关资源
    最近更新 更多