PowerShell Documentation

Introduction to PowerShell

PowerShell is a cross-platform task automation and configuration management framework, consisting of a command-line shell and associated scripting language built on the .NET framework. It is designed for system administrators and power users to automate repetitive tasks and manage operating systems and applications.

Key features include:

  • Object-based pipeline: Unlike traditional shells that pass text, PowerShell passes objects, allowing for more structured data manipulation.
  • Extensive cmdlets: A rich set of built-in commands for managing various aspects of Windows and other systems.
  • Scripting language: A powerful and flexible language for creating complex automation scripts.
  • Extensibility: Supports modules for adding new functionality.

Getting Started

To begin with PowerShell, you can launch it from the Start Menu (search for "PowerShell") or use the command prompt. For cross-platform use, you can install PowerShell Core on Linux and macOS.

To check your PowerShell version, use the following cmdlet:

Get-Host | Select-Object Version

Or for PowerShell Core:

$PSVersionTable.PSVersion

Core Concepts

Understanding PowerShell's core concepts is crucial for effective usage.

Cmdlets

Cmdlets (pronounced "command-lets") are the native commands in PowerShell. They follow a Verb-Noun naming convention, like Get-Process or Set-Location.

Providers

PowerShell providers allow you to access data stores in a consistent way, similar to navigating file systems. Examples include the Registry provider, Certificate provider, and Variable provider.

Objects and Pipelines

PowerShell passes .NET objects through the pipeline, not just text. This allows you to filter, sort, and manipulate data in powerful ways.

Example: Get running processes and sort them by CPU usage.
Get-Process | Sort-Object CPU -Descending | Select-Object Name, CPU

Cmdlets

PowerShell provides a vast array of cmdlets for managing your system. You can discover cmdlets using the Get-Command cmdlet.

Get-Command -Module *

To get detailed information about a specific cmdlet, use Get-Help.

Get-Help Get-Process -Full

Scripting Basics

PowerShell scripts are saved with a .ps1 extension. They can be used to automate complex tasks, manage configurations, and much more.

A simple script to display a message:

# MyFirstScript.ps1
                    Write-Host "Hello, PowerShell!"

To execute a script, you might need to adjust your execution policy. Use Set-ExecutionPolicy with caution.

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Remoting

PowerShell Remoting allows you to run PowerShell commands and scripts on remote computers. It is enabled by default in Windows Server and can be configured on client operating systems.

To connect to a remote computer:

Enter-PSSession -ComputerName RemoteServerName

Modules

Modules are PowerShell packages that contain cmdlets, functions, variables, and providers. They help organize and reuse code. You can find and install modules from the PowerShell Gallery.

Install-Module -Name PowerShellGet