В определенной степени это будет зависеть от того, какие функциональные изменения вы намерены сделать. Для нашей среды мы запускаем довольно стандартную установку PS, а затем добавляем одну строку в профиль каждого, чтобы запустить скрипт из общей папки на сервере. Затем в этом сценарии я могу выполнить любую настройку, которую хочу применить ко всем.
Мы добавляем строку в профиль MS для конкретной машины (в% Windir%), это был намеренный выбор. Мы делаем это таким образом, чтобы пользователи по существу получали это только на своих производственных коробках. Таким образом, когда они что-то пишут, они могут быстро войти в тестовую коробку и запустить скрипт, чтобы убедиться, что скрипт будет развернут без каких-либо зависимостей от этих настроек.
В настоящее время настройки довольно обыденны. В основном только некоторые добавленные функции и псевдонимы. У меня также есть регистратор, который я написал в C # специально для powershell, поэтому он загружает его из библиотеки DLL, которая находится в той же сетевой папке.
Поскольку я так много играю со своим окружением, у меня есть это в моем профиле:)
$ProfileDir = ([System.IO.Directory]::GetParent($profile)).FullName
$localMSProfile = "$PShome\Microsoft.Powershell_profile.ps1"
$localAllProfile = "$PShome\profile.ps1"
$userAllProfile = "$ProfileDir\profile.ps1"
$userMSProfile = "$ProfileDir\Microsoft.Powershell_profile.ps1"
$allProfiles = ($localAllProfile, $localMSProfile, $userAllProfile, $userMSProfile)