【问题标题】:interactive powershell from CygwinCygwin 的交互式 powershell
【发布时间】:2013-10-25 06:46:56
【问题描述】:

我无法在 Cygwin rxvt 或 mintty 终端中以交互方式运行 PowerShell.exe。似乎有任何使用 /dev/tty 的会话?还是 /dev/pts?伪终端设备。使用垃圾 Windows 控制台设备 /dev/console 或 /dev/cons 的实例?会工作的。

cygstart /bin/bash -li

在简陋的 Windows 命令提示符中启动控制台版本,这是我唯一可以获得交互式 PowerShell 的地方。

有效。 Rxvt 没有:

薄荷也不行:

echo -e | powershell.exepowershell.exe </dev/null我都试过了

我假设当我在 Stackoverflow 上看到有关此问题的答案时,他们正在使用 Console 的 ... 还是我遗漏了什么?

Why I cannot run PowerShell 2 from Cygwin? 似乎运行良好,只是在他想要 v2 时获得 powershell v3 ...希望我有这个问题。


我开发了一个 powershell 包装器,用于从 Cygwin 终端会话调用 powershell 脚本和命令,但无法使交互选项起作用(如果你不给包装器提供脚本或命令,那么你想进行交互)。有关包装脚本的信息,请参阅 https://bitbucket.org/jbianchi/powershell/wiki/。它适用于大多数 powershell.exe 调用,如果在 ps1 脚本的第一行中使用,它甚至可以起到“she-bang”的作用。

【问题讨论】:

  • 不禁想知道为什么你会想要这样做而不是编写一个 shell 脚本。我的意思是你已经在使用 IMO 比 PowerShell 强大得多的 bash。从 Cygwin Bash 启动 PowerShell 就像从 Eclipse 启动 VisualStudio。但我会反对。
  • 首先,我讨厌“你为什么需要这样做”的答案...看到其他人说“你为什么要这样做?”他/她的答案可能和你的一样,也可能不一样,但你终于发现有人在谈论同样的问题,而“答案”是“你为什么要那样做”!!!呜呜呜!!!但是好的,我会回答的......
  • 我有许多执行 vSphere/PowerCLI 内容的 powershell 脚本和许多执行 WinAD 调用(内置或 Quest 调用)的脚本。我希望我的 bash 脚本通过主机循环,以便能够调用 powercli 并在主机上设置 vmWare 属性,或者检查它作为 GuestOS 报告的内容或任何数量的东西。真正的答案:最好地使用工具来完成工作不是重点吗? Ruby、python、bash、perl、awk、... 为什么不使用 powershell?如果是 PowerShell,为什么不给我一个交互式 shell?
  • 是的,我有,但这是评论,而不是答案。但是由于您提到使用最好的工具,您还没有确定为什么 PowerShell 是最好的工具。基本上你有 PS 脚本,你不想转换成 Bash,但你仍然想使用 Bash。不管怎样,没关系,但不要假装它是最佳的。
  • 好的,必须同意 PS 不是最好的,但是如果你想编写脚本/自动化 Windows 管理员,它是唯一的答案(请让我们愉快地忘记 VisualBasic/JScript;)它不是最优的,我们'也在这里讨论如何通过 cygwin/mingw 在 bash shell 中调用 powershell。

标签: powershell cygwin


【解决方案1】:

今天,在 Cygwin bash 提示符下键入 powershell 就可以了。

【讨论】:

  • 同意。我认为自从 Win10 和 PS5.0 以及对控制台的改进(我认为他们做了 readline 和其他 linuxish 的事情)......它现在就可以工作了
【解决方案2】:

如果您需要在 cygwin/babun 中运行 powershell,请关注 https://code.google.com/p/mintty/issues/detail?id=56#c64 。 Bascilly,下载或编译https://github.com/rprichard/winpty,将其复制到您的 $PATH 然后运行

console.exe powershell

这也适用于在内部调用 powershell 的批处理脚本。

【讨论】:

  • 如果我不能在 Cygwin 中使用 RXVT,我会放弃 Windows 并转到 linux 桌面……但我必须支持 Windows 桌面。
【解决方案3】:

我找到的解决方案是使用http://sergeybelous.com/(主站点)Proxy32proxywinconsole.exe 程序。如果该程序在路径中,我的poweshell.bash wrapper 将调用它,这将让您与 PowerShell 交互工作。

【讨论】:

【解决方案4】:

首先在您的系统中安装 cygwin。 在 powershell 终端上键入 bash 之后,您可以访问 cygwin 终端。

PS C:\Users\username\1and1> bash
username@LWMT-14R25Q2:/mnt/c/Users/username/1and1$

【讨论】:

    【解决方案5】:

    恐怕我无法回答您的问题,但也许我可以在您的道路上进一步帮助您:

    我相信这与这个问题有关,正如在 MinTTY Issue #56 上所讨论的那样。 它非常详细地介绍了常见的 cmd.exe shell 应用程序如何工作和交互,并详细说明了使用其 TTY 抽象层的常见 unix 应用程序与 Windows 命令行应用程序的工作方式有何不同。

    【讨论】:

      【解决方案6】:

      在 Cygwin minty 上运行 powershell 的脚本:

      blahblah@blahblahbin $ cat pwrshl
      #!/usr/bin/bash if [[ ! -f "$1" ]] then
              echo "Usage: $0 <PowerShellScriptFile>"
              exit fi
      
      echo "\n" | powershell -Command "& {$(<$1)}"
      

      【讨论】:

      • 这是一个怎样的答案?我的全部观点是,当你不给它一个需要交互的脚本时,这是不起作用的部分。您的脚本检查是否有给定的 arg 并且没有运行...您错过了重点!阅读问题并注意它说“交互式”!
      猜你喜欢
      • 2014-11-15
      • 2023-04-05
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多