How to Create a PowerShell Profile

Here at Idea 11 we're big fans of PowerShell. We use it every day to support our customers and develop scripts and tools to help with our services and support.

When you spend as much time in PowerShell as we do it is useful to create a PowerShell profile. A PowerShell profile is simply a PowerShell script that automatically runs when you open a new PowerShell window. PowerShell profiles are usually used to configure your PowerShell environment to fit your needs, or to load custom functions that you can then use during your PowerShell administration tasks.

There are six PowerShell profiles that relate to the PowerShell console (the command line interface) and the PowerShell ISE (the integrated scripting environment). To see the four console-related profiles run this command:

PS C:\> $profile | Get-Member -MemberType NoteProperty | fl name,definition


Name       : AllUsersAllHosts
Definition : System.String AllUsersAllHosts=C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1

Name       : AllUsersCurrentHost
Definition : System.String
             AllUsersCurrentHost=C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1

Name       : CurrentUserAllHosts
Definition : System.String CurrentUserAllHosts=C:\Users\Paul\Documents\WindowsPowerShell\profile.ps1

Name       : CurrentUserCurrentHost
Definition : System.String
             CurrentUserCurrentHost=C:\Users\Paul\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

For this article let's just focus on the "Current User, Current Host" profile.

First, is there an existing profile? Use Test-Path to check this. The $profile variable stores the path to the profile file itself:

PS C:\> $profile
C:\Users\Paul\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

So we can simply run:

PS C:\> Test-Path $profile
True

If the result is False you can create the profile file using New-Item.

PS C:\> New-Item $profile -ItemType File -Force


    Directory: C:\Users\Paul\Documents\WindowsPowerShell


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        3/12/2014   2:30 PM          0 Microsoft.PowerShell_profile.ps1

After the profile file has been created you can edit it using the PowerShell ISE.

PS C:\> powershell_ise.exe $profile

PowerShell ISE

From here you can add any PowerShell functions or commands that you want to run automatically each time you open a new PowerShell window. As a simple example here is how I configure my PowerShell windows to switch to the C:\Scripts folder instead of the default C:\Users\Paul folder, so that I am already in the location where my script files are stored.

#Change directories to C:\Scripts folder

If (Test-Path C:\Scripts)
{
    Set-Location C:\Scripts
}
else
{
    Write-Warning "C:\Scripts folder not found on this computer."
}

Your PowerShell profile will grow and change over time to suit your own purposes, so why not create one today so you can start adding items to it.

Examples: