How to Run a PowerShell Script (All the Ways!)

Parveen Singh

Read more posts by this author.

If you’re new to the PowerShell scripting language and want to learn how to run PowerShell script, you’ve come to the right blog post. This blog will be a tutorial covering common ways to run PowerShell scripts and a few issues that may pop up.

Prerequisites

This article will be a walkthrough for you about how to run PowerShell on your local computer. If you’d like to follow along, please be sure you have the following prerequisites in place before starting this article.

  • A Windows 10 computer with Administrator privileges.
  • Windows PowerShell version 5 or higher. You can also use PowerShell v7. This tutorial will focus on Windows PowerShell since the Windows operating system already has it.
  • Any text file editor

“… cannot be loaded because running scripts is disabled on this system”

If this is the first time you’re trying to execute a Windows PowerShell script, you may run into a common problem. PowerShell will probably return an error message stating that a script “cannot be loaded because running scripts is disabled on this system”.

PS> .\GetServices.ps1

 File C:\Temp\GetServices.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at
 https:/go.microsoft.com/fwlink/?LinkID=135170.
 At line:1 char:1
 .\GetServices.ps1
 ~~~~~ CategoryInfo          : SecurityError: (:) [], PSSecurityException
 FullyQualifiedErrorId : UnauthorizedAccess   

PowerShell returns the error message above when you try to run a PowerShell with an execution policy set to Restricted, Remote Signed or All Signed.

Restricted

Restricted is the default policy set for Windows client computers. If you are using PowerShell for the first time, your default policy would probably be set to restrict all the scripts.

You can still execute individual commands in a terminal, but not a script file. The restriction includes any file ending with .ps1xml, .psm1 or .ps1.

Unrestricted

Unrestricted allows you to run any script however, it warns you before execution if the script is downloaded from the internet. This policy is usually the default for any non-windows devices running PowerShell.

Remote Signed

Remote Signed policy allows you to run any script that is either (a) digitally signed or (b) any script written on your local computer with or without a signature.

If a script is downloaded from the internet and not signed, you would need to unblock the file. You can do so by right-clicking on the file and choosing Properties. Or, you could use the Unblock-File PowerShell cmdlet for that particular script file.

Using a Remote signed policy would be an ideal option when running a script downloaded from the internet.

All Signed

All signed requires all the scripts to be signed digitally by a trusted publisher. This includes the scripts downloaded from the internet and written locally on your computer.

Changing the PowerShell Execution Policy

To change the PowerShell execution policy:

Open Windows PowerShell with Run as Administrator to make sure you have the highest permission to make the policy changes.

Related: How to Run PowerShell as Administrator

Search PowerShell in Start Menu
Search PowerShell in Start Menu

When PowerShell opens, run the following PowerShell command to set your computer’s execution policy. The execution policy, as covered above, can be one of three different types. This tutorial is using a useful yet still secure execution policy of RemoteSigned.

Since this tutorial assumes you’ve downloaded from the Internet the GetServices.ps1 script file, set the execution policy to RemoteSigned.

PS> Set-ExecutionPolicy RemoteSigned

The RemoteSigned execution policy forces you to cryptographically sign every PowerShell script downloaded from the Internet before PowerShell will run it on your system.

Related: Changing PowerShell’s Execution Policy with Set-ExecutionPolicy

You should see an output requesting to confirm the action. Enter Y and hit enter to confirm the policy change.

Execution Policy Change
 The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the
 security risks described in the about_Execution_Policies help topic at https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to
 change the execution policy?
 [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): 

At this point, follow the next steps to explore different methods to run the PowerShell script on your computer.

Running a PowerShell Script

To demonstrate running a PowerShell script, you actually need a script file to run! If you don’t have one handy, download this ZIP file and extract the PS1 file within. You’ll find a simple script file inside called GetServices.ps1.

Write-Output "Listing Computer Services"
Get-Service

Every PowerShell script should end with a .ps1 extension.

Using the PowerShell Console

Once you have a script ready, there are a few different ways you can execute a PowerShell script file. One of the most common ways is via the PowerShell console.

To do so:

  1. Open your PowerShell console as shown above.

2. Navigate to the file system location your script is located using the Set-Location PowerShell cmdlet or the cd alias. This tutorial’s script is found in the C:\Temp directory.

PS> cd C:\Temp\

3. Run the script using a dot (.) notation. PowerShell is a shell that also looks for command names. To differentiate between a PowerShell command and a script, you must preface the script with a dot. This dot represents the current directory.

 PS> .\GetServices.ps1

Using the Command Prompt

If you can’t or would rather not run scripts via the PowerShell console, you can also do so with the good ol’ command line (command prompt).

To run scripts via the command prompt, you must first start up the PowerShell engine (powershell.exe) and then pass the script path as a parameter to it.

Once you open cmd.exe, you can execute a PowerShell script like below. This example is running the PowerShell engine and passing it the script path of C:\Temp\GetServices.ps1.

CMD> powershell "C:\Temp\GetServices.ps1"

Below is a handy YouTube video that covers executing a script via a batch file which the cmd.exe executes.

Using the PowerShell ISE

If you create your own scripts or edit others’, you’ll probably be using a script editor like the PowerShell ISE or maybe Visual Studio (VS) Code. Since the ISE comes with Windows, let’s focus on that method for this tutorial.

To invoke a script via the ISE:

  1. Navigate to Start Menu, search for PowerShell ISE and open it.
Search PowerShell ISE in Start Menu
Search PowerShell ISE in Start Menu

2. Click on FileOpen and find your script.

Open Script using File Menu
Open Script using File Menu

3. With the script open, click on the green run button to execute the script. This button will invoke the script in the built-in PowerShell terminal at the bottom.

Run Script using PowerShell ISE
Run Script using PowerShell ISE

The Sample Script’s Output

A PowerShell script can sometimes return output. This happens when the script you’re executing is built to return objects which is a fundamental component of PowerShell.

Related: Back to Basics: Understanding PowerShell Objects

If you run the sample GetServices.ps1 script, you will see the following. This script runs the Get-Service cmdlet which returns all of the services installed on your local Windows computer.

PS> .\GetScripts.ps1
Listing Computer Services

Status   Name               DisplayName
------   ----               -----------
Running  aakore             Acronis Agent Core Service
Stopped  AarSvc_1b668d      Agent Activation Runtime_1b668d
Running  AcronisActivePr... Acronis Active Protection Service
Running  AcronisCyberPro... Acronis Cyber Protection Service
Running  AcrSch2Svc         Acronis Scheduler2 Service
Running  AdobeARMservice    Adobe Acrobat Update Service
Running  AdobeUpdateService AdobeUpdateService
Running  AGMService         Adobe Genuine Monitor Service
Running  AGSService         Adobe Genuine Software Integrity Se...
----Truncated----

Related: Back to Basics: How to Manage Windows Services with PowerShell

Subscribe to Adam the Automator

Get the latest posts delivered right to your inbox

Looks like you're offline!