Skip to content

Instantly share code, notes, and snippets.

@pcgeek86
Last active November 10, 2025 13:48
Show Gist options
  • Select an option

  • Save pcgeek86/336e08d1a09e3dd1a8f0a30a9fe61c8a to your computer and use it in GitHub Desktop.

Select an option

Save pcgeek86/336e08d1a09e3dd1a8f0a30a9fe61c8a to your computer and use it in GitHub Desktop.
PowerShell Cheat Sheet / Quick Reference
Get-Command # Retrieves a list of all the commands available to PowerShell
# (native binaries in $env:PATH + cmdlets / functions from PowerShell modules)
Get-Help # Get all help topics
Get-Help -Name about_Variables # Get help for a specific about_* topic (aka. man page)
Get-Help -Name Get-Command # Get help for a specific PowerShell function
Get-Help -Name Get-Command -Parameter Module # Get help for a specific parameter on a specific command
###################################################
# Flow Control Statements
###################################################
if (1 -eq 1) { } # Do something if 1 is equal to 1
do { 'hi' } while ($false) # Loop while a condition is true (always executes at least once)
while ($false) { 'hi' } # While loops are not guaranteed to run at least once
while ($true) { } # Do something indefinitely
while ($true) { if (1 -eq 1) { break } } # Break out of an infinite while loop conditionally
for ($i = 0; $i -le 10; $i++) { Write-Host $i } # Iterate using a for..loop
foreach ($item in (Get-Process)) { } # Iterate over items in an array
###################################################
# Variables
###################################################
$a = 0 # Initialize a variable
[int] $a = 'Trevor' # Initialize a variable, with the specified type (throws an exception)
[string] $a = 'Trevor' # Initialize a variable, with the specified type (doesn't throw an exception)
Get-Command -Name *varia* # Get a list of commands related to variable management
Get-Variable # Get an array of objects, representing the variables in the current and parent scopes
Get-Variable | ? { $PSItem.Options -contains 'constant' } # Get variables with the "Constant" option set
Get-Variable | ? { $PSItem.Options -contains 'readonly' } # Get variables with the "ReadOnly" option set
New-Variable -Name FirstName -Value Trevor
New-Variable FirstName -Value Trevor -Option Constant # Create a constant variable, that can only be removed by restarting PowerShell
New-Variable FirstName -Value Trevor -Option ReadOnly # Create a variable that can only be removed by specifying the -Force parameter on Remove-Variable
Remove-Variable -Name firstname # Remove a variable, with the specified name
Remove-Variable -Name firstname -Force # Remove a variable, with the specified name, that has the "ReadOnly" option set
###################################################
# Functions
###################################################
# A PowerShell Advanced Function, with all three blocks declared: BEGIN, PROCESS, END
function Do-Something {
[CmdletBinding]()]
param ()
begin { }
process { }
end { }
}
###################################################
# Working with Modules
###################################################
Get-Command -Name *module* -Module mic*core # Which commands can I use to work with modules?
Get-Module -ListAvailable # Show me all of the modules installed on my system (controlled by $env:PSModulePath)
Get-Module # Show me all of the modules imported into the current session
$PSModuleAutoLoadingPreference = 0 # Disable auto-loading of installed PowerShell modules, when a command is invoked
Import-Module -Name NameIT # Explicitly import a module, from the specified filesystem path or name (must be present in $env:PSModulePath)
Remove-Module -Name NameIT # Remove a module from the scope of the current PowerShell session
New-ModuleManifest # Helper function to create a new module manifest. You can create it by hand instead.
New-Module -Name trevor -ScriptBlock { # Create an in-memory PowerShell module (advanced users)
function Add($a,$b) { $a + $b } }
New-Module -Name trevor -ScriptBlock { # Create an in-memory PowerShell module, and make it visible to Get-Module (advanced users)
function Add($a,$b) { $a + $b } } | Import-Module
###################################################
# Module Management
###################################################
Get-Command -Module PowerShellGet # Explore commands to manage PowerShell modules
Find-Module -Tag cloud # Find modules in the PowerShell Gallery with a "cloud" tag
Find-Module -Name ps* # Find modules in the PowerShell Gallery whose name starts with "PS"
Install-Module -Name NameIT -Scope CurrentUser -Force # Install a module to your personal directory (non-admin)
Install-Module -Name NameIT -Force # Install a module to your personal directory (admin / root)
Install-Module -Name NameIT -RequiredVersion 1.9.0 # Install a specific version of a module
Uninstall-Module -Name NameIT # Uninstall module called "NameIT", only if it was installed via Install-Module
Register-PSRepository -Name <repo> -SourceLocation <uri> # Configure a private PowerShell module registry
Unregister-PSRepository -Name <repo> -SourceLocation uri # Deregister a PowerShell Repository
@gitma1r1
Copy link

gitma1r1 commented Dec 7, 2022

thanks for the nice cheatsheet - like it

@AkbarAli-Duet
Copy link

thanx for the nice cheat sheet - its really helpful

@JohnnyfiveAZR
Copy link

Thankyou! appreciate it!

@889-dj
Copy link

889-dj commented Mar 4, 2023

great cheat sheet

@morskmorsk
Copy link

Thanks, very usefull

@Zenthae
Copy link

Zenthae commented Aug 31, 2023

Excellent cheat sheet, for your information, there is a typo on this line https://gist.github.com/pcgeek86/336e08d1a09e3dd1a8f0a30a9fe61c8a#file-cheatsheet-ps1-L109

[CmdletBinding]()] -> [CmdletBinding()]

@christopher-conley
Copy link

I've been using PowerShell heavily for work since the 2.0 days and I still learned some stuff from this. Thanks, my man.

@Konfekt
Copy link

Konfekt commented May 6, 2024

Just wondering if this could be appened / merged into https://learnxinyminutes.com/docs/powershell

@GnuJason
Copy link

Thanks

@SandrAdora
Copy link

Thanks alot

@Blueberry0120x
Copy link

Thank you 100000x!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment