Getting Started With PowerShell Scripting

19
Email: [email protected] m Twitter: @Ravikanth Blog: http://www.ravichaganti.c om Getting started with PowerShell Scripting Ravikanth C

description

This slide was used at @PSBUG or PowerShell Bangalore User Group UG meet. This shows some fundamentals about getting started with PowerShell scripting

Transcript of Getting Started With PowerShell Scripting

Page 1: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

Getting started with PowerShell Scripting

Ravikanth C

Page 2: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

A lead engineer at Dell SharePoint professional by day and

PowerShell scripter at night Blog at http://www.ravichaganti.com/blog Developer of

◦ PSCodePlex◦ PSRemoteFileExplorer◦ Remote File Explorer PowerPack◦ BITS File Transfer PowerPack

Author of◦ Free eBook - Layman’s guide to PowerShell 2.0

remoting (Coming soon)

About me

Page 3: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

What is PowerShell? Getting started Using PowerShell Getting Help Tools for the job Learning resources Q & A

Agenda

Page 4: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

Remote file explorer -> 698 lines of PowerShell

This is just one example..!

Show me the Power first.!

Page 5: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

The best shell scripting environment for Windows◦ A new scripting language◦ Replacement for a weak Windows command-line

Default management / automation platform for all Microsoft products going forward

Object based◦ Built on top of .NET type system◦ Everything is an object

What is PowerShell?

DOS Batch PowerShell@echo off setLocal EnableDelayedExpansion set /a value=0 set /a sum=0 FOR /R %1 %%I IN (*) DO ( set /a value=%%~zI/1024 set /a sum=!sum!+!value! ) @echo Size is: !sum! k

$size=0;Get-ChildItem C:\Scripts | % { $Size+=$_.Length}

Page 6: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

PowerShell is in version 2.0 Default on Windows 7 and Windows Server

2008 Part of Windows management framework

download for Windows Server 2008, Vista, XP and Windows 2003◦ http://support.microsoft.com/kb/968929

Requires .NET 2.0 SP1 or later

Getting started

Page 7: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

Console history, Intellisense for cmdlets, variables and parameters

Using PowerShell: Console

Page 8: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

Using PowerShell: ISE

Page 9: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

Using PowerShell: Cmdlets

Pronounced as command-let A lightweight command

an instance of .NET framework classes Use verb-noun pairs

◦ Get-Verb to list all approved verbs

Page 10: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

Not case-sensitive Default value is $null Cmdlets to manage variables

◦ Clear-Variable◦ Get-Variable◦ New-Variable◦ Remove-Variable◦ Set-Variable

Using PowerShell: Variables

Page 11: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

Types◦ User created variables◦ Automatic variables

Created by PowerShell to maintain its state Cannot be modified Examples: $PSHome, $$, $^, $?, etc

◦ Preference variables Created by PowerShell to store user preferences Can be modified Examples: $MaximumHistoryCount, etc

Using PowerShell: Variables

Page 12: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

Alternate names for cmdlets Cmdlets to manage aliases

◦ Export-Alias◦ Get-Alias◦ Import-Alias◦ New-Alias◦ Set-Alias

Cannot take parameters◦ Workaround: put the statement in a script and

alias to that Example: Dir, ls, gcm, gci, etc

Using PowerShell: Aliases

Page 13: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

Conditional statements◦ If◦ Switch

l.ooping◦ For

For ($i=0;$i –le 10;$i++) {Write-Host $i}◦ Foreach

Used on a collection of items Foreach ($name in $namesArray) { Write-Host $name }

◦ Do Do { Write-Host $i; $i++ } while ($i –le 10) Do { Write-Host $i;$i++} Until ($i –lt 10)

◦ While While ($i –le 10) { Write-Host $i;$i++ }

Using PowerShell: Conditional & Looping

Page 14: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

Comparison operators◦ -ne, -eq, -lt, -gt, -ge, -le, -like, -notlike, -contains, -

notcontains, -match, -notmatch Logical operators

◦ -or, -and, -xor, -not, ! Arithmetic operators Assignment operators

Using PowerShell: Operators

Page 15: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

Arrays◦ Collection of objects of the same type◦ $a = @( )◦ $a = “PowerShell”,”VBScript”

Hash Tables◦ Collection of key value pairs◦ $ hash = @{ }◦ $a = {“Name”=“PowerShell”; “IsHot”=$true}

Using PowerShell: Arrays & Hash Tables

Page 16: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

Getting Help Get-Command

◦ Gets a list of all commands Get-Help

◦ Shows help for a given cmdlet Get-Member

◦ Gets members of an object Get-PSDrive

◦ Shows information stores in PowerShell About_Topics

◦ Get-Help about*

Page 17: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

In PowerShell, there will be more than one way to do the same thing. For example◦ [System.Diagnostics.Process]::GetProcesses()◦ Get-Process

Understand execution policies Use PowerShell profiles

Best practices

Page 18: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

PowerShell Console PowerShell ISE PowerGUI AdminConsole PowerGUI ScriptEditor PowerWF PowerShell Plus

Tools for the job

Page 19: Getting Started With PowerShell Scripting

Email: [email protected]: @RavikanthBlog: http://www.ravichaganti.com

Getting started guide PowerShell Learning center Free PowerShell eBook The scripting Guys blog PowerScripting Podcast @PSBUG on Twitter

Learning resources