Профили PowerShell Remoting - PullRequest
7 голосов
/ 06 июня 2010

Как использовать функцию в моем профиле на удаленном компьютере при использовании Enter-PSSession на локальном компьютере для открытия удаленного сеанса PowerShell.

Ответы [ 5 ]

16 голосов
/ 21 февраля 2013

По JonZ и x0n:

Когда вы используете pssessions со стандартными конфигурациями сеансов, сценарии профиля не запускаются.

При запуске удаленного интерактивного сеанса с Enter-PSSession загружается удаленный профиль. Кроме того, загружается только профиль уровня машины в $pshome.

Если вы хотите, чтобы сеанс был предварительно настроен (для загрузки пользовательских функций, оснасток, модулей и т. Д.), Добавьте скрипт профиля в новую sessionconfiguration (для инициализации их в скрипте запуска настройка удаленного сеанса).

Командлет Register-PSSessionConfiguration создает и регистрирует новую конфигурацию сеанса на локальном компьютере. Используйте Get-PSSessionConfiguration для просмотра существующих конфигураций сеанса. И Get-PSSessionConfiguration, и Register-PSSessionConfiguration требуют повышенных прав (запустите PowerShell с параметром «Запуск от имени администратора»).

На целевом компьютере, где profile.ps1 содержит все ваши функции:

Register-PSSessionConfiguration -Name WithProfile -StartupScript $PsHome\Profile.ps1

Чтобы использовать этот предварительно настроенный сеанс, вы должны набрать с локального компьютера:

Enter-PSSession -ComputerName $computername -ConfigurationName WithProfile

или

Enter-PSSession -ComputerName $computername -ConfigurationName WithProfile -Credential youradminuser@yourtargetdomain

(где $computername - имя хоста удаленного сервера, на котором вы зарегистрировали конфигурацию pssession).

Хорошим источником информации о удаленном взаимодействии PowerShell является Руководство администратора для удаленного взаимодействия Powershell .

Ссылка:
Powershell Remoting: Использовать функции, загруженные в удаленный профиль Powershell? http://jrich523.wordpress.com/2010/07/21/update-creating-a-profile-for-a-remote-session/

Общие сведения о профилях PowerShell и их использование
http://blogs.technet.com/b/heyscriptingguy/archive/2013/01/04/understanding-and-using-powershell-profiles.aspx

About_Profiles (Microsoft Docs) https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles

Шесть различных путей профиля Windows PowerShell и использование

Текущий пользователь, текущий хост - консоль
$ Home [My] Документы \ WindowsPowerShell \ Profile.ps1

Текущий пользователь, все хосты
$ Домой [Мои] Документы \ Profile.ps1

Все пользователи, текущий хост - консоль
$ PsHome \ Microsoft.PowerShell_profile.ps1

Все пользователи, все хосты
$ PsHome \ Profile.ps1

Текущий пользователь, Текущий хост - ISE
$ Home [Мои] Документы \ WindowsPowerShell \ Microsoft.PowerShellISE_profile.ps1

Все пользователи, текущий хост - ISE
$ PsHome \ Microsoft.PowerShellISE_profile.ps1

Профили Windows PowerShell
http://msdn.microsoft.com/en-us/library/bb613488%28VS.85%29.aspx

Этот профиль применим ко всем пользователям и всем оболочкам.
% windir% \ system32 \ WindowsPowerShell \ v1.0 \ profile.ps1

Этот профиль применим ко всем пользователям, но только для оболочки Microsoft.PowerShell.
% windir% \ system32 \ WindowsPowerShell \ v1.0 \ Microsoft.PowerShell_profile.ps1

Этот профиль применяется только к текущему пользователю, но влияет на все оболочки.
% UserProfile% \ Мои документы \ WindowsPowerShell \ profile.ps1

Этот профиль применяется только к текущему пользователю и оболочке Microsoft.PowerShell.
% UserProfile% \ Мои документы \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1

Профили ядра PowerShell https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles

Этот профиль применим ко всем пользователям и всем хостам.
$ env: ProgramFiles \ PowerShell \ 6 \ profile.ps1

Этот профиль применяется ко всем пользователям, но только для текущего хоста.
$ env: ProgramFiles \ PowerShell \ 6 \ Microsoft.PowerShell_profile.ps1

Этот профиль применяется только к текущему пользователю, но влияет на все хосты.
$ env: USERPROFILE \ Documents \ PowerShell \ profile.ps1

Этот профиль применяется только к текущему пользователю и оболочке Microsoft.PowerShell.
$ env: USERPROFILE \ Documents \ PowerShell \ Microsoft.PowerShell_profile.ps1

5 голосов
/ 16 апреля 2015

Джейсон, В моем случае я хотел, чтобы мой профиль Powershell следовал за мной, когда я перешел на другой компьютер.

Я создал функцию-обертку Remote, которая принимает имя компьютера, создает сеанс, загружает ваш профиль в сеанс и использует enter-pssession.

Вот код ниже:

function Remote($computername){
if(!$Global:credential){
$Global:credential =  Get-Credential
}
$session = New-PSSession -ComputerName $computername -Credential $credential
Invoke-Command -FilePath $profile -Session $session
Enter-PSSession -Session $session
}

Вы можете изменить параметр Invoke-Command -FilePath так, чтобы он занимал любой файл по вашему вкусу.

1 голос
/ 08 июля 2010

взгляните на это

http://jrich523.wordpress.com/2010/07/08/creating-a-profile-for-a-remote-session/

это обходной путь для создания удаленного профиля.

0 голосов
/ 31 января 2019

Существует еще один способ использования профиля в удаленном сеансе:

  1. Скопируйте выбранный профиль на удаленный сервер (ы) в папке с документами. Например:

Copy-Item -Path $profile.CurrentUserAllHosts -Destination \\computername\C$\Users\MyAccountName\Documents

  1. Введите сеанс PSSession

Enter-PSSession -ComputerName ComputerName

  1. Dot источник вашего профиля

. .\Profile.ps1

Недостатки этого решения:

  • Вы должны один раз скопировать свой профиль на все компьютеры, где вы хотите иметь профиль
  • вы должны указывать источник в профиле каждый раз при входе в сеанс PSSession

Преимущества этого решения:

  • Функция не нужна, и вы просто входите в сеанс PSSession, как всегда
  • Вы не изменяете профиль всех пользователей, изменяя конфигурацию сеанса по умолчанию

(Спасибо Джеффри Хиксу за подсказку о точечном поиске )

0 голосов
/ 06 июня 2010

Вы не можете.При запуске удаленного интерактивного сеанса с помощью enter-pssession загружается удаленный профиль.Кроме того, загружается только профиль уровня машины в $ pshome.Если вы хотите, чтобы удаленные функции были доступны, вам придется инициализировать их в скрипте запуска конфигурации удаленного сеанса.Посмотрите конфигурацию get / set-pssession на удаленном сервере.

...