как заставить winrm использовать powershell 7 для удаленных сессий по умолчанию - PullRequest
1 голос
/ 06 марта 2020

С выходом powershell 7 кажется, что пришло время перейти ps 5.1, поэтому я установил на пару серверов, чтобы дать ему go.

Однако я, когда я создаю сеанс на эти серверы с моего p c с 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

Это создаст несколько конфигураций PsSessionConfiguration, которые вы можете увидеть с помощью следующей команды: *

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 так переключился обратно, выполнив pw sh и снова выполнил ту же команду, чтобы получить следующее ...

Ошибка записи: ни одна конфигурация сеанса не соответствует критериям "microsoft.powershell" .

Так что до сих пор не совсем уверен, как сделать PS7 по умолчанию ...: (

1 Ответ

3 голосов
/ 06 марта 2020

Примечание:

  • Это удаленный клиент , который определяет, к какой конечной точке удаленного взаимодействия (конфигурация сеанса) подключиться к на сервере - см. ниже.

  • Поэтому ваша собственная попытка

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

    неэффективна в двух отношениях:

    • Set-PSSessionConfiguration изменяет конфигурации на сервере .

    • microsoft.powershell является конфигурация для Windows PowerShell , и не должна изменяться.

      • В качестве отступления: начиная с PowerShell [Core] 7.0, параметр -PSVersion в настоящее время не фактически принимает номера версий выше 5.1 - см. этот выпуск GitHub (примерно Register-PSSessionConfiguration, но то же самое относится к Set-PSSessionConfiguration).

На клиенте на машине вы можете установить значение по умолчанию для какой конфигурации сеанса определено на сервере (удаленный м achine) для подключения к через предпочтительную переменную $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.0 по-прежнему Window PowerShell - рассматривается: см. эту проблему GitHub .

...