6

我正在尝试将我的一些常规 shell 操作从 PowerShell 转移到 Cygwin,主要是作为一种教育练习,但也因为我真的开始喜欢一些 Linux 风格的工具。我仍在尝试如何列出/操作 Windows 服务。PowerShell为此提供了一些非常方便的工具,例如:

stop-service [pattern]
start-service [pattern]
gsv (or get-service) [pattern]

我最近使用了很多自定义服务,并且希望在我的常规工作流程中不必切换到 PowerShell 来执行此操作。有没有人解决这个问题?谷歌的几次尝试都被很多关于如何处理 Cygwin 作为服务运行的东西所阻碍。

4

2 回答 2

7

从 Cygwin 中调用 PowerShell 命令:

cmd /c '%SystemRoot%\\system32\\WindowsPowerShell\\v1.0\\powershell.exe' -Command "gsv"

更通用的解决方案是创建一个脚本powershell.sh,其中包含:

#!/bin/bash
set -e
set -u
cmd /c '%SystemRoot%\\system32\\WindowsPowerShell\\v1.0\\powershell.exe' -Command "$@"

之后您可以运行:./powershell.sh gsv或您需要的任何命令。

于 2012-04-25T13:36:40.963 回答
0

从 Cygwin 中调用 PowerShell,而不调用 CMD.exe。

使用 PowerShell 6.x Core 的pwsh命令,我们终于在 perl、ruby、python 等的脚本库中拥有了 powershell 作为另一个工具。

当前版本的 powershell 可以用作 shebang,而不会出现 ```#!pwsh` 问题。PS2 的旧 Win7 版本与 DOS 控制台绑定在一起,因此您必须制作一个包装器并在 she-bang 行中调用该包装器。

于 2013-10-25T06:37:35.567 回答