我正在尝试远程执行Powershell命令,我的问题是使用的Powershell是版本4.0,并且我想使用Powershell Core 6.0.4远程执行命令。
我试图在远程主机上使用此命令
Set-PSSessionConfiguration -name microsoft.powershell -psversion 6.0 -FORCE
并收到此错误:
Set-PSSessionConfiguration : Cannot bind parameter 'PSVersion' to the target. Exception setting "PSVersion": "The
value 6.0 is not valid for the PSVersion parameter. The available values are 2.0,3.0 and 4.0."
我在远程计算机上安装了6.0.4版本。
我知道它使用版本4执行我的远程命令,因为
Invoke-Command -Session $session -ScriptBlock {$PSVersionTable.PSVersion};
返回:
Major Minor Build Revision PSComputerName
----- ----- ----- -------- --------------
4 0 -1 -1 IIS-DEV2
有什么主意如何迫使它使用版本6?
答案 0 :(得分:1)
如your answer所示,过时 PowerShell Core版本确实需要运行 Install-PowerShellRemoting.ps1
才能使给定的计算机运行作为远程处理端点(即允许其他计算机通过远程{New-PSSession
或Invoke-Command
之类的cmdlet来定位它),该脚本是 stopgap 当前PowerShell Core版本中需要。
在我们向Enable-PSRemoting添加其他功能以执行相同操作之前,安装脚本是一个短期解决方案。
Enable-PSRemoting
cmdlet。 注意:截至撰写本文时,Enable-PSRemoting
help topic尚未涵盖PowerShell Core ,而WS-Management (WSMan) Remoting in PowerShell Core尚未提及当前的6.x。版本不再需要权宜之计脚本。
顺便说一句,定位特定于 PowerShell Core版本:
如果您要定位非常特定于的版本,而-ConfigurationName Powershell.6.0.4
确实可以工作,则 Enable-PSRemoting
还会创建不需要的PowerShell.<OwnMajorVersionOnly>
配置您可以指定完整的版本号(在端点计算机上更新PowerShell Core时,该版本号可能会更改)。
因此,请考虑使用以下示例,以远程端点上的PowerShell 7.x版本中的Enable-PSRemoting
为例:
-ConfigurationName PowerShell.7
有关更多信息,请参见this post。
答案 1 :(得分:0)
在powershell core的安装文件夹中,有一个脚本文件Install-PowerShellRemoting
,
在您希望会话进行访问的远程服务器中运行脚本, 并且在进行远程处理时,请使用以下内容:
$session = New-PSSession -ComputerName IIS-DEV2 -port 5985 -Credential $mycreds -ConfigurationName "powershell.6.0.4"
它奏效了,让我参加了Powershell核心会议。