To a certain extent, this will depend on the type of functional changes that you intend to make. For our environment, we deploy a fairly standard PS installation, and then add one line for each profile to run the script from a shared folder on the server. Then in this script I can do any setup that I want to apply to everyone.
We add a line to the MS profile of a particular machine (the one in% Windir%), it was a deliberate choice. We do this so that users essentially only get it on their production boxes. Thus, when they write something, they can quickly enter the test field and run the script to make sure that the script will be deployed without dependencies on these settings.
Currently the settings are pretty mundane. Basically, only some additional features and aliases. I also have a journal that I wrote in C # specifically for powershell, so it loads this from a DLL located in the same network folder.
Since I communicate with my environment so much, I have it in my profile :)
$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)
source share