使用PowerShell-Core版本远程执行Powershell命令

时间:2018-08-23 08:28:16

标签: powershell powershell-remoting powershell-core

我正在尝试远程执行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?

2 个答案:

答案 0 :(得分:1)

  • your answer所示,过时 PowerShell Core版本确实需要运行 Install-PowerShellRemoting.ps1 才能使给定的计算机运行作为远程处理端点(即允许其他计算机通过远程{New-PSSessionInvoke-Command之类的cmdlet来定位它),该脚本是 stopgap 当前PowerShell Core版本中需要

  

在我们向Enable-PSRemoting添加其他功能以执行相同操作之前,安装脚本是一个短期解决方案。

    与Windows PowerShell中一样,PowerShell Core的
  • 当前版本以及以后的所有版本均应使用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核心会议。