PowerShell for Windows Admins — Where to Actually Start

A practical route into PowerShell for Windows admins: which version to run in 2026, the four commands that unlock everything else, and the habits that make scripts reliable.

powershell for windows admins getting started

Most PowerShell guides start by teaching you the language. That’s the wrong end to start from if you’re a Windows admin with a job to do. You don’t need to learn PowerShell in the abstract — you need to replace three or four things you currently do by hand, and let the rest follow from there.

This guide takes that route. It covers which version you should actually be running in 2026, the handful of commands that unlock everything else, and the specific habits that separate scripts that work on your machine from scripts that work everywhere.

Quick Facts

  • Windows PowerShell 5.1 ships with Windows and isn’t going away — it’s still what most existing scripts and scheduled tasks run on.
  • PowerShell 7.6.5 LTS (released March 2026, supported to November 2028) is the version to install for new work. It installs alongside 5.1, not over it.
  • You only need four commands to explore everything else: Get-Command, Get-Help, Get-Member and Get-Module.
  • PowerShell passes objects, not text. This is the single concept that makes everything else click.
  • Execution policy is not a security boundary — it’s a guardrail against accidents.

Which version should you actually be running?

This trips people up constantly, because there are two PowerShells on a modern Windows machine and they’re both legitimate.

Windows PowerShell 5.1PowerShell 7.6 LTS
Executablepowershell.exepwsh.exe
Ships with WindowsYesNo — separate install
Built on.NET Framework.NET 10
Cross-platformNoYes (Windows, Linux, macOS)
Supported untilLifecycle of Windows14 November 2028
Use it forExisting scripts, legacy modulesEverything new

The practical answer: install 7.6 LTS and use it for new work, but don’t rip 5.1 out. They coexist deliberately. Some older modules — particularly ones that lean on .NET Framework assemblies — still only work under 5.1, and you’ll occasionally need to drop back.

Installing is a one-liner via winget:

winget install --id Microsoft.PowerShell --source winget

Check what you’re actually running at any point with $PSVersionTable. Note that’s a variable, not a command — one of PowerShell’s small inconsistencies.

The one concept that makes PowerShell click

If you’ve come from batch files or bash, you’re used to commands producing text, which you then chop up with tools like findstr, awk or sed. PowerShell doesn’t do that. Commands produce objects — structured things with named properties.

Compare the two approaches to “find processes using more than 500MB of memory”. In a text world you’d run tasklist, then parse columns by character position and hope nothing shifts. In PowerShell:

Get-Process | Where-Object WorkingSet -gt 500MB | Sort-Object WorkingSet -Descending

No parsing. WorkingSet is a property on the object, and 500MB is a number PowerShell understands natively. Nothing breaks when a column widens or a process name contains a space.

This is why Get-Member matters more than any tutorial will tell you. Pipe anything into it and you get the full list of properties and methods available:

Get-Service | Get-Member

The four commands that unlock the rest

Quick Steps

  1. Get-Command *service* — find commands you don’t know the name of yet.
  2. Get-Help Get-Service -Examples — see real usage rather than parameter syntax.
  3. Get-Service | Get-Member — discover what properties an object actually has.
  4. Get-Module -ListAvailable — see what’s already installed and available to you.

Run Update-Help once as administrator before you rely on Get-Help — on a fresh install the help content isn’t downloaded yet, and the examples are the genuinely useful part.

If you learn better by watching someone work through it, this is a solid half-hour primer that covers the same ground before you start writing your own scripts:

Video: “Intro to PowerShell in Under 30 Minutes!” by The Cyber Mentor

Execution policy — what it does and doesn’t do

The first wall most people hit is a script refusing to run. The instinct is to set execution policy to Unrestricted and move on. Don’t.

Execution policy is not a security control — Microsoft say so explicitly. Anyone who can run PowerShell can trivially bypass it. What it is is a guardrail that stops someone double-clicking a .ps1 they were emailed. That’s worth keeping.

RemoteSigned is the sensible setting for a working admin machine: local scripts run, downloaded ones need a signature.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Note -Scope CurrentUser — it avoids needing admin rights and avoids changing the policy for every user on the machine.

