47
2014 Introduction to PowerShell MICHAEL BLUMENTHAL PSC GROUP, LLC

Introduction to PowerShell at Chicago Code Camp 2015

Embed Size (px)

Citation preview

2014

Introduction to PowerShell MICHAEL BLUMENTHAL

PSC GROUP, LLC

2014

Who is Michael Blumenthal?

• Sr. Solution Architect at PSC Group

• Office 365 MVP

• CSPUG Co-Leader

• 20 years in IT Consulting

• 8 years working with PowerShell

2014

This is about you

• Anyone used PowerShell before?

• Who’s done scripting before? Windows? Unix?

• Developer or Administrator?

2014

Why PowerShell?

Command line control of

2014

PowerShell puts .NET at your fingertips!

• It’s Easy to Get Started!1

• Learn the PowerShell Syntax2

• Real World Examples3

• Best Practices4

• More Resources5

2014

Chapter 1

2014

Getting Started with PowerShell

20032008,R22012, R210

7, 8, 8.1, 10

2014

Windows Feature

2014

The Command Line Window

2014

The Integrated Script Editor

2014

PowerShell V3&4 ISE

2014

Intellisense!

2014

Chapter 2

2014

Symbols, Keywords, and Syntax! Oh My!

• Variables1

• Commands2

• Piping3

• Comparisons4

• Flow Control5

• Filtering6

2014

Reading Symbols in Code

•(tal Guidance

•Moe, Larry, and }

•The universe started with the Big !

•!Important

•A # of Bacon and # Browns

2014

Variables

• Case Insensitive, Dynamic typing

$something

$true, $false, $null, $profile

$myMessage= “Hello, World”

1

2014

Commands are called cmdlets.

Verb-Noun

Built-in, Extensible

Get-Help & Help

Get-Member

2

2014

Help!

Discoverability

2014

The Power of Piping!

Output Of Command 1

Input of Command 2

3

2014

Example

2014

Dial zero for an…4

Operator

-eq -le

-ne -like

-gt -notlike

-ge -match

-lt -notmatch

Example

2014

Taking Control of the Flow

• For (Init;Test;Repeat) {Commands}

• for($i=1; $i -le 10; $i++) {Write-Host $i}For

• Foreach (Item in Collection) {Commands}

• Foreach ($web in $site.AllWebs) {$web.Title}• Collection | Foreach {Commands}

ForEach

• If (Test) {Commands} else {Commands}

• if ($web.Title –ne “”) {Write-Host $web.Title}If

• While (Condition){Commands}

• while($val -ne 3){$val++; Write-Host $val}While

5

2014

Example

2014

Where-Object

•Where {<Test>}Syntax

• V1&2:Dir | Where {$_.Name –like “B*”}

• V3:Dir | where Name –like B*Example

6

2014

Executing Scripts

.\filename.ps1

Set-ExecutionPolicyUnrestricted

2014

Chapter 3

2014

Real World Examples

• Flash cards

•Dell Service Tag

•Audio Alerts

• File Conversion & Text Manipulation

•Managing Microsoft Server Products

2014

Flash Cards

2014

Get-DellServiceTag

• Get-WmiObject win32_SystemEnclosure | select serialnumber

2014

Audio Alerts

• Stick this at the end of your long running script:

$Voice = new-object -com SAPI.SpVoice$Voice.Speak(“Deployment is done!")

2014

File and Text Wrangling

• Word

• AutoDOCX

• RegEx

• PSObjTXT

• Export-

• CSVCSV

2014

Server Management

Server/Service What you can script

Azure Virtual Machines

Exchange Mailboxes

Office 365 Sites

SharePoint Everything

SQL Queries

Windows Server File system

2014

Chapter 4

2014

Comment your functions

• <#

• .SYNOPSIS –a brief explanation of what the script or function does.

• .DESCRIPTION – a more detailed explanation of what the script or function does.

• .PARAMETER name – an explanation of a specific parameter. Replace namewith the parameter name. You can have one of these sections for each parameter the script or function uses.

• .EXAMPLE – an example of how to use the script or function. You can have multiple .EXAMPLE sections if you want to provide more than one example.

• .NOTES – any miscellaneous notes on using the script or function.

• .LINK – a cross-reference to another help topic; you can have more than one of these. If you include a URL beginning with http:// or https://, the shell will open that URL when the Help command’s –online parameter is used.

• #>

2014

Find custom commands this way

Refresh the command list

Actions you can take once you fill in parameters

2014

Self Announcing Functions

2014

Source Code Control

2014

More Good Ideas

• Always read scripts before running them

• Make yours safe when others don’t

• Check for valid parameter values

• get-help about_Functions_Advanced_Parameters

• Do error handling

• get-help about_Try_Catch_Finally

• get-help about_CommonParameters• -ErrorAction and -ErrorVariable

2014

Chapter 5

2014

2014

2014

Script something today!

It’s Easy to Get Started!

PowerShell Syntax

More Resources

In Review…

2014

Questions

• Michael BlumenthalSr. Solution ArchitectPSC Group, LLC

[email protected]

• psclistens.com

• MichaelBlumenthal.me

• Twitter: @MichaelBL

• LinkedIn

• Microsoft Midwest Customers Yammer Network

Thank you for your time today.