18
© 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc [email protected] http://oneagilecoder.asolutions.com

© 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc [email protected]

Embed Size (px)

Citation preview

Page 1: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 1

10/29/07

Introduction to PowerShell

Brian ButtonVP Engineering

Asynchrony Solutions, [email protected]

http://oneagilecoder.asolutions.com

Page 2: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 2

10/29/07

Just the other day…

Visual Studio 2005 Enterprise Library

VS.Net SP1 Nunit

IIS Xunit.net

TFS Explorer Resharper

SQL Server 2005 Test Driven.net

GAX

GAT

Page 3: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 3

10/29/07

Failure!!!

• SQL Server failed to install and uninstall• What to do???• MSDN says:

• Regedit HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall

• For each GUID found, Examine DisplayName searching for match of ‘SQL Server’

• Manually uninstall it• Maybe there was a better way!

Page 4: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 4

10/29/07

What is PowerShell

• New Scripting language• Same, but different!

• In Vista, then unbundled• Separate download

• General purpose programming language

Page 5: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 5

10/29/07

Basic Tour

• Shell prompt• Cmdlets• Pipes• .Net objects• PSDrives• Help system

Page 6: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 6

10/29/07

5 key commands

• Get-Help• Get-Command• Get-Member• Get-Psdrive• Format-List

Page 7: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 7

10/29/07

Let’s build something

• Removing all bin and obj folders from project• Find all IDisposable classes in assembly

Page 8: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 8

10/29/07

Powershell as a programming language

• General purpose programming language• File extension PS1• Example: Reformat.PS1

Page 9: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 9

10/29/07

Extending Powershell

• Custom Cmdlets and PSSnapins• Written in C# or VB.Net

• Functions, Filters, Aliases• Written in powershell

• Adding methods, properties to existing types• Written in XML, powershell• Add-member

Page 10: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 10

10/29/07

Extending Powershell in C#/VB.Net

• Create Custom cmdlet

• Create PSSnapin to install• Great tutorial at

http://blogs.msdn.com/daiken/archive/2007/02/07/creating-a-windows-powershell-cmdlet-using-the-visual-studio-windows-powershell-templates.aspx

[Cmdlet(VerbsCommon.Get, "Proc")] public class GetProcCommand : Cmdlet { }

Page 11: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 11

10/29/07

Extending Powershell natively

• Functionsfunction to_uppercase

{

param([string]$first)

$first.ToUpper()

}• At command line or in user profile

Page 12: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 12

10/29/07

Extending Powershell natively

• Aliases – make commands easier to use• set-alias, new-alias, get-alias

Alias gal Get-Alias

Alias gc Get-Content

Alias gci Get-ChildItem

Alias gcm Get-Command

Alias gdr Get-PSDrive

Page 13: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 13

10/29/07

Customizing Powershell

• User profile• $profile• Get-Executionpolicy

• Like .profile or .login in Linux• Invoked for every new shell• Sets up functions, aliases, etc

Page 14: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 14

10/29/07

Why learn Powershell

• Automate repetitive tasks• Share knowledge with others• It’s the Microsoft Way…

Page 15: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 15

10/29/07

Controlling Windows through Scripts

• Complaints for years about GUI-only config• In Unix/Linux forever

• MS making admin tasks powershell-scriptable• Exchange• SQL Server• IIS 7• More

Page 16: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 16

10/29/07

Resources

• Download powershell through Microsoft.com• Videos

• http://channel9.msdn.com/Media/?TagID=163

• Blogs• http://blogs.msdn.com/powershell• http://thepowershellguy.com• http://keithhill.spaces.live.com• http://www.leeholmes.com/blog

Page 17: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 17

10/29/07

More resources

• Books• Powershell in Action, Bruce Payette• Professional Windows Powershell, Andrew Watt• Windows Powershell Cookbook, Lee Holmes

• Community projects• 21 projects on http://www.codeplex.com

Page 18: © 2007 Asynchrony Solutions, Inc. 1 10/29/07 Introduction to PowerShell Brian Button VP Engineering Asynchrony Solutions, Inc brian.button@asolutions.com

© 2007 Asynchrony Solutions, Inc. 18

10/29/07

Q & A

• Slides posted at http://oneagilecoder.asolutions.com• Email questions to [email protected]