Introduction to PowerShell - Agile Solutions Group -

Download Report

Transcript Introduction to PowerShell - Agile Solutions Group -

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
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
© 2007 Asynchrony Solutions, Inc.
2
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!
© 2007 Asynchrony Solutions, Inc.
3
10/29/07
What is PowerShell
•
New Scripting language
• Same, but different!
•
In Vista, then unbundled
• Separate download
•
General purpose programming language
© 2007 Asynchrony Solutions, Inc.
4
10/29/07
Basic Tour
•
•
•
•
•
•
Shell prompt
Cmdlets
Pipes
.Net objects
PSDrives
Help system
© 2007 Asynchrony Solutions, Inc.
5
10/29/07
5 key commands
•
•
•
•
•
Get-Help
Get-Command
Get-Member
Get-Psdrive
Format-List
© 2007 Asynchrony Solutions, Inc.
6
10/29/07
Let’s build something
•
•
Removing all bin and obj folders from project
Find all IDisposable classes in assembly
© 2007 Asynchrony Solutions, Inc.
7
10/29/07
Powershell as a programming language
•
•
•
General purpose programming language
File extension PS1
Example: Reformat.PS1
© 2007 Asynchrony Solutions, Inc.
8
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
© 2007 Asynchrony Solutions, Inc.
9
10/29/07
Extending Powershell in C#/VB.Net
•
Create Custom cmdlet
[Cmdlet(VerbsCommon.Get, "Proc")]
public class GetProcCommand : Cmdlet
{
}
•
•
Create PSSnapin to install
Great tutorial at
http://blogs.msdn.com/daiken/archive/2007/02/07/creating-a-windowspowershell-cmdlet-using-the-visual-studio-windows-powershelltemplates.aspx
© 2007 Asynchrony Solutions, Inc.
10
10/29/07
Extending Powershell natively
•
Functions
function to_uppercase
{
param([string]$first)
$first.ToUpper()
}
•
At command line or in user profile
© 2007 Asynchrony Solutions, Inc.
11
10/29/07
Extending Powershell natively
•
Aliases – make commands easier to use
• set-alias, new-alias, get-alias
Alias
Alias
Alias
Alias
Alias
© 2007 Asynchrony Solutions, Inc.
gal
gc
gci
gcm
gdr
Get-Alias
Get-Content
Get-ChildItem
Get-Command
Get-PSDrive
12
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
© 2007 Asynchrony Solutions, Inc.
13
10/29/07
Why learn Powershell
•
•
•
Automate repetitive tasks
Share knowledge with others
It’s the Microsoft Way…
© 2007 Asynchrony Solutions, Inc.
14
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
© 2007 Asynchrony Solutions, Inc.
15
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
© 2007 Asynchrony Solutions, Inc.
16
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
© 2007 Asynchrony Solutions, Inc.
17
10/29/07
Q&A
•
•
Slides posted at http://oneagilecoder.asolutions.com
Email questions to [email protected]
© 2007 Asynchrony Solutions, Inc.
18