Are you looking at some PowerShell examples? In this tutorial, I have listed 75 PowerShell script examples. These PowerShell scripting examples will help you to start with Microsoft PowerShell.
You can execute these PowerShell script examples using Visual Studio code if you are new to PowerShell.
PowerShell script example
Here is the list of 75 PowerShell script examples.
1. Checking Your PowerShell Version
Before you begin, knowing which version of PowerShell you’re running is important. The $PSVersionTable.PSVersion
command, displays the major, minor, build, and revision numbers of your PowerShell environment.
$PSVersionTable.PSVersion
2. Getting Help
PowerShell provides a built-in help system. Get-Help
followed by a cmdlet name, such as Get-Help Get-Process
, will show you detailed information about the cmdlet’s usage, parameters, examples, and more. It’s an essential command for learning and troubleshooting.
Get-Help Get-Process
3. Listing All Commands
Get-Command
List all cmdlets, functions, scripts, and aliases in your session. It’s useful for discovering the commands you can use for various tasks.
Get-Command
4. Setting Execution Policy
PowerShell’s execution policy determines which scripts can run on your system. Set-ExecutionPolicy RemoteSigned
allows you to run scripts that you’ve created and scripts from trusted sources.
Set-ExecutionPolicy RemoteSigned
5. Getting System Services
Get-Service
cmdlet lists all the services installed on your system, along with their statuses (Running, Stopped, etc.). This is useful for monitoring and managing the services that your system relies on. To list all services on your system, use:
Get-Service
6. Converting Output to HTML
The ConvertTo-Html
cmdlet converts the output of a command into an HTML formatted table. This is useful for creating reports or web content from your PowerShell data. Convert the output of a command to HTML format with:
Get-Process | ConvertTo-Html | Out-File process.html
7. Exporting to CSV
Export-Csv
cmdlet takes the output of a command and exports it to a CSV file. This is particularly useful for data analysis and sharing since CSV files can be easily opened in spreadsheet software like Microsoft Excel. To export data to a CSV file in PowerShell, use:
Get-Process | Export-Csv -Path processes.csv
8. Sorting Objects
Sort-Object
cmdlet in PowerShell sorts objects by property values. You can sort information like process names, file sizes, or dates to organize your data more effectively. Sort the output of a command by a specific property:
Get-Process | Sort-Object -Property CPU
9. Filtering with Where-Object
Where-Object
cmdlet filters objects based on specified criteria. It allows you to retrieve only the items that match certain conditions, such as processes using more than a certain amount of CPU. Filter the results of a command using Where-Object
in PowerShell.
Get-Process | Where-Object { $_.CPU -gt 10 }
10. Fetching Event Logs
Get-EventLog
cmdlet retrieves event log entries. This can be used to analyze system events, application errors, security logs, and more. Retrieve event logs with the below PowerShell command:
Get-EventLog -LogName Application -Newest 50
11. Stopping a Process
Stop-Process
cmdlet stops one or more running processes. The -Force
parameter ensures that the process is stopped even if it’s not responding. To stop a process, use the below PowerShell command:
Stop-Process -Name notepad -Force
12. Starting a Process
Start-Process
cmdlet initiates a process on the local computer, such as opening an application or running a script. To start a process like Notepad, use the PowerShell command below.
Start-Process notepad.exe
13. Getting Process Information
Select-Object
cmdlet selects specific properties of objects, allowing you to customize the information you retrieve about processes or other data types. To get detailed information about processes, use the below PowerShell command.
Get-Process | Select-Object Name,ID,CPU
14. Creating a New Directory
New-Item
cmdlet creates new items, such as files or directories. Specifying -ItemType Directory
creates a new folder at the specified path. Create a new folder with the below PowerShell cmdlets.
New-Item -Path 'C:\NewFolder' -ItemType Directory
15. Copying Files
Copy-Item
cmdlet copies a file or folder from one location to another in PowerShell. It’s a basic but essential task for file management. Copy a file from one location to another with:
Copy-Item -Path C:\file.txt -Destination C:\backup\file.txt
16. Deleting Files
Remove-Item
cmdlet deletes files or folders. It’s a straightforward way to clean up your file system. To delete a file, use the below PowerShell command:
Remove-Item -Path C:\file.txt
17. Moving Files
Move-Item
cmdlet moves a file or folder to a new location. This is useful for organizing files and directories on your system. Move a file to a new location with the below PowerShell command.
Move-Item -Path C:\file.txt -Destination C:\backup\file.txt
18. Renaming Files
Rename-Item
cmdlet changes the name of an existing item, such as a file or folder, to a new name. Use the PowerShell code to rename a file:
Rename-Item -Path C:\file.txt -NewName file_new.txt
19. Reading File Content
Get-Content
cmdlet reads the content of a file and displays it in the PowerShell console. This is handy for quickly viewing text files without opening them in an editor. Read the content of a text file with the below PowerShell script example.
Get-Content -Path C:\file.txt
20. Writing to Files
Out-File
cmdlet writes output to a file. You can use it to save data generated by your scripts. Write content to a file using the below PowerShell code:
"New content" | Out-File -FilePath C:\file.txt
21. Appending to Files
Add-Content
cmdlet adds content to the end of a file without overwriting the existing content. It’s useful for logging and data accumulation. Append content to an existing file with:
"Additional content" | Add-Content -Path C:\file.txt
22. Getting the Current Date and Time
To retrieve the current date and time, you can use the Get-Date
cmdlet. This is useful for timestamping, logging, or starting a time-based operation.
$currentDate = Get-Date
Write-Host "The current date and time is: $currentDate"
This script will display the current date and time in the console.
23. Formatting Dates
You can format the date and time in a specific way using the -Format
parameter with the Get-Date
cmdlet. This is particularly useful when you need to display or log dates in a certain format.
$formattedDate = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Write-Host "The formatted date and time is: $formattedDate"
This script will display the date and time in a format commonly used for logs or file names.
24. Comparing Dates
Comparing two dates is a common task in scripting. You can compare dates to find out which is earlier or later, or if two dates are the same.
$date1 = Get-Date "2023-01-01"
$date2 = Get-Date "2023-12-31"
if ($date1 -lt $date2) {
Write-Host "$date1 is earlier than $date2"
} else {
Write-Host "$date1 is the same as or later than $date2"
}
This script compares two dates and outputs which one is earlier.
25. Calculating Date Differences
To calculate the difference between two dates, you can subtract one from the other. This can help determine time spans, such as the number of days until a certain event. Below are the PowerShell programs.
$startDate = Get-Date "2023-01-01"
$endDate = Get-Date "2023-12-31"
$timeSpan = $endDate - $startDate
Write-Host "The difference is: $($timeSpan.Days) days"
This script calculates the number of days between two dates and displays the result.
26. Adding or Subtracting Time from a Date
PowerShell allows you to easily add or subtract time from a date using the AddDays
, AddHours
, AddMinutes
, and similar methods available on date objects.
$originalDate = Get-Date
$futureDate = $originalDate.AddDays(30)
$pastDate = $originalDate.AddDays(-30)
Write-Host "30 days from now: $futureDate"
Write-Host "30 days ago: $pastDate"
This script shows how to calculate dates 30 days in the future and 30 days in the past from the current date.
27. Basic For Loop
A for
loop repeats a block of code a set number of times. Here is a simple PowerShell loop example.
for ($i = 0; $i -lt 5; $i++) {
Write-Host "Iteration number: $i"
}
This loop will print the iteration number five times, from 0 to 4.
28. ForEach Loop Through a Collection
The foreach
loop iterates through each item in a collection, such as an array. Here is a PowerShell script example.
$names = @('Alice', 'Bob', 'Charlie')
foreach ($name in $names) {
Write-Host "Hello, $name!"
}
This loop will greet each person in the $names
array.
29. While Loop
A while
loop continues to execute as long as the specified condition is true. Below is an example of a PowerShell script.
$count = 1
while ($count -le 5) {
Write-Host "Count is: $count"
$count++
}
This loop will print the value of $count
until it is greater than 5.
30. Do-While Loop
The do-while
loop executes the code block at least once, and then repeats the loop as long as the condition is true.
$count = 1
do {
Write-Host "Count is: $count"
$count++
} while ($count -le 5)
This loop behaves like the while
loop, but ensures the code inside the loop runs at least once.
31. Do-Until Loop
The do-until
loop is similar to do-while
, but it continues until the condition becomes true. Below is the PowerShell example.
$count = 6
do {
Write-Host "Count is: $count"
$count++
} until ($count -gt 10)
This loop will run until $count
is greater than 10.
32. Infinite Loop
An infinite loop runs continuously until it’s stopped manually or by a break
statement. Here is an example PowerShell script.
while ($true) {
Write-Host "Press CTRL+C to stop."
Start-Sleep -Seconds 2
}
This loop will run forever, printing a message every 2 seconds.
33. Looping with Break
The break
statement exits a loop immediately, regardless of the loop’s condition in PowerShell.
$numbers = 1..10
foreach ($number in $numbers) {
if ($number -eq 5) {
Write-Host "Breaking out of the loop at number: $number"
break
}
Write-Host "Number: $number"
}
This loop will stop once it reaches the number 5.
34. Looping with Continue
The continue
statement skips the rest of the loop block and starts the next iteration.
$numbers = 1..10
foreach ($number in $numbers) {
if ($number % 2 -eq 0) {
continue
}
Write-Host "Odd Number: $number"
}
This loop will print only the odd numbers, skipping even numbers due to the continue
statement.
35. Testing Network Connection
Test-NetConnection
cmdlet performs a network connectivity test to a specified remote destination, providing details about the path and quality of the connection. Check the network connection to a host:
Test-NetConnection -ComputerName google.com
36. Getting IP Configuration
Get-NetIPConfiguration
cmdlet retrieves IP configuration information, including IP address, DNS servers, and gateway for all network adapters. Retrieve IP configuration details with the below useful PowerShell scripts.
Get-NetIPConfiguration
37. Finding Large Files
Combining Get-ChildItem
with Where-Object
, you can search for files over a certain size, which helps in disk cleanup and management. Find files larger than a specific size:
Get-ChildItem -Path C:\ -Recurse | Where-Object { $_.Length -gt 1GB }
38. Getting Disk Space
Get-PSDrive
cmdlet retrieves information about drives on your system, including used and available space. Check the available disk space:
Get-PSDrive -PSProvider FileSystem
39. Sending Email
Send-MailMessage
cmdlet allows you to send emails from within PowerShell, automating email notifications and alerts. Send an email using PowerShell:
Send-MailMessage -From 'you@example.com' -To 'someone@example.com' -Subject 'Test email' -Body 'This is a test email' -SmtpServer 'smtp.example.com'
40. Downloading Files from the Internet
Invoke-WebRequest
cmdlet can download files from the internet to your local drive, useful for automated downloads and updates. Download a file from the web by using the PowerShell code:
Invoke-WebRequest -Uri http://example.com/file.zip -OutFile C:\file.zip
41. Creating a ZIP Archive
Compress-Archive
cmdlet creates a new zip file containing specified files or folders, which is great for data compression and archiving. Create a compressed zip file using the below PowerShell command:
Compress-Archive -Path C:\folder -DestinationPath C:\archive.zip
42. Extracting ZIP Files
Expand-Archive
cmdlet extracts files from a zip archive to a specified destination, allowing you to decompress files easily. Extract a zip file with the below PowerShell script example.
Expand-Archive -Path C:\archive.zip -DestinationPath C:\folder
43. Listing Installed Programs
By querying the Windows registry using Get-ItemProperty
, you can list installed programs on a Windows system. By using the below PowerShell example, you can get a list of installed programs on Windows:
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate
44. Changing Directory
Set-Location
cmdlet changes the current working directory to a specified path, similar to the cd
command in other shells. To change the current directory to another directory in PowerShell use the below cmdlet:
Set-Location -Path C:\NewFolder
45. Listing Directory Contents
Get-ChildItem
cmdlet lists the items in a directory, including files and subdirectories. List all items in the current directory using the below PowerShell examples.
Get-ChildItem
46. Creating a New File
New-Item
can also create files, not just directories. Specifying -ItemType File
creates a new file at the given path. Create a new text file using the below PowerShell script:
New-Item -Path 'C:\NewTextFile.txt' -ItemType File
47. Monitoring System Performance
Get-Counter
cmdlet retrieves performance counter data, such as CPU and memory usage, which can be used for monitoring and troubleshooting. Monitor CPU and memory usage:
Get-Counter -Counter "\Processor(_Total)\% Processor Time", "\Memory\Available MBytes"
48. Finding System Uptime
This script calculates how long the system has been running by subtracting the last boot-up time from the current date and time. Find out how long the system has been running:
(Get-Date) - (gcim Win32_OperatingSystem).LastBootUpTime
49. Listing Environment Variables
Get-ChildItem Env:
lists all current environment variables, which can be important for understanding the context in which programs run. List all environment variables using PowerShell script:
Get-ChildItem Env:
50. Adding Environment Variables
Using the $env:
scope, you can create or modify environment variables within your PowerShell session. Add a new environment variable using PowerShell, execute:
$env:MyVariable = "MyValue"
51. Removing Environment Variables
RRemove-Item
can also be used to delete environment variables by specifying the Env:
scope. Remove an environment variable:
Remove-Item Env:MyVariable
52. Running a Remote Command
Invoke-Command
allows you to execute scripts or commands on remote computers, facilitating remote management. Execute a command on a remote computer:
Invoke-Command -ComputerName RemotePC
53. Creating a PowerShell Script File
Out-File
can be used to create a script by redirecting a string into a .ps1
file, which is the extension for PowerShell scripts. To write a script, save your commands in a .ps1
file:
"Notepad.exe" | Out-File -FilePath C:\Scripts\MyScript.ps1
54. Running a PowerShell Script
The call operator &
allows you to execute a PowerShell script file by specifying its path. Execute a script by calling its path:
& "C:\Scripts\MyScript.ps1"
55. Scheduling a Job with Task Scheduler
New-ScheduledTaskAction
and New-ScheduledTaskTrigger
are used to create a scheduled task that runs a PowerShell script at a specified time. Schedule a PowerShell script to run at a specific time:
$Action = New-ScheduledTaskAction -Execute 'PowerShell.exe' -Argument 'C:\Scripts\MyScript.ps1'
$Trigger = New-ScheduledTaskTrigger -At 7am -Daily
Register-ScheduledTask -Action $Action -Trigger $Trigger -TaskName "MyTask" -Description "My daily PowerShell script"
56. Listing All Drives
Get-PSDrive
lists all drives on your system, including network drives, CD-ROMs, and more. Get a list of all drives on your system using the below PowerShell cmdlet.
Get-PSDrive
57. Checking Service Status
Get-Service
with the -Name
parameter checks the status of a specific service by name. Check the status of a specific service:
Get-Service -Name "wuauserv"
58. Restarting a Service
Restart-Service
cmdlet stops and then starts a service, which can be useful for troubleshooting or applying changes. To restart a service, use the below PowerShell script example.
Restart-Service -Name "wuauserv"
59. Creating a Custom Object
The New-Object
cmdlet with the PSObject
type and a hashtable of properties allow you to create an object with custom properties. This can be used to store and manipulate data in a structured form. Create a custom object with specific properties using PowerShell:
$customObject = New-Object PSObject -Property @{
Name = 'John Doe'
Age = 30
JobTitle = 'Software Developer'
}
60. Filtering Event Logs
By combining Get-EventLog
with Where-Object
, you can filter event logs for specific types of entries or time frames, which is useful for system diagnostics and monitoring. Filter event logs by entry type or date using the simple PowerShell script example below.
Get-EventLog -LogName System | Where-Object { $_.EntryType -eq 'Error' -and $_.TimeGenerated -gt (Get-Date).AddDays(-1) }
61. Getting BIOS Information
The Get-WmiObject
cmdlet with the Win32_BIOS
class retrieves BIOS information from your system. This can include details like the BIOS version, manufacturer, and serial number. Retrieve BIOS information from your system using the below PowerShell scripts.
Get-WmiObject Win32_BIOS
62. Checking for Admin Rights
This script checks whether the current PowerShell session has administrative privileges by using the .NET class WindowsPrincipal
. This is important for scripts that require elevated permissions to run correctly. Check if you’re running PowerShell with administrator privileges by using the sample PowerShell script.
if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
Write-Host "You are not running PowerShell as an Administrator."
}
63. Updating Help Files
The Update-Help
cmdlet downloads the latest help files for PowerShell cmdlets, ensuring that you have access to the most current documentation and examples. Update PowerShell help files to the latest version:
Update-Help
64. Creating a Multi-Line Comment
In PowerShell, anything between <#
and #>
is treated as a comment and ignored by the interpreter. Multi-line comments are useful for adding detailed explanations or documentation within scripts. You can create a multi-line comment in your scripts like this:
<#
This is a multi-line comment.
It can span several lines.
#>
65. Creating an Array
In PowerShell, arrays are created by enclosing a comma-separated list of values in @()
.
$myArray = @('apple', 'banana', 'cherry')
Write-Host "The array contains: $myArray"
This command creates an array $myArray
with three elements: ‘apple’, ‘banana’, and ‘cherry’. The Write-Host
command then outputs the entire array as a string.
66. Accessing Array Elements
Each item in an array is assigned a unique index, starting with 0 for the first element.
$myArray = @('apple', 'banana', 'cherry')
Write-Host "The first element is: $($myArray[0])"
Here, $myArray[0]
accesses the first element of $myArray
, which is ‘apple’. The parentheses around $myArray[0]
are necessary to ensure the array element is evaluated before being concatenated into the string.
67. Modifying an Array Element
You can change the value of an array element by specifying its index.
$myArray = @('apple', 'banana', 'cherry')
$myArray[1] = 'blueberry'
Write-Host "The modified array contains: $myArray"
This script changes the second element (at index 1) from ‘banana’ to ‘blueberry’. The array now contains ‘apple’, ‘blueberry’, and ‘cherry’.
68. Adding Elements to an Array
The +=
operator appends an item to the end of an array.
$myArray = @('apple', 'banana', 'cherry')
$myArray += 'date'
Write-Host "The array now contains: $myArray"
The +=
operator takes the existing array and adds ‘date’ as the last element, expanding the array’s size.
69. Iterating Over an Array
The foreach
loop goes through each element in an array, executing the code block for each one.
$myArray = @('apple', 'banana', 'cherry')
foreach ($item in $myArray) {
Write-Host "Fruit: $item"
}
In this example, the loop prints out each element in $myArray
with the prefix “Fruit:”. It’s a common way to perform operations on each item in an array.
70. Filtering an Array
Where-Object
filters an array based on a script block that returns true or false.
$myArray = @(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
$evenNumbers = $myArray | Where-Object { $_ % 2 -eq 0 }
Write-Host "Even numbers: $evenNumbers"
In this script, $_
represents each number in the pipeline, and the script block { $_ % 2 -eq 0 }
evaluates to true for even numbers. The result is a new array $evenNumbers
that contains only the even numbers from $myArray
.
71. Basic PowerShell Function
A simple function that prints a greeting to the console using the below PowerShell example.
function Say-Hello {
Write-Host "Hello, World!"
}
Say-Hello
When you call Say-Hello
, it invokes the Write-Host
cmdlet that outputs “Hello, World!” to the console.
72. PowerShell Function with Parameters
A function that takes a name as a parameter and greets the user by name. Here is a PowerShell script example.
function Greet-User {
param($Name)
Write-Host "Hello, $Name!"
}
Greet-User -Name "Alice"
The Greet-User
function uses the param
keyword to define a parameter $Name
. When you call Greet-User -Name "Alice"
, it outputs “Hello, Alice!”.
73. Function with Multiple Parameters
A function that adds two numbers and returns the result. Here is a PowerShell example of a function with multiple parameters.
function Add-Numbers {
param($Number1, $Number2)
return $Number1 + $Number2
}
$result = Add-Numbers -Number1 5 -Number2 10
Write-Host "The result is: $result"
Add-Numbers
takes two parameters, $Number1
and $Number2
, adds them, and returns the sum. The result is stored in $result
and then printed.
74. Function with Parameter Defaults
Here is a PowerShell script example of a function with a default value for a parameter.
function Get-TimeStamp {
param($Format = "yyyyMMddHHmmss")
return Get-Date -Format $Format
}
$timeStamp = Get-TimeStamp
Write-Host "The timestamp is: $timeStamp"
Get-TimeStamp
returns the current date and time in a specified format. If no format is provided, it defaults to “yyyyMMddHHmmss”.
75. Advanced Function with Parameter Validation
A function that checks if a path is a valid directory before proceeding. Here is a PowerShell script example.
function Test-Directory {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[ValidateScript({Test-Path -Path $_ -PathType Container})]
[string]$Path
)
Write-Host "The path '$Path' is a valid directory."
}
Test-Directory -Path "C:\Windows"
Test-Directory
uses advanced function features like CmdletBinding
for better integration with the PowerShell runtime and ValidateScript
to ensure that the provided $Path
is a valid directory before the function body executes.
These 75 PowerShell script examples should give beginners a solid foundation to automate tasks and manage systems using PowerShell. Remember, the best way to learn is by doing, so try out these examples, modify them, and practice writing your own scripts to become more proficient in PowerShell scripting.
You may also like:
- PowerShell Function Array Parameters
- How to Set Environment Variables Using PowerShell?
- PowerShell unblock-file
- PowerShell try catch with examples
- PowerShell Variable Naming Conventions
I am Bijay a Microsoft MVP (10 times – My MVP Profile) in SharePoint and have more than 17 years of expertise in SharePoint Online Office 365, SharePoint subscription edition, and SharePoint 2019/2016/2013. Currently working in my own venture TSInfo Technologies a SharePoint development, consulting, and training company. I also run the popular SharePoint website EnjoySharePoint.com
nice info. thank you
good works
nice job
Many thanks for your post. It is very helpful!
I need to do a script using the function Measure-EquationOfline ($Point1, $Point2) that do the follow:
Take exactly 2 arguments: $Point1and $Point2
each is a pair of (x,y)coordinates
Return a string of the format “y = mx + b”, where m and b are solved for
Format m and b so they are nice to read (1.23 instead of 1.23456789)
Return “Points are identical” if the inputs are the same
Return “Undefined Slope” if line is a straight vertical line
Make sure inputs to the function are valid, thus only one error is printed
Any ideas? I tried but it is not working
Thank you for these introductory scripts in PowerShell..
Found one error in Example-27
$factValue = $number * (Get-Factorial($number – 1))
should be
$factValue = $number * (Factorial-Of-A-Number($number – 1))
Top list for starters, thank you