Удаленное выполнение команды Powershell с версией 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?

1 ответ

  • Как показано в вашем ответе, устаревшие версии PowerShell Core действительно требуют запускаInstall-PowerShellRemoting.ps1 чтобы позволить данному компьютеру действовать как конечная точка удаленного взаимодействия (т. е. позволить другим компьютерам нацеливаться на него с помощью командлетов удаленного взаимодействия, таких как New-PSSession или Invoke-Command), указанный сценарий был временной мерой, которая больше не нужна в текущих версиях PowerShell Core.

Сценарий установки является краткосрочным решением, пока мы не добавим дополнительные функции в Enable-PSRemoting для выполнения того же действия.

  • Текущие версии PowerShell Core и все будущие версии должны использовать Enable-PSRemoting командлет, как в Windows PowerShell.

Примечание. На момент написания этой статьи в удаленном взаимодействии WS-Management (WSMan) в PowerShell Core еще не упоминалось, что текущей версии 6.x больше не требуется временный скрипт - см. Эту проблему GitHub. Также обратите внимание, чтоEnable-PSRemotingэто не доступно на Unix-подобных платформах, как в v7.0 (и ни один не является устаревшимInstall-PowerShellRemoting.ps1 сценарий).


В качестве альтернативы, ориентированной на конкретную версию PowerShell Core:

Пока -ConfigurationName Powershell.6.0.4работает, если вы хотите настроить таргетинг на очень конкретную версию,Enable-PSRemoting также создает PowerShell.<OwnMajorVersionOnly>конфигурация, при которой не требуется указывать полный номер версии (который может измениться при обновлении PowerShell Core на компьютере конечной точки).

Поэтому вместо этого рассмотрите возможность использования следующего, используя пример запуска Enable-PSRemoting из версии PowerShell 7.x на конечной точке удаленного взаимодействия:

-ConfigurationName PowerShell.7

Для получения дополнительной информации см. Этот пост.

В папке установки ядра powershell находится файл скрипта Install-PowerShellRemoting,

Запустите скрипт на удаленном сервере, к которому вы хотите подключиться, и затем при удаленном взаимодействии используйте следующее:

$session = New-PSSession -ComputerName IIS-DEV2 -port 5985 -Credential $mycreds -ConfigurationName "powershell.6.0.4"

Это сработало, и я получил сессию с ядром Powershell.

Другие вопросы по тегам