Introduction to PowerShell for Office 365 Global Tenant Admins

Preview:

Citation preview

Online Conference

June 17th and 18th 2015EVENTS.COLLAB365.COMMUNITY

Introduction to PowerShell

EVENTS.COLLAB365.COMMUNITY

Who is Michael

Blumenthal?

Michael@Blumenthalit.com

Twitter: @MichaelBL

LinkedIn: http://bit.ly/MBB-LI

https://michaelblumenthal.me

TechCommunity.Microsoft.com

Tenant Admin at a leading broadcast media

company

Office 365 MVP

Dev/ITPro Mix

In IT Consulting since 1995

PowerShelling since 2007

Contact

EVENTS.COLLAB365.COMMUNITY

What is PowerShell?

EVENTS.COLLAB365.COMMUNITY

Why is PowerShell AWESOME?

Write-Host “SO easy to use!”

No Compiling!

EVENTS.COLLAB365.COMMUNITY

• It’s Easy to Get Started!1

• Learn the PowerShell Syntax2

• Working with O3653

• Best Practices4

PowerShell puts .NET at your fingertips!

EVENTS.COLLAB365.COMMUNITY

Chapter 1

It’s Easy to get Started!

EVENTS.COLLAB365.COMMUNITY

Getting Started with PowerShell

20032008,R22012, R22016

7, 8, 8.1, 10

EVENTS.COLLAB365.COMMUNITY

The Command Line Window

EVENTS.COLLAB365.COMMUNITY

Windows FeatureWin 8.x

Win 8-10

EVENTS.COLLAB365.COMMUNITY

The Integrated Script Editor

EVENTS.COLLAB365.COMMUNITY

PowerShell V3-5 ISE

EVENTS.COLLAB365.COMMUNITY

Intellisense!

EVENTS.COLLAB365.COMMUNITY

Chapter 2

Learn the PowerShell Syntax!

EVENTS.COLLAB365.COMMUNITY

Symbols, Keywords, and Syntax! Oh My!

• Variables1

• Commands2

• Piping3

• Comparisons4

• Flow Control5

• Filtering6

EVENTS.COLLAB365.COMMUNITY

Reading Symbols in Code• (tal Guidance

• Moe, Larry, and }

• The universe started with the Big !

• !Important

• A # of Bacon and # Browns

EVENTS.COLLAB365.COMMUNITY

Variables

• Case Insensitive, Dynamic typing

$something

$true, $false, $null, $profile

$myMessage= “Hello, World”

1

EVENTS.COLLAB365.COMMUNITY

Commands are called cmdlets.

Verb-Noun

Built-in, Extensible

Get-Help

Get-Member

Get-Command

2

EVENTS.COLLAB365.COMMUNITY

Help!

Discoverability

EVENTS.COLLAB365.COMMUNITY

Get-Command• Find Cmdlets

• Get details of cmdlets and applications

EVENTS.COLLAB365.COMMUNITY

Aliases

• Dir

• Sort

• Select

• Foreach, also %

Alias cmdlet

• Get-ChildItem

• Sort-object

• Select-object

• Foreach-object

EVENTS.COLLAB365.COMMUNITY

The Power of Piping!

Output Of Command 1

Input of Command 2

3

EVENTS.COLLAB365.COMMUNITY

Example

EVENTS.COLLAB365.COMMUNITY

EVENTS.COLLAB365.COMMUNITY

Dial zero for an…4

Operator

-eq -le

-ne -like

-gt -notlike

-ge -match

-lt -notmatch

Example

EVENTS.COLLAB365.COMMUNITY

Taking Control of the Flow• If (Test) {Commands} else {Commands}

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

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

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

• Foreach (Item in Collection) {Commands}

• Foreach ($gumball in $CandyBag) {$gumball.color}• Collection | Foreach {Commands}

ForEach

• While (Condition){Commands}

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

5

EVENTS.COLLAB365.COMMUNITY

Example

EVENTS.COLLAB365.COMMUNITY

Where-Object

•Where {<Test>}Syntax

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

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

Example

6

EVENTS.COLLAB365.COMMUNITY

Executing Scripts

.\filename.ps1

Set-ExecutionPolicyUnrestricted

EVENTS.COLLAB365.COMMUNITY

Chapter 3

Connecting To O365

EVENTS.COLLAB365.COMMUNITY

Get the Cmdlets!Verb-MSOL*AAD

Remote SessionEXO

Verb-PNP*PNP

new-CSOnlineSession; RemoteSK4B

Verb-SPO*SPO

EVENTS.COLLAB365.COMMUNITY

EVENTS.COLLAB365.COMMUNITY

Chapter 4

Best Practices

EVENTS.COLLAB365.COMMUNITY

Use Functions• Function global:Do-Something(){• }

• Function global:Do-Something($someParameter){• }

• Function global:Do-Something{• param ([type]$someParameter=$(“Default Expression”))

• }

EVENTS.COLLAB365.COMMUNITY

Follow the Naming Convention!

•Verb-Noun• 98 Verbs

EVENTS.COLLAB365.COMMUNITY

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 name with 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 Helpcommand’s –online parameter is used.

• #>

EVENTS.COLLAB365.COMMUNITY

Search for Commands

Refresh the command list

Actions you can take

EVENTS.COLLAB365.COMMUNITY

Self Announcing Functions

EVENTS.COLLAB365.COMMUNITY

Source Code Control

EVENTS.COLLAB365.COMMUNITY

More Good Ideas

• Always read scripts before running them

EVENTS.COLLAB365.COMMUNITY

More Good Ideas• Always read scripts before running

them.

• Make yours safe when others don’t

EVENTS.COLLAB365.COMMUNITY

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

EVENTS.COLLAB365.COMMUNITY

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

EVENTS.COLLAB365.COMMUNITY

http://bit.ly/poshresResources

EVENTS.COLLAB365.COMMUNITY

Script something today!It’s Easy to Get

Started!

PowerShell Syntax

Office 365

Recommended