PowerShell Profiles
If you work with Powershell, you most likely end up doing things multiple times and even eventually have the Console look the way YOU want and load modules and Ps-snapins as you need to. The best way to do that using Powershell profiles.
Profiles, especially starting out, can be a little bit confusing though, as there are actually 6 profiles.
[table id=3 /]
The most common one to use is most likely the “Current User, Current Host – ISE” or the “Current User, Current Host – console” profile.
The ‘$profile’ variable points, depending if using the ISE or the console to the corresponding powershell script that has the profile information in it.
# From Console [1:52:36 PM] C:\> $profile C:\Users\awittig\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
# From ISE PS C:\> $profile C:\Users\awittig\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
You can also get the hidden properties by using the -Force command:
[1:53:31 PM] C:\> $PROFILE | fl * -Force AllUsersAllHosts : C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1 AllUsersCurrentHost : C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1 CurrentUserAllHosts : C:\Users\awittig\Documents\WindowsPowerShell\profile.ps1 CurrentUserCurrentHost : C:\Users\awittig\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 Length : 75
To note, by default on a brand new computer there is no $profile there, so you have to create it on your own!
You can test if you have a powershell profile-file setup by running this command:
Test-Path $profile
The output should be a Boolean, either $true or $false. See below:
As you can see, I do not have a profile file for the ‘CurrentUserAllHosts’ parameter.
To create a new $profile.CurrentUserAllHosts profile we can do this:
new-item $PROFILE.CurrentUserAllHosts -ItemType file -Force
There are several ways to edit the file that you just created:
- You can just navigate to the $profile.CurrentUserAllHosts file and right click on it
- You can open it for editing in the ISE: <pre class="lang:ps decode:true">ise $profile.CurrentUserAllHosts
</pre>
- You can open it with notepad / explorer <pre class="lang:ps decode:true ">explorer $profile.CurrentUserAllHosts</pre>
4. My favorite way, you can edit it with VIM
<pre class="lang:default decode:true ">vim $profile.CurrentUserAllHosts</pre>
(See my previous blog-post how to use vim for inline editing)</li> </ol>