我安装了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
答案 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)
按预期为我工作。
您可能需要提供更多上下文,以了解为什么这不起作用。我能想到的唯一原因是-Version 2.0
param没有被传递给powershell。