Chapter 2: PowerShell Basics and Syntax
Learn the fundamental syntax of PowerShell, including commands (cmdlets), pipelines, and basic command structure, and understand how to execute PowerShell scripts.
In this chapter, we’ll explore the foundational elements of PowerShell, covering its command syntax, basic structures, and key concepts like cmdlets and pipelines. Mastering these basics will provide you with the skills needed to start building effective scripts and automating tasks in PowerShell.
Understanding Cmdlets and Their Structure
PowerShell commands are known as cmdlets, which follow a standardized naming convention that makes them easy to understand. Cmdlets use a Verb-Noun structure, making it clear what each cmdlet does. For example:
Get-Process
: Retrieves a list of active processes.Set-Service
: Modifies the properties of a specified service.New-Item
: Creates a new file or directory.
This standardized structure simplifies the learning process and makes it easy to identify the purpose of a command at a glance.
Using Parameters with Cmdlets
Cmdlets often include parameters to specify options or target specific objects. Parameters are added after the cmdlet name and typically begin with a dash (-):
Get-Process -Name "explorer"
In this example, the -Name
parameter specifies that only processes named “explorer” should be retrieved.
Understanding the PowerShell Pipeline
One of PowerShell’s most powerful features is its pipeline. The pipeline allows you to pass the output of one cmdlet as input to another cmdlet, enabling you to build complex commands from simple components. The pipeline operator is represented by the vertical bar character |
:
Get-Process | Where-Object { $_.CPU -gt 100 }
In this example, Get-Process
retrieves a list of processes, and Where-Object
filters this list to include only processes using more than 100 units of CPU.
Executing Basic PowerShell Scripts
Scripts in PowerShell are simply text files containing a sequence of cmdlets and commands. PowerShell scripts use the .ps1
file extension. To execute a script, type the path to the file in the PowerShell console:
.\myscript.ps1
The .\
notation specifies the current directory. Before running scripts, ensure your system’s execution policy allows script execution. To check or set the execution policy, use:
Set-ExecutionPolicy RemoteSigned
This command allows scripts to run if they are signed or created locally.
Basic Syntax and Common Operators
PowerShell supports a range of operators, which allow you to perform calculations, compare values, and manage logical conditions. Some common operators include:
- Arithmetic:
+
(addition),-
(subtraction),*
(multiplication),/
(division) - Comparison:
-eq
(equal),-ne
(not equal),-gt
(greater than),-lt
(less than) - Logical:
-and
(logical AND),-or
(logical OR),-not
(logical NOT)
These operators enable you to create more complex conditions and perform operations within your scripts.
Working with Aliases in PowerShell
PowerShell provides aliases, or shortcuts, for frequently used cmdlets. For example, ls
is an alias for Get-ChildItem
, and cat
is an alias for Get-Content
. Use Get-Alias
to view available aliases:
Get-Alias
Aliases make it easier to work in PowerShell by reducing the amount of typing required for common commands.
Understanding Comments in PowerShell Scripts
Comments are essential in scripting, as they help document the purpose of code for future reference. Use the #
symbol to add a single-line comment:
# This is a single-line comment
For multi-line comments, enclose the text within <#
and #>
:
<#
This is a multi-line comment
that spans several lines
#>
Comments improve code readability, especially in complex scripts, and are useful for collaborative work.
Summary and Next Steps
In this chapter, we covered PowerShell’s basic syntax, cmdlet structure, parameters, pipelines, and script execution. We also explored common operators, aliases, and comments, laying the foundation for more advanced PowerShell scripting. In the next chapter, we’ll dive into variables and data types, essential tools for managing data within your scripts.