Four habits that separate working scripts from fragile ones

1. Use full cmdlet names in scripts

Aliases like ls, gci and % are fine when you’re typing interactively. In a saved script they’re a liability — aliases differ between platforms and can be redefined. Write Get-ChildItem and ForEach-Object.

2. Filter left, format right

Filter as early in the pipeline as possible, and never pipe a Format-* command into anything else. Formatting destroys the objects and leaves you with display data.

# Good — filtering happens at the source
Get-ChildItem -Path C:\Logs -Filter *.log -Recurse

# Bad — pulls everything, then discards most of it
Get-ChildItem -Path C:\Logs -Recurse | Where-Object Name -like "*.log"

3. Use -WhatIf before anything destructive

Most commands that change something support -WhatIf. It tells you what would happen without doing it. Make it reflex on anything with Remove, Set, Stop or Disable in the name.

4. Don’t build paths by hand

Use Join-Path rather than string concatenation. It handles trailing separators correctly and survives being run on a machine configured differently to yours.

Glossary

TermWhat it means
CmdletA built-in PowerShell command, always named Verb-Noun (e.g. Get-Service).
PipelinePassing the output of one command into the next using |. In PowerShell these are objects, not text.
ObjectA structured item with named properties, rather than a line of text to be parsed.
ModuleA packaged collection of cmdlets, e.g. the ActiveDirectory module.
PSGalleryMicrosoft’s public repository of community and vendor modules.
Execution policyA safety guardrail controlling which scripts run. Not a security boundary.
SplattingPassing parameters via a hashtable to keep long commands readable.

Frequently asked questions

Do I need to uninstall Windows PowerShell 5.1 before installing PowerShell 7?

No, and you shouldn’t. They install to different locations and run as different executables — powershell.exe and pwsh.exe. Windows components and older modules still depend on 5.1.

Is PowerShell 7 a replacement for Windows PowerShell?

For new work, yes. As a wholesale replacement, no. Windows PowerShell 5.1 remains a supported component of Windows and continues to receive security fixes as part of the operating system, but it isn’t getting new features.

Why does my script work interactively but fail as a scheduled task?

Almost always one of three things: it runs as a different account without the same permissions, it relies on a mapped drive that only exists in your interactive session, or it assumes a working directory. Use full UNC paths and never assume the current directory.

Should I learn PowerShell or Python as a Windows admin?

PowerShell first, if your day job is Windows. It’s already on every machine you manage, it talks natively to Active Directory, Exchange, Microsoft 365 and Azure, and it doesn’t need a runtime deploying. Python is a good second language, not a substitute.

What’s the difference between LTS and Stable releases?

LTS releases get a longer support window — 7.6 LTS is supported until November 2028. Stable releases get newer features but shorter support. For production admin work, take the LTS.

Where to go next

Pick one thing you currently do by hand every week and rewrite it. Not something critical — something annoying. Exporting a list of users, checking disk space across servers, clearing a log directory. You’ll learn more from one script you actually use than from any amount of reading.

🛠️

Gear We Recommend

Testing scripts is easier with a dedicated admin machine set up right. Here’s the kit we use.

Browse our Admin Machine picks on Amazon

As an Amazon Associate, TechyGeeksHome earns from qualifying purchases

Disclosure: this post may contain affiliate links. If you buy through one of them, we may earn a small commission at no extra cost to you. We only recommend products we’ve tested or genuinely rate.


Discover more from TechyGeeksHome

Subscribe to get the latest posts sent to your email.

Andrew Armstrong

Andrew Armstrong is a UK-based IT professional with 26+ years of hands-on experience in Windows, Windows Server, SCCM/ConfigMgr, Active Directory, PowerShell, and enterprise infrastructure.

He founded TechyGeeksHome in 2010 and has published over 1,500 practical guides covering real-world IT problems and solutions. When not solving IT problems,

Andrew develops free Windows utilities including Ultimate Settings Panel, which has been downloaded over 850,000 times.

Leave a Reply

Your email address will not be published. Required fields are marked *