Configure PowerShell profile before next time you run PowerShell

A PowerShell profile in very simple terms, is a script that is auto-executed (read runs) whenever you start a PowerShell session. Why is this important? Suppose, you work on SharePoint administration for your daily bread and butter. Everytime, you would want to execute some cmdlets based on SharePoint, you would need to load PSSnapin for SharePoint. Same goes for Azure. Who would want to login everytime whenever you want to run some Azure cmdlets and go through that annoying pop-up box. It’s a good idea to have some commands auto-executed whenever you want to open PowerShell session. PowerShell profile allows you to configure your environment in advance. In this blog post, we’ll discuss how to configure a PowerShell profile.

The first thing before you configure profile, is to check if a PowerShell profile is already configured or not. This would be done by use of below command:

Test-Path $Profile

Here, $Profile is a system variable inside the PowerShell.

If the output of this command is False, it means that you can go ahead and configure a profile. If it’s true, it means that you would need to edit already existing profile.

Here’s a sample output from my machine:

Check if PowerShell profile is already configured

You would note that output of $Profile is a path on the local system. This is the default location for profile script.

Now, let’s create a $Profile script for us by using New-Item cmdlet:

New-Item $Profile -ItemType file –Force

This would create the required path for profile:

Create PowerShell profile path

Since, we prefer commands than GUI, rather than going to directory location and editing the file, we would simply run below command:

notepad $profile

It will open the file in notepad for us to edit:

Edit PowerShell profile using notepad

Now, let’s add some code to profile:

# ALIAS Definitions 
  set-alias -name gh -value get-help 
  set-alias -name c -value cls

  #get detailed help 
  Function GHD 
     Get-help $args[0] -detailed | more 
   } #END GHD Function

Set-Location C:\

Write-host -foregroundcolor green "USEFUL COMMANDS" 
Write-host -foregroundcolor yellow "GET-HELP (Get-HELP ABOUT_*)" 
Write-host -foregroundcolor yellow "GET-HELP GET-SERVICE –Detailed" 
Write-host -foregroundcolor yellow "GET-COMMAND"
Write-host -foregroundcolor yellow "GET-MODULE –ListAvailable" 
Write-host ""

Hit Ctrl+S to save it. Now, let’s close existing window and open a new PowerShell session to see PowerShell profile in action:

See PowerShell profile in action

In one of the previous blog post we discussed how to create persistant Azure PowerShell logins. There we described commands to do that but did not explained, how to create/edit PowerShell profile. Hopefully, this clears air.

5 thoughts on “Configure PowerShell profile before next time you run PowerShell

  1. Thanks for one’s marvelous posting! I seriously enjoyed reading it, you will be a great author.I will remember to bookmark your blog and definitely will come back at some point. I want to encourage yourself to continue your great posts, have a nice afternoon!


  2. Thanks for an excellent post Mr Goya. You are very articulate in your blog.

    I have a serious issue on my PC. When my PC was imaged, for some reason, the $profile variable points to “WindowsPowerShell/Microsoft.PowerShell_profile.ps1 and likewise for the ISE. Note how it does not start with any drive letter strangely. Since there is no Drive letter included in the variable, “notepad $profile” comes back with message, “part of the path is missing” Do you have any suggestions on how to fix the value of the $profile variable to point to say, “C:\users\krish\WindowsPowershell\Micro….”

    Any suggestions welcome.


    • You are correct in that the $profile is read-only, so the only way I made it work was to dot-source another file inside the $PSHome AllUserAllHost profile.ps1. Not elegant, but gets the job done.

      Thank you very much. I really like your posts.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s