Локально указанная конфигурация сеанса удаленного взаимодействия определяет, какая версия PowerShell и, возможно, версия будут использоваться на удаленной машине :
Ad hoc , вы можете использовать -ConfigurationName
параметр командлетов удаленного взаимодействия, таких как Invoke-Command
, New-PSSession
и Enter-PSSession
дляявно указать конфигурацию сеанса.
Постоянно , через конфигурацию вы можете установить стандартную конфигурацию сеанса через$PSSessionConfigurationName
переменная предпочтения (в связанном разделе справки также описаны другие переменные предпочтения, относящиеся к удаленному сеансу, а именно $PSSessionApplicationName
и $PSSessionOption
)
На целевом компьютере операции удаленного взаимодействия * Командлет , Get-PSSessionConfiguration
перечисляет все зарегистрированные конфигурации сеансов, к которым клиенты могут подключаться, и которыеВы можете управлять с помощью Register-PSSessionConfiguration
и Unregister-PSSessionConfiguration
:
Предостережение :Get-PSSessionConfiguration
должен выполняться в сеансе с повышенными правами (от имени администратора), и из-за ошибки в Windows PowerShell 5.1 может потребоваться сначала выполнить следующую фиктивную команду: $null = Get-Command Test-WSMan
, чтобы обеспечить определение диска wsman:
).
Конфигурации сеансов, имена которых начинаются с префикса 'microsoft.powershell
', принадлежат Windows PowerShell .
Префикс 'PowerShell.'
относится к PowerShell Core .
$PSSessionConfigurationName
по умолчанию 'http://schemas.microsoft.com/powershell/Microsoft.PowerShell'
в в обоих выпусках, что означает, что Windows PowerShell по умолчанию предназначен для удаленногомашины , даже если вы работаете с PowerShell Core :
Часть Microsoft.PowerShell
относится к (64-разрядной) конфигурации сеанса Windows PowerShell,как указано Get-PSSessionConfiguration
(в нижнем регистре).
Префикс http://schemas.microsoft.com/powershell/
является необязательным и может быть опущен;обратите внимание, что использование https:
в префиксе не работает и не автоматически переключается на транспорт на основе SSL;для последнего требуется явная конфигурация . Обратите внимание, что удаленное взаимодействие на основе HTTPS / SSL не требуется, если все ваше удаленное взаимодействие происходит в домене Windows.
Для настройки PowerShell Core наудаленный компьютер :
Обычно конфигурации сеансов PowerShell Core зависят от версии , и у вас есть два варианта:
Назначение Major Версия PowerShell Core - например, PowerShell.7
- с использованием любой последней версии v7.x, установленной на целевой машине.
- Это предпочтительнее , поскольку ваш код не требует обновления каждый раз, когда вы устанавливаете исправление или обновление вспомогательной версии на целевом компьютере.
Целевая версия - например, PowerShell.7.1.2
- Делайте это только в том случае, если у вас есть несколько параллельных установок, которые совместно используют один и тот жеосновная версия, и вам явно необходимо указать один из них.
Опять же, работает Get-PSSessionConfiguration
на целевом компьютере из сеанса с повышенными правами сообщает имена всех зарегистрированных конфигураций сеансов.
Комуцелевое ядро PowerShell ad hoc , используйте -ConfigurationName PowerShell.7
, например:
# Connect to computer $comp and make it execute $PSVersionTable
# in PowerShell Core v7.x, which tells you what PowerShell edition
# and version is running.
Invoke-Command -ComputerName $comp -ConfigurationName PowerShell.7 { $PSVersionTable }
- Для целевого ядра PowerShell по умолчанию, постоянно , добавьте что-то вроде следующего в ваш
$PROFILE
файл:
# When remoting, default to running PowerShell Core v7.x on the
# the target machines:
$PSSessionConfigurationName = 'PowerShell.7'