- How to create and run a PowerShell script file on Windows 10
- How to create PowerShell script file on Windows 10
- Creating script with Visual Studio Code
- Install Visual Studio Code
- Install PowerShell extension
- Create PowerShell script with Visual Studio Code
- Creating script with Notepad
- Creating script with Integrated Scripting Environment
- How to run PowerShell script file on Windows 10
- More Windows 10 resources
- The Dell XPS 15 is our choice for best 15-inch laptop
- Halo: MCC’s live service elements make it better, not worse
- Microsoft’s Surface Duo is not ‘failing up’
- These are the best PC sticks when you’re on the move
- About Scripts
- Short description
- Long description
- How to run a script
- Run with PowerShell
- Running scripts on other computers
- Get help for scripts
- How to write a script
- Parameters in scripts
- Writing help for scripts
- Returning an exit value
- Script scope and dot sourcing
- Scripts in modules
- Other script features
How to create and run a PowerShell script file on Windows 10
Source: Windows Central
On Windows 10, PowerShell is a command-line tool designed by Microsoft to run commands and scripts to change settings and automate tasks. In a way, it’s similar to Command Prompt. However, PowerShell is a more capable command-line interface (CLI) that offers an extensive set of tools and more flexibility and control. Also, unlike Command Prompt, PowerShell is available on Windows, macOS, and Linux.
A script is just a collection of commands saved into a text file (using the special «.ps1» extension) that PowerShell understands and executes in sequence to perform different actions.
The only caveat is that the default security protocol always blocks any script from running on a device. This means that when double-clicking a «.ps1» file on Windows 10 nothing will happen, and if you try to run the script within PowerShell, you’ll see the «cannot be loaded because running scripts is disabled on this system» error message. However, it’s not impossible to run scripts on your computer. You only need to enable the correct execution policy.
In this Windows 10 guide, we’ll walk you through the steps to successfully write and run your first script file on PowerShell using Visual Studio Code, Notepad, and the PowerShell Integrated Scripting Environment (ISE) console.
How to create PowerShell script file on Windows 10
On Windows 10, you can create PowerShell script files using virtually any text editor or the ISE console. However, the preferred option (thanks @jotaka for the heads up) to build scripts moving forward is to use the Visual Studio Code editor with the PowerShell extension.
Creating script with Visual Studio Code
Visual Studio Code — also known as VS Code — is a free and extensible cross-platform code editor that provides an environment to edit virtually any kind of programming language. And when adding the PowerShell extension, you get a fully interactive scripting editing experience, even with IntelliSense (code-completion) support.
The new experience is meant to be the new default, but the PowerShell ISE console isn’t going away. Still, the company won’t be adding any more features, and it doesn’t support PowerShell 7 or higher releases.
Install Visual Studio Code
To install Visual Basic Code on Windows 10, use these steps:
Click the Windows button to download the installer.
Source: Windows Central
Click the Next button.
Source: Windows Central
Confirm additional tasks as necessary.
Source: Windows Central
Once you complete the steps, you can proceed to install the PowerShell extension.
Install PowerShell extension
To install the PowerShell extension on VS Code, use these steps:
- Open VS Code.
- Click the Extensions tab from the left pane.
- Search for PowerShell and select the top result.
Click the Install button.
Source: Windows Central
After you complete the steps, you can start writing PowerShell scripts using Visual Studio Code.
Create PowerShell script with Visual Studio Code
To create a script with Visual Basic Code, use these steps:
- Open VS Code.
Click the File menu and select the New File option.
Source: Windows Central
Click the File menu and select the Save as option.
Source: Windows Central
Write a new, or paste the script you want to run — for example:
Write-Host «Congratulations! Your first script executed successfully»
The above script will output the phrase «Congratulations! Your first script executed successfully» on the screen.
(Optional) Click the Run button from the top-right side (or press the F5 key) to run the script.
Source: Windows Central
Creating script with Notepad
To create a PowerShell script using the Notepad editor on Windows 10, use these steps:
- Open Start.
- Search for Notepad, and click the top result to open the app.
Write a new, or paste your script, in the text file — for example:
Write-Host «Congratulations! Your first script executed successfully»
Source: Windows Central
Type a descriptive name for the script — for example, first_script.ps1.
Source: Windows Central
Creating script with Integrated Scripting Environment
Alternatively, you can use the built-in PowerShell ISE console to code your scripts on Windows 10.
The Integrated Scripting Environment is an advanced tool, but you can get started using these steps:
- Open Start.
- Search for Windows PowerShell ISE, right-click the top result, and select the Run as administrator option.
- Click on File menu.
Select the New option to create a new empty .ps1 file.
Source: Windows Central
Write a new, or paste the script you want to run — for example:
Write-Host «Congratulations! Your first script executed successfully»
Source: Windows Central
Type a name for the script – for example, first_script.ps1.
Source: Windows Central
Once you complete the steps using Notepad, Visual Studio Code, or PowerShell ISE, the script will be ready to run, but it will fail by default. This is because the default PowerShell settings are always set to block the execution of any script. (The only exception is if you run the contents of the script within Visual Studio Code or PowerShell ISE.)
How to run PowerShell script file on Windows 10
If you wish to run a script file with PowerShell, you have to change the execution policy on Windows 10.
To change the execution policy to run PowerShell scripts, use these steps:
- Open Start.
- Search for PowerShell, right-click the top result, and select the Run as administrator option.
Type the following command to allow scripts to run and press Enter:
Type A and press Enter (if applicable).
Source: Windows Central
Type the following command to run the script and press Enter:
In the above command, make sure to change «PATH\TO\SCRIPT» to the location of your script.
For example, this command runs a script stored in the Downloads folder:
Source: Windows Central
After you complete the steps, the script will run, and if it was written correctly, you should see its output without issues.
On Windows 10, PowerShell includes four execution policies, including:
- Restricted — Stops any script from running.
- RemoteSigned — Allows scripts created on the device, but scripts created on another computer won’t run unless they include a trusted publisher’s signature.
- AllSigned — All the scripts will run, but only if a trusted publisher has signed them.
- Unrestricted — Runs any script without any restrictions.
In the above steps, we use the command to allow local scripts to run on Windows 10. However, if you’re not planning to run scripts regularly, you can restore the default settings to block untrusted scripts using the same instructions outlined above, but on step No. 4, make sure to use the Set-ExecutionPolicy Restricted command.
More Windows 10 resources
For more helpful articles, coverage, and answers to common questions about Windows 10, visit the following resources:
The Dell XPS 15 is our choice for best 15-inch laptop
For a lot of people, a 15-inch laptop is a perfect size that offers enough screen for multitasking, and in a lot of cases, some extra performance from powerful hardware. We’ve rounded up the best of the best at this size.
Halo: MCC’s live service elements make it better, not worse
Halo: The Master Chief Collection is more popular than ever, but some fans don’t agree with the live service approach 343 Industries has taken with it. Here’s why those elements are, at the end of the day, great for the game and for Halo overall.
Microsoft’s Surface Duo is not ‘failing up’
Microsoft announced this week that it was expanding Surface Duo availability to nine new commercial markets. While Surface Duo is undoubtedly a work in progress, this is not a sign of a disaster. It’s also doesn’t mean that Surface Duo is selling a ton either. Instead, the reason for the expansion is a lot more straightforward.
These are the best PC sticks when you’re on the move
Instant computer — just add a screen. That’s the general idea behind the ultra-portable PC, but it can be hard to know which one you want. Relax, we have you covered!
About Scripts
Short description
Describes how to run and write scripts in PowerShell.
Long description
A script is a plain text file that contains one or more PowerShell commands. PowerShell scripts have a .ps1 file extension.
Running a script is a lot like running a cmdlet. You type the path and file name of the script and use parameters to submit data and set options. You can run scripts on your computer or in a remote session on a different computer.
Writing a script saves a command for later use and makes it easy to share with others. Most importantly, it lets you run the commands simply by typing the script path and the filename. Scripts can be as simple as a single command in a file or as extensive as a complex program.
Scripts have additional features, such as the #Requires special comment, the use of parameters, support for data sections, and digital signing for security. You can also write Help topics for scripts and for any functions in the script.
How to run a script
Before you can run a script on Windows, you need to change the default PowerShell execution policy. Execution policy does not apply to PowerShell running on non-Windows platforms.
The default execution policy, Restricted , prevents all scripts from running, including scripts that you write on the local computer. For more information, see about_Execution_Policies.
The execution policy is saved in the registry, so you need to change it only once on each computer.
To change the execution policy, use the following procedure.
At the command prompt, type:
The change is effective immediately.
To run a script, type the full name and the full path to the script file.
For example, to run the Get-ServiceLog.ps1 script in the C:\Scripts directory, type:
To run a script in the current directory, type the path to the current directory, or use a dot to represent the current directory, followed by a path backslash ( .\ ).
For example, to run the ServicesLog.ps1 script in the local directory, type:
If the script has parameters, type the parameters and parameter values after the script filename.
For example, the following command uses the ServiceName parameter of the Get-ServiceLog script to request a log of WinRM service activity.
As a security feature, PowerShell does not run scripts when you double-click the script icon in File Explorer or when you type the script name without a full path, even when the script is in the current directory. For more information about running commands and scripts in PowerShell, see about_Command_Precedence.
Run with PowerShell
Beginning in PowerShell 3.0, you can run scripts from File Explorer.
To use the «Run with PowerShell» feature:
Run File Explorer, right-click the script filename and then select «Run with PowerShell».
The «Run with PowerShell» feature is designed to run scripts that do not have required parameters and do not return output to the command prompt.
Running scripts on other computers
To run a script on one or more remote computers, use the FilePath parameter of the Invoke-Command cmdlet.
Enter the path and filename of the script as the value of the FilePath parameter. The script must reside on the local computer or in a directory that the local computer can access.
The following command runs the Get-ServiceLog.ps1 script on the remote computers named Server01 and Server02.
Get help for scripts
The Get-Help cmdlet gets the help topics for scripts as well as for cmdlets and other types of commands. To get the help topic for a script, type Get-Help followed by the path and filename of the script. If the script path is in your Path environment variable, you can omit the path.
For example, to get help for the ServicesLog.ps1 script, type:
How to write a script
A script can contain any valid PowerShell commands, including single commands, commands that use the pipeline, functions, and control structures such as If statements and For loops.
To write a script, open a new file in a text editor, type the commands, and save them in a file with a valid filename with the .ps1 file extension.
The following example is a simple script that gets the services that are running on the current system and saves them to a log file. The log filename is created from the current date.
To create this script, open a text editor or a script editor, type these commands, and then save them in a file named ServiceLog.ps1 .
Parameters in scripts
To define parameters in a script, use a Param statement. The Param statement must be the first statement in a script, except for comments and any #Require statements.
Script parameters work like function parameters. The parameter values are available to all of the commands in the script. All of the features of function parameters, including the Parameter attribute and its named arguments, are also valid in scripts.
When running the script, script users type the parameters after the script name.
The following example shows a Test-Remote.ps1 script that has a ComputerName parameter. Both of the script functions can access the ComputerName parameter value.
To run this script, type the parameter name after the script name. For example:
For more information about the Param statement and the function parameters, see about_Functions and about_Functions_Advanced_Parameters.
Writing help for scripts
You can write a help topic for a script by using either of the two following methods:
Comment-Based Help for Scripts
Create a Help topic by using special keywords in the comments. To create comment-based Help for a script, the comments must be placed at the beginning or end of the script file. For more information about comment-based Help, see about_Comment_Based_Help.
XML-Based Help for Scripts
Create an XML-based Help topic, such as the type that is typically created for cmdlets. XML-based Help is required if you are translating Help topics into multiple languages.
To associate the script with the XML-based Help topic, use the .ExternalHelp Help comment keyword. For more information about the ExternalHelp keyword, see about_Comment_Based_Help. For more information about XML-based help, see How to Write Cmdlet Help.
Returning an exit value
By default, scripts do not return an exit status when the script ends. You must use the exit statement to return an exit code from a script. By default, the exit statement returns 0 . You can provide a numeric value to return a different exit status. A nonzero exit code typically signals a failure.
On Windows, any number between [int]::MinValue and [int]::MaxValue is allowed.
On Unix, only positive numbers between [byte]::MinValue (0) and [byte]::MaxValue (255) are allowed. A negative number in the range of -1 through -255 is automatically translated into a positive number by adding 256. For example, -2 is transformed to 254 .
In PowerShell, the exit statement sets the value of the $LASTEXITCODE variable. In the Windows Command Shell (cmd.exe), the exit statement sets the value of the %ERRORLEVEL% environment variable.
Any argument that is non-numeric or outside the platform-specific range is translated to the value of 0 .
Script scope and dot sourcing
Each script runs in its own scope. The functions, variables, aliases, and drives that are created in the script exist only in the script scope. You cannot access these items or their values in the scope in which the script runs.
To run a script in a different scope, you can specify a scope, such as Global or Local, or you can dot source the script.
The dot sourcing feature lets you run a script in the current scope instead of in the script scope. When you run a script that is dot sourced, the commands in the script run as though you had typed them at the command prompt. The functions, variables, aliases, and drives that the script creates are created in the scope in which you are working. After the script runs, you can use the created items and access their values in your session.
To dot source a script, type a dot (.) and a space before the script path.
After the UtilityFunctions.ps1 script runs, the functions and variables that the script creates are added to the current scope.
For example, the UtilityFunctions.ps1 script creates the New-Profile function and the $ProfileName variable.
If you run the UtilityFunctions.ps1 script in its own script scope, the New-Profile function and the $ProfileName variable exist only while the script is running. When the script exits, the function and variable are removed, as shown in the following example.
When you dot source the script and run it, the script creates the New-Profile function and the $ProfileName variable in your session in your scope. After the script runs, you can use the New-Profile function in your session, as shown in the following example.
For more information about scope, see about_Scopes.
Scripts in modules
A module is a set of related PowerShell resources that can be distributed as a unit. You can use modules to organize your scripts, functions, and other resources. You can also use modules to distribute your code to others, and to get code from trusted sources.
You can include scripts in your modules, or you can create a script module, which is a module that consists entirely or primarily of a script and supporting resources. A script module is just a script with a .psm1 file extension.
For more information about modules, see about_Modules.
Other script features
PowerShell has many useful features that you can use in scripts.
#Requires — You can use a #Requires statement to prevent a script from running without specified modules or snap-ins and a specified version of PowerShell. For more information, see about_Requires.
$PSCommandPath — Contains the full path and name of the script that is being run. This parameter is valid in all scripts. This automatic variable is introduced in PowerShell 3.0.
$PSScriptRoot — Contains the directory from which a script is being run. In PowerShell 2.0, this variable is valid only in script modules ( .psm1 ). Beginning in PowerShell 3.0, it is valid in all scripts.
$MyInvocation — The $MyInvocation automatic variable contains information about the current script, including information about how it was started or «invoked.» You can use this variable and its properties to get information about the script while it is running. For example, the $MyInvocation .MyCommand.Path variable contains the path and filename of the script. $MyInvocation .Line contains the command that started the script, including all parameters and values.
Beginning in PowerShell 3.0, $MyInvocation has two new properties that provide information about the script that called or invoked the current script. The values of these properties are populated only when the invoker or caller is a script.
PSCommandPath contains the full path and name of the script that called or invoked the current script.
PSScriptRoot contains the directory of the script that called or invoked the current script.
Unlike the $PSCommandPath and $PSScriptRoot automatic variables, which contain information about the current script, the PSCommandPath and PSScriptRoot properties of the $MyInvocation variable contain information about the script that called the current script.
Data sections — You can use the Data keyword to separate data from logic in scripts. Data sections can also make localization easier. For more information, see about_Data_Sections and about_Script_Internationalization.
Script Signing — You can add a digital signature to a script. Depending on the execution policy, you can use digital signatures to restrict the running of scripts that could include unsafe commands. For more information, see about_Execution_Policies and about_Signing.