1

我安装了 PowerShell 3,我需要从 Cygwin 运行 PowerShell 2

$ PowerShell -Version 2
Windows PowerShell
Copyright (C) 2012 Microsoft Corporation. All rights reserved.

C:\Users\Michael> $host.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
3      0      -1     -1

但正如您所见,它仍在运行 PowerShell 3。

你有什么想法我做错了什么吗?

如果你好奇我为什么需要从 Cygwin 运行 PowerShell,那是因为我正在编写 git 挂钩。为了开发服务器端钩子,我编写了 PowerShell 脚本,由于上述问题,我无法使用我的断点技巧

UPD:我在 Windows 8 上使用 Cygwin 1.7.11 终端

UPD:我什至可以在两者之间运行 cmd 以确保正确传递参数

$ cmd
Microsoft Windows [Version 6.2.9200]
(c) 2012 Microsoft Corporation. All rights reserved.

C:\Users\Michael>PowerShell -Version 2
Windows PowerShell
Copyright (C) 2012 Microsoft Corporation. All rights reserved.

C:\Users\Michael> $host.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
3      0      -1     -1
4

2 回答 2

0

也许 Cygwin 没有像预期的那样将参数传递给 Powershell.exe?检查命令行 Powershell.exe 已被调用。您可以为此使用 Win32_Process WMI 类。为了避免与其他 Powershell 实例混淆,请同时获取进程和父进程 ID。使用相同的查询来获取 Cygwin 的 pid 或只使用任务管理器。像这样,

gwmi win32_process -filter "Name = 'powershell.exe'" | select commandline, processid, parentprocessid | ft -AutoSize
于 2013-01-02T06:44:33.597 回答
0

按预期工作。

在此处输入图像描述

您可能需要提供更多上下文来了解为什么这不起作用。我能想到的唯一原因是-Version 2.0参数没有被传递给powershell。

于 2013-01-02T17:36:45.987 回答