【问题标题】:Attach to running program with powershell使用 powershell 附加到正在运行的程序
【发布时间】:2017-05-11 11:59:55
【问题描述】:

我有一个运行 Windows 10 IoT 的 Raspberry Pi v2,并尝试在其上运行 dotnet 2.0 控制台应用程序。

我有一个 powershell 脚本在启动时启动它,但是我没有从中获得控制台输出。我想知道是否有一种方法可以在我的计算机上使用 powershell 连接到正在运行的进程,就像您连接到 docker 容器一样,以获取控制台输出。

我不想在我的计算机上运行我的程序,而 Raspberry Pi 是我唯一想在夜间运行程序的计算机。

【问题讨论】:

    标签: c# powershell windows-iot-core-10


    【解决方案1】:

    如果您不能或不想重新启动您的应用程序

    在这种情况下,您受到了很大的限制,因为正如 Harry Johnston 在另一个 SE Answer 中所述:

    Windows 不提供任何机制来追溯提供另一个 如果创建时没有标准输出句柄,则处理它。 (此外,在大多数情况下,应用程序会检查标准输出 仅在启动期间处理。)

    如果您需要阅读已经写入控制台的内容,您可能不走运。 但是,您应该能够通过使用调试工具附加到进程来获得任何 future 输出。 在Visual Studio Remote Debugger 的情况下,这甚至可以让您调试控制台应用程序的执行,如果您编写了它

    Superuser.com 上的accepted answer 表明StraceNT 也能够读取正在运行的控制台应用程序的输出。如果运行的应用程序不是您自己编写的,这可能是您最好的选择。

    如果应用程序可以停止和重新启动

    Powershell Remoting 可能是最好的方法。

    您需要在 Raspberry Pi 上使用 enable Powershell Remoting,然后您可以在本地 Powershell 控制台中使用 enter-pssession [RaspberryPi-Hostname-or-IP] 连接到您的 Raspberry Pi。

    此时,您可以像在本地计算机上运行一样启动控制台应用程序,并获得所需的所有控制台输出。

    无需附加任何东西。

    【讨论】:

    • 这是个好主意,但是我的 Raspberry pi 已经在运行程序,所以即使在我关闭启动进程的 powershell 窗口之后,我也可以从正在运行的进程中获取控制台输出。跨度>
    • 你的回答很好,但我可能会使用文本文件
    【解决方案2】:

    您可以将控制台应用程序的输出重定向到当前目录中的 txt 文件。如果你从 powershell 运行控制台应用程序,你可以这样做:

    .\[YOURAPP].exe | tee test.txt
    

    您可以从Windows file sharing 访问 test.txt。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多