Profile scripts are PowerShell scripts that launch automatically once PowerShell starts. The path to the primary profile file can be found in $profile.
To get a list of potential profile script paths, try this:
#requires -Version 1 ($profile | Get-Member -MemberType NoteProperty).Name | ForEach-Object { $profile.$_ }
To check which profiles are in use on your machine, check out this example:
#requires -Version 3 ($profile | Get-Member -MemberType NoteProperty).Name | ForEach-Object { $path = $profile.$_ New-Object PSObject -Property ([Ordered]@{Path=$Path Exists=(Test-Path $Path) }) }
The output would look similar to this:
Path Exists ---- ------ C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1 False C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShellISE_profile.ps1 False C:\Users\user09\Documents\WindowsPowerShell\profile.ps1 True C:\Users\user09\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1 True
The interesting part in this example is how to programmatically access object properties. You can use Get-Member to find out the property names of an object. We’ll look at the hidden gems of this technology in one of the upcoming tips.