2. Independent Consultant – Napeague Inc.
Software Development since 1983
Few Facts (@boulosdib)
First Personal Computer 1980 – TRS-80 III
First Z80 based product (EPROM based Protocol Adpator – 1984)
First Commercial PC-DOS product (Telex on PCs – 1985)
Started 16-bit Windows Development using Win 3.1
Developed on: 8080/Z80, 68xxx, PDP/RSX,VAX-VMS and x86/x64
(C/C++/C#)
Worked with PowerShell since Monad (2006)
Worked with SharePoint since STS (2003)
More facts
▪ Favorite sport – Windsurfing
▪ Favorite hobby – Playing my sunburst Fender Stratocaster+ guitar.
▪ Favorite guitar players
▪ Wes Montgomery, Larry Carlton and Ritchie Blackmore (Deep Purple, Rainbow)
3. Overview of PowerShell
Introduction to PowerShell Scripting
Language
Tools
Script Authoring
SharePoint Management Console
SharePoint CmdLets
4. NYC Code Camp
I will be presenting on LightSwitch and Silverlight
at the NYC Code Camp 6 (Autumn 2011)
Saturday October 1st
Pace University
Registration Still Open
http://CodeCampNyc.org
6. “A shell is the piece of software that lets you access the
functionality provided by the operating system. “
Bruce Payette - Co-Designer and Implementer of the
PowerShell language.
Example
Windows Explorer
Command.com
Cmd.exe
Bash (Unix)
PowerShell
7. Interactive Environment with .Net
Automation Tool
Easy to use
Available on all Windows SKUs starting with
XP SP2 and Windows 2003
Management tool for Servers
Productivity Gains – One Liner
9. Common Parameters
-Verbose
-Debug
-WarningAction
-WarningVariable
-ErrorAction
-ErrorVariable
-OutVariable
-OutBuffer
Risk Mitigation Parameters (certainly critical in a production environment)
What-If
-Confirm
Wildcard support.
All names and parameter value can support wildcard.
Pipeline
Much more about this later.
10. Command vs. Expression mode parsing
Echo 1+1
1+1
Everything returns a value
“String”
Variable
$ Prefix
i.e. $var = “Hello Sharepoint”
Type System
All .Net types as well as Custom Types
11. Help
Get-Help (or -? Following any command)
Get-Help about_<<anyname>>
Get-Help –Examples
Get-Help –Full
13. Get-Help
As it says, it helps!!!
Get-Command
Get information about what can be invoked
Get-Member
Show what can be done with an object
Get-Module
Show packages of commands
GetType
Discover details about an object’s type information.
14. Compare
Foreach
Group
Measure
Select
Sort
Tee
Where
15. PowerShell ISE
Simple Editor and Debugger
PowerGUI
Administrative Console
PowerGUI Editor
Powerpacks – a number to choose from.
Visual Studio
Notepad
17. The best part about PowerShell
Output of one CmdLet is Input into next CmdLet
in pipeline.
Uses the Pipe operator |
Output and Input are objects, not text like
traditional shells.
Example
▪ Get-Command | Get-Member
▪ Get-Process | Out-GridView
19. If then else
If ($a –eq “test”) { “It’s a test”} else {“Not”}
While loop and Do While loop
$i = 1; While ($i –lt 10) {$i++}
$i =5; do {$i} while (--$i)
For loop
for ($i=0; $i –lt 10; $i++) { “5 * $i is $(5 * $i)” }
Foreach loop
Foreach ($i in 1..10) {“`$i is $i”}
23. Pretty much the same as CMD
> replace file
>> Append to file
2> File is replaced with error messages
2>> Error text is appended to file
2>&1 Error messages are written to output pipe
24. A module is a package that contains Windows
PowerShell commands, such as cmdlets,
providers, functions, variables, and aliases
Need to create module folder
new-item -type directory -path
$homeDocumentsWindowsPowerShell
Modules
Copy the module to the Modules folder.
Start using a module (import-module etc…)
25. Standard Providers
Windows PowerShell providers are Microsoft .NET Framework-based
programs that make the data in a specialized data store available in
Windows PowerShell so that you can view and manage it
Get-PSProvider | Select -Property Name
WSMan -
Alias
Environment
FileSystem
Function
Registry
Variable
Certificate
26. Get-PSDrive
New-PSDrive
New-PSDrive -Name Y -PSProvider
FileSystem -Root c:temp
Remove-PSDrive
Remove-PSDrive
Try a non-disk PSDrive like cert: Dir Cert:
27. A Script file is a text file with .ps1 extension
containing one or more PowerShell command
A Script is a simple mechanism to re-use
functionality.
To run a script on a remote computer, use the
Invoke-Command and provide remote computer
name as a parameter.
Scripts can accept parameters.
To run a script in the current session, we Dot-
Source the . .Script1.ps1
We can Scope Local or Global.
28. Single Line: #
Multi Line:
<#
#>
Comments can be used to automatically
generate help
29. A function is a script block containing list of
statements
function small_files ($size = 1kB) {
Get-ChildItem c:Temp | where { $_.length -lt $size -and
!$_.PSIsContainer}
}
small_files
To control how a function uses the pipeline, you
use Begin, Process and End.
function pipelineFunc {
process {"The value is: $_"}
}
1,2,3 | pipelineFunc
Advanced functions allow you to write CmdLets
using scripts instead of compiled code.
30. try
{
$wc = new-object System.Net.WebClient
$wc.DownloadFile("http://www.contoso.com/MyDoc.doc","c:MyDoc.doc")
}
catch [System.Net.WebException],[System.IO.IOException]
{
"unable to download MyDoc.doc from http://www.contoso.com."
}
catch
{
"An error occurred that could not be resolved."
}
31. Sharepoint Management Shell
Need to execute Add-SPShellAdmin in order
to acquire permissions to run PowerShell on
Sharepoint
Member of Farm
Member of Administrators
Farm component Administrators SharePoint Full Control on backup folder
group on the local computer
group
Farm Yes No Yes
Service application Yes No Yes
Content database Yes No Yes
Site collection No Yes Yes
Site, list, document library Yes No Yes
Source: MSDN
38. PowerShell in Action Windows PowerShell 2.0 Bible
Bruce Payette By Thomas Lee, Karl Mitschke, Mark
“The book from the authority on E. Schill, and Tome Tanasovski
PowerShell” http://powertoe.wordpress.com/
39. Automating Microsoft SharePoint PowerShell for Microsoft Sharepoint
2010 Administration with Windows 2010 Administrators.
PowerShell 2.0
Gary Lapointe & Shannon Bray Niklas Goude & Mattias Karlsson
http://blog.falchionconsulting.com/ http://www.powershell.nu/
40. Next session will be about PowerShell Scripts
in the SharePoint Management Shell
Contact:
http://blog.boulosdib.com
@boulosdib