View
51
Download
2
Embed Size (px)
Citation preview
Online Conference
June 17th and 18th 2015EVENTS.COLLAB365.COMMUNITY
Introduction to PowerShell
EVENTS.COLLAB365.COMMUNITY
Who is Michael
Blumenthal?
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