【问题标题】:How to capture output of Windows executable called from WSL如何捕获从 WSL 调用的 Windows 可执行文件的输出
【发布时间】:2022-01-21 15:48:02
【问题描述】:

由于某种原因,直接从 WSL 调用 Windows 可执行文件(powershell.exeping.exe 等)时按预期工作,将输出重定向到文件或尝试将结果存储在变量中失败。

到目前为止我所尝试的:

❯ powershell.exe 'Write-Host Fart!'
Fart!

❯ powershell.exe 'Write-Host Fart!' > file

❯ cat file

❯ output=$(powershell.exe 'Write-Host Fart!')

❯ echo $output

如您所见,该命令本身就可以工作。但结合重定向或命令替换它不起作用。


编辑:重新启动 Windows 解决了该问题。我认为在上一次会议中,我以某种方式搞砸了 WSL2 及其与 Windows 的互操作性。还注意到其他 Windows 可执行文件(如 clip.exe)停止工作。我无法将内容传送到 Windows 剪贴板。

现在我重新启动,一切又恢复了。以为我要疯了

--

编辑:关于我的系统的一些信息。

> [System.Environment]::OSVersion.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
10     0      19042  0

【问题讨论】:

  • 我可以先提供帮助不大(但希望能提供信息)“它对我有用”。我运行了你的命令,file 确实闻到了Fart! 的味道。与output= 版本相同。所以有些问题——(1)您的 Windows 版本/版本是什么? (2) 你使用的是什么发行版? (3) 如果你安装不同的发行版,是否也有同样的问题? (4) 从wsl -e bash --noprofile --norc 开始 - 问题是否仍然存在? --(提醒您可能不需要,但是)提醒将新信息编辑到问题中--谢谢!
  • @NotTheDr01ds,哇,我刚刚在重新启动计算机后再次尝试,现在它可以工作了。我觉得我的 WSL2 出了点问题。还注意到像 clip.exe 这样的工具在 WSL 中停止工作。现在一切都恢复正常了。指出它对你有用,绝对有帮助,谢谢
  • 酷 - 很高兴听到它这么简单。只是好奇——你是否试图用 Systemd、容器/命名空间、chroot 等做任何事情?这些是(除其他外)会干扰 Interop 套接字的东西。
  • 不,不是那样的。只是在我的 Ansible 剧本上工作。现在我想起来了wslview 也停止了工作并返回了某种我不记得了的错误。也许我可以重现这个问题

标签: bash shell windows-subsystem-for-linux wsl-2


【解决方案1】:

重新启动 Windows 解决了该问题。我认为在上一次会议中,我以某种方式搞砸了 WSL2 及其与 Windows 的互操作性。还注意到其他 Windows 可执行文件(如 clip.exe)停止工作。我无法将内容传送到 Windows 剪贴板。

现在我重新启动,一切又恢复了。以为我要疯了

【讨论】:

    猜你喜欢
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2010-12-14
    • 2023-03-24
    相关资源
    最近更新 更多