7

随着 powershell 7 的发布,似乎是时候超越 ps 5.1 了,所以我已经安装了几台服务器来试一试。

但是,当我使用 ps7 从我的电脑创建到这些服务器的会话时,我总是在远程机器上运行 ps5.1。

Invoke-Command -ComputerName name -ScriptBlock { 
        Write-Host $env:COMPUTERNAME
        $PSVersionTable.PsVersion
    }

输出 5.1.17763.316。有什么想法可以让远程会话默认使用 7.0.0 版本吗?

更新 在这方面取得了一些进展,所以尽管我会分享。

在 powershell 7 中的远程计算机上运行以下命令

Enable-PSRemoting

这将创建一些 PsSessionConfigurations,您可以使用以下命令查看它们。

Get-PSSessionConfiguration

现在您可以执行以下操作从 powershell 7 创建会话

Invoke-Command -ComputerName ServerName -ScriptBlock { $PsVersionTable.PSVersion } -ConfigurationName Powershell.7
$session = New-PSSession ServerName -ConfigurationName Powershell.7
Invoke-Command -Session $session -ScriptBlock { $PsVersionTable.PSVersion } 

这现在在远程会话上使用 ps 7,快乐的日子。现在如何默认发生这种情况......?从这个github问题

将默认的 microsoft.powershell 端点设置为他们选择的任何 PowerShell

我认为这是我想要做的,所以切换回 ps 5.1 并尝试了这个命令:

Get-PSSessionConfiguration -Name microsoft.powershell | Set-PSSessionConfiguration -PSVersion 7.0

只得到以下输出:

Set-PSSessionConfiguration:无法将参数“PSVersion”绑定到目标。异常设置“PSVersion”:“值 7.0 对 PSVersion 参数无效。可用值为 2.0、3.0、4.0、5.0、5.1。”

虽然我会在 ps7 中尝试这个,所以通过运行pwsh切换回来并再次运行相同的命令以让他跟随......

写入错误:没有会话配置符合条件“microsoft.powershell”。

所以仍然不太确定如何将 ps7 设为默认值... :(

4

1 回答 1

13

笔记:

  • 远程客户端决定连接到服务器机器上的远程端点(会话配置) - 见下文。

  • 因此,您自己的尝试,

# 错误的
获取-PSSessionConfiguration -Name microsoft.powershell |
  设置-PSSessionConfiguration -PSVersion 7.0

无效,因为Set-PSSessionConfiguration修改服务器机器上的端点配置,它不控制客户端的行为。

请注意,基本的先决条件必须在服务器计算机上启用PowerShell 远程处理,这可以通过在安装期间通过 MSI GUI 安装程序选择启用,或者Enable-PSRemoting稍后以管理员权限运行来实现。拉斯福斯达尔致敬

  • 从 PowerShell (Core) 执行此操作会创建名为PowerShell.<version>客户端可以选择连接的标准会话配置 - 见下文。

  • 要列出服务器上定义的所有配置,请Get-PSSessionConfiguration以管理员权限运行。


客户端计算机上,您可以通过首选项变量为在服务器(远程计算机)上定义的要连接会话配置设置默认值。$PSSessionConfigurationName

例如,默认以 PowerShell 7 为目标:

# When remoting, default to running PowerShell Core v7.x on the
# the target machines:
$PSSessionConfigurationName = 'PowerShell.7'

如果将上述内容添加到$PROFILE文件中,未来的会话将默认以 PowerShell 7 为目标。

有关详细信息,请参阅此答案,该答案还显示了如何在单个命令的上下文中定位给定的服务器配置


注意:正在考虑更改默认的端点 PowerShell [Core] 目标(从 7.2 开始仍然是Window PowerShell):请参阅GitHub 问题 #11616

于 2020-03-06T12:13:16.797 回答