If you implement a custom PowerShell Host with System.Management.Automation
(SMA), all of the automatic variables are avaialable, except it seems that $PROFILE
is empty. How would one go about recreating it?
Is it always in UserProfile + \Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
? Or do I need to be worried about it being in other places?
To clarify, I only care about CurrentUserCurrentHost
profile.
Details
Given this PowerShell script:
Write-Output "_Profiles_"
Write-Output "CurrentUserCurrentHost = '$($Profile.CurrentUserCurrentHost)'"
Write-Output "CurrentUserAllHosts = '$($Profile.CurrentUserAllHosts)'"
Write-Output "AllUsersCurrentHost = '$($Profile.AllUsersCurrentHost)'"
Write-Output "AllUsersAllHosts = '$($Profile.AllUsersAllHosts)'"
Running it against system PowerShell has the following output:
_Profiles_ CurrentUserCurrentHost = 'C:\Users\rob\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1' CurrentUserAllHosts = 'C:\User\rob\Documents\WindowsPowerShell\profile.ps1' AllUsersCurrentHost = 'C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1' AllUsersAllHosts = 'C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1'
Running it with a Custom C# PowerShell Host (a System.Management.Automation.Host.PSHost
implementation) shows:
_Profiles_ CurrentUserCurrentHost = '' CurrentUserAllHosts = '' AllUsersCurrentHost = '' AllUsersAllHosts = ''
Background
https://github.com/chocolatey/choco/issues/667
This has been tested in PowerShell v3 / System.Managment.Automation
(SMA) v3 but it could easily be proven out in other PowerShell versions.
powershell.exe -command "& {``$profile}"
– David Gardiner