【问题标题】:how to get winrm to use powershell 7 for remote sessions by default如何让winrm默认使用powershell 7进行远程会话
【发布时间】:2020-03-06 10:10:46
【问题描述】:

随着 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 issue

将默认的 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 设为默认值... :(

【问题讨论】:

  • 谢谢,mklement,似乎很奇怪,没有办法将默认值设置为比会话更高的级别。但至少会话级别比命令级别要好一步:D
  • 同意,亚历克西斯。正在考虑更改 默认情况下 的端点 PowerShell [Core] 目标,以及实施更多“粘性”配置(策略):请参阅 this GitHub issue

标签: powershell powershell-remoting powershell-6.0


【解决方案1】:

注意:

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

  • 因此,你自己的尝试,

# 错误
获取-PSSessionConfiguration -Name microsoft.powershell |
  Set-PSSessionConfiguration -PSVersion 7.0

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

请注意,基本先决条件PowerShell 远程处理必须在服务器计算机上启用,这可以通过选择执行所以在安装期间通过 MSI GUI 安装程序,或者通过运行 Enable-PSRemoting - 具有管理员权限 - 稍后。提示Lars Fosdal

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

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


客户端机器上,您可以为服务器上定义的会话配置设置默认值 em>(远程机器)通过$PSSessionConfigurationName preference variable连接到。

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

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

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

请参阅this answer 了解更多信息,其中还显示了如何在单个命令的上下文中定位给定的服务器配置


注意:更改端点 PowerShell [Core] 的目标默认情况下 - 从 7.2 开始仍然是 Window PowerShell - 正在考虑:请参阅GitHub issue #11616。 p>

【讨论】:

    猜你喜欢
    • 2021-12-02
    • 2017-09-21
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多