Ale*_*les 6 powershell powershell-remoting powershell-6.0
随着 powershell 7 的发布,似乎是时候超越 ps 5.1,所以我已经在几台服务器上安装了它来试一试。
但是,当我使用 ps7 从我的电脑创建到这些服务器的会话时,我总是在远程机器上运行 ps5.1。
Invoke-Command -ComputerName name -ScriptBlock {
Write-Host $env:COMPUTERNAME
$PSVersionTable.PsVersion
}
Run Code Online (Sandbox Code Playgroud)
输出 5.1.17763.316。任何想法如何让远程会话在默认情况下最好使用 7.0.0 版?
更新在 这方面取得了一些进展,所以尽管我会分享。
在 powershell 7 的远程机器上运行以下命令
Enable-PSRemoting
Run Code Online (Sandbox Code Playgroud)
这将创建一些 PsSessionConfigurations,您可以使用以下命令查看它们。
Get-PSSessionConfiguration
Run Code Online (Sandbox Code Playgroud)
现在您可以执行以下操作以从 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 }
Run Code Online (Sandbox Code Playgroud)
这现在在远程会话中使用 ps 7,快乐的日子。现在如何在默认情况下实现这一点......?从这个github 问题:
将默认的 microsoft.powershell 端点设置为他们选择的任何 PowerShell
我认为这就是我想要做的,因此切换回 ps 5.1 并尝试了以下命令:
Get-PSSessionConfiguration -Name microsoft.powershell | Set-PSSessionConfiguration -PSVersion 7.0
Run Code Online (Sandbox Code Playgroud)
只得到以下输出:
Set-PSSessionConfiguration:无法将参数“PSVersion”绑定到目标。异常设置“PSVersion”:“值 7.0 对于 PSVersion 参数无效。可用值为 2.0、3.0、4.0、5.0、5.1。”
虽然我会在 ps7 中尝试这个,所以通过运行pwsh切换回来并再次运行相同的命令让他跟随......
写入错误:没有会话配置符合条件“microsoft.powershell”。
所以仍然不太确定如何使 ps7 成为默认值... :(
mkl*_*nt0 11
笔记:
远程处理客户端确定要连接到服务器计算机上的远程处理端点(会话配置) - 见下文。
因此,你自己的尝试,
# 错误的 Get-PSSessionConfiguration -Name microsoft.powershell | 设置-PSSessionConfiguration-PSVersion 7.0
无效,因为Set-PSSessionConfiguration修改了服务器机器上的端点配置,它不控制客户端的行为。
请注意,基本先决条件是必须在服务器计算机上启用PowerShell 远程处理,这可以通过在安装期间通过 MSI GUI 安装程序选择这样做来实现,也可以通过Enable-PSRemoting稍后运行- 以管理员权限 - 来实现。向Lars Fosdal 致敬。
从 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'
Run Code Online (Sandbox Code Playgroud)
如果您将上述内容添加到您的$PROFILE文件中,默认情况下,未来的会话将针对 PowerShell 7。
见这个答案的详细信息,这也说明了如何针对个别命令的情况下给定的服务器配置。
注意:正在考虑更改默认情况下PowerShell [Core] 目标的端点- 从 7.2 开始仍然是Window PowerShell - 正在考虑中:请参阅GitHub 问题 #11616。
| 归档时间: |
|
| 查看次数: |
1729 次 |
| 最近记录: |