我在运行PowerShell版本2的服务器上:
PS C:\> $PSVersionTable
Name Value
---- -----
...
PSVersion 2.0
然后我创建一个新的远程会话到另一台计算机并连接它:
$sess = New-PSSession -ComputerName {ComputerName} -Credential $credential
它给我返回了结果:
PS C:\> Invoke-Command -Session $sess -ScriptBlock { $PSVersionTable }
Name Value
---- -----
...
PSVersion 3.0
不过,我的脚本需要Powershell版本为2,因此我进入了一个会话(这样做更方便)。然后,我尝试将Powershell版本切换为2:
C:\> Enter-PSSession -Session $sess
[{ComputerName}]: PS C:\> Powershell -Version 2
Windows Powershell
Copyright (C) 2009 Microsoft Corporation. All rights reserverd
然后它就挂了(或至少在我按Ctrl-C之前不会让我在控制台中输入任何其他内容)。
我还尝试通过Invoke-Command进行操作:
PS C:\> Invoke-Command -Session $sess -ScriptBlock { Powershell -version 2 }
它做了同样的事情。
我还尝试按照此处的说明注册PSSessionConfiguration:https://technet.microsoft.com/en-us/library/hh847899.aspx
PS C:\> Register-PSSessionConfiguration -Name PS2 -PSVersion 2.0
但我得到的是:
Register-PSSessionConfiguration: a parameter cannot be found that matches parameter name 'PSVersion'.
有没有人有任何想法,我可以尝试一下?!谢谢
Register-PSSessionConfiguration
命令?是在你的电脑上还是在“服务器”上?服务器的操作系统是什么?我刚刚尝试了 Technet 文章中的步骤,它完美地工作了。我的 2008 服务器远程连接到我的运行 2.0 PSSessionConfiguration 的 Windows 7 机器。你是否尝试过针对不同的服务器或主机进行此操作? - Matt