powershell: automation for everyone
DESCRIPTION
Intergen's Solution Architect and Microsoft MVP Gavin Barron presented "PowerShell: Automation for everyone" during the MVP CompCamp 2014, a worldwide event ran during the weekend of 22-23 March 2014. Gavin's blog: http://gavinb.net/TRANSCRIPT
Gavin Barron, Solution ArchitectMarch 22, 2014
ComCamp Auckland
PowerShell: Automation for Everyone
The only five commands you need
Rules for writing scripts
Demos
Intro
Wrap up
Our agenda
PowerShell: Automation for Everyone | 3
SharePoint Server MVP
Developer
Skier
http://gavinb.net
@gavinbarron
Gavin BarronSolution Architect
Your presenter
PowerShell: Automation for Everyone | 4
Why Automate?
Repeatability
Reliability
Save time?
Eliminate boring manual tasks
PowerShell: Automation for Everyone | 5
Why PowerShell?
Product specific cmdlets
Able to run .NET code
Hooks into WMI/COM
Object pipeline
Readable scripts
The only five commands you need
Your Awesome Presentation Title {Segoe UI 12 pt.}
Get-Command
Your Awesome Presentation Title {Segoe UI 12 pt.}
Get-Help
Your Awesome Presentation Title {Segoe UI 12 pt.}
Get-Member
Your Awesome Presentation Title {Segoe UI 12 pt.}
Where-Object
Your Awesome Presentation Title {Segoe UI 12 pt.}
ForEach-Object
Demos
Your Awesome Presentation Title {Segoe UI 12 pt.}
Find the command you need
Your Awesome Presentation Title {Segoe UI 12 pt.}
Simple Pipeline Use
PowerShell: Automation for Everyone | 15
File renaming in .bat
@echo offfor /f "delims=" %%a in ('dir /b *.txt') do call :dot "%%a"pausegoto :EOF:dotset "var=%~n1"set "var=%var:.=_%" echo ren %1 "%var%%~x1"
Rules for writing scripts
PowerShell: Automation for Everyone | 17
Consider error cases
What should you do when it goes pear shaped? Default behaviour is Ignore and Continue $ErrorActionPreference -ErrorAction try{} catch{}
PowerShell: Automation for Everyone | 18
Consider your outputs
Write-Host Write-Output Write-Progress Add-Content Out-File
PowerShell: Automation for Everyone | 19
Have style!
Use a coding convention Naming Casing Bracing
Avoid aliases Be Consistent!
PowerShell: Automation for Everyone | 20
Leverage functions for re-use
Small tasks Compose a script from functions Functions are highly reusable Cmdlet Binding Attribute Parameters Attribute Default Values
PowerShell: Automation for Everyone | 21
Use configuration files
$file =[xml] (Get-ChildItem $constantsFilePath)$root = "setup-config"$ConstantsNodeList = $file.$root.Constantsforeach($property in $ConstantsNodeList.Property) {
$key= $property.Key$value=$property.Value $webApp.Properties.Add($key,$value)
}$webApp.Update()
Your Awesome Presentation Title {Segoe UI 12 pt.}
Script Examples
Wrap up
Your Awesome Presentation Title {Segoe UI 12 pt.}
Start scripting, it’s easy!
PowerShell: Automation for Everyone | 25
Handy resources
http://blogs.technet.com/b/heyscriptingguy http://gallery.technet.microsoft.com/scriptcenter http://social.technet.microsoft.com/Forums/scriptcenter/
en-US/home?forum=ITCG http://ss64.com/ps/ http://ss64.com/ps/syntax.html
Any questions?
THE END