为什么我无法从Cygwin运行PowerShell 2?

时间:2013-01-01 02:56:23

标签: powershell cygwin

我安装了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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

按预期为我工作。

enter image description here

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