PowerShell: The administrator's best friend

Download Report

Transcript PowerShell: The administrator's best friend

PowerShell
The Administrator’s Best Friend
Brian Caauwe – Senior Consultant
April 14, 2012
Session Agenda
• What you need to know
• Top 10 Cmdlets
• Top 10 Scripts
Who am I?
• Brian Caauwe
– SharePoint Consultant & Speaker
• Email: [email protected]
• Twitter: @bcaauwe
• Blog: http://blog.avtex.com/author/bcaauwe
– Certifications
• MCITP: SP Administrator 2010
• MCPD: SP Developer 2010
Minnesota SharePoint User Group
• 2nd Wednesday of the Month
• 9:00 – 11:30 AM
•
•
•
•
SharePoint resources and links
Meeting Schedule
Past User Group Presentations
This Presentation
• Next Meeting – 5/9
• TBD
www.sharepointmn.com
Quick Poll
• SharePoint Version
– 2007 – WSS, MOSS
– 2010 – SPF, Server, FAST
• Work Roles
– SharePoint Administrator
– SharePoint Developer
– Business User
– Other
What you need to know
What you need to know
• You won’t learn by books or sessions
• Find YOUR practical applications
What you need to know
Management Shell
• Run “As Administrator”
• Uses powershell.exe under
Windows\system32
• Registers Microsoft.SharePoint.PowerShell
snap-in via script
– C:\Program Files\Common Files\Microsoft Shared\Web
Server Extensions\14\CONFIG\POWERSHELL\
Registration\sharepoint.ps1
• Sets Execution Policy to RemoteSigned
What you need to know
Object Model
• Microsoft.SharePoint namespace
• Server Architecture
– SPFarm
– SPWebApplication
– SPContentDatabase
• Site Architecture
–
–
–
–
SPSite
SPWeb
SPList
SPListItem
• MSDN Resource
– http://msdn.microsoft.com/en-us/library/ms473633.aspx
What you need to know
Scheduled Tasks
• Call PowerShell from Windows\system32
• Register Microsoft.SharePoint.Powershell
snap-in
-psconsolefile “C:\Program Files\Common Files\Microsoft
Shared\Web Server Extensions\14\CONFIG\POWERSHELL
\Registration\psconsole.psc1”
• Call Script
-command “E:\PowerShell\Set-ScriptName.ps1”
• Logging
What you need to know
Memory Leakage
• Disposable Objects
$web.Dispose()
$site.Dispose()
• SPAssignment – Garbage Collector
– Global
Start-SPAssignment –Global
Get-SPSite -Limit All | Get-SPWeb | Select Url, WebTemplate,
WebTemplateId | Format-Table -AutoSize
Stop-SPAssignment -Global
– Scoped
$w = Get-SPWebApplication http://www.company.com
$siteScope = Start-SPAssignment
foreach ($site in ($siteScope | Get-SPSite -Limit All –WebApplication $))
{
$webScope = Start-SPAssignment
foreach ($web in ($webScope | Get-SPWeb -Limit All -Site $site))
{
## Do Something
}
Stop-SPAssignment $webScope
}
Stop-SPAssignment $siteScope
What you need to know
Remote Scripting
•
•
Crazy setup
Run Commands on SharePoint servers
– Enable-PSRemoting –force
– Enable-WSManCredSSP –role Server –force
– Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 1024
•
Run Commands on local machine
– Enable-PSRemoting -force
– Enable-WSManCredSSP –role Client –DelegateComputer
“*.domain.com or COMPUTERNAME” –force
•
Shared SPModule (\\servername\spmodule)
– Zach Rosenfields’s Blog
http://sharepoint.microsoft.com/blogs/zach/Lists/Posts/Post.aspx?ID=54
•
Store Credentials in a variable
– $cred = Get-Credential
•
Load Modules
– $env:PSModulePath = \\servername\spmodule; + $env:PSModulePath
– Import-Module SPModule.misc
– Import-Module SPModule.setup
What you need to know
What you don’t get
• Other Assemblies
– IIS (WebAdministration)
– SQL
– Exchange
• User Profile
– Microsoft.Office.Server.UserProfiles
• Managed Metadata
– Microsoft.SharePoint.Taxonomy
Top 10 Cmdlets
Top 10 Cmdlets
• Tools for the toolbox
• Some SharePoint, Some NOT
– SharePoint requires 2010
Top 10 Cmdlets
Get-Command | Get-Help
• How to Use
– Built in help EVERYWHERE
– Start with what you know to find what you don’t
• Examples
– Get-Command *-SPFeature*
– Get-Help Backup-SPSite -Examples
Top 10 Cmdlets
Get-SPWebApplication | Get-SPSite | Get-SPWeb
• How to use
– Main Cmdlets you will use
– Limit parameter
– SPSite and SPWeb are disposable
• Example
– $w = Get-SPWebApplication http://my.company.com
– $site = Get-SPSite http://my.company.com
– $site | Get-SPWeb -Limit All
Top 10 Cmdlets
Get-SPServer | Get-SPServiceInstance
• How to use
– Maintain services on server
– Get current server with environment variable
– Start-SPServiceInstance may need other configuration
• Example
– $server = Get-SPServer $env:COMPUTERNAME
– $svc = Get-SPServiceInstance -Server $server |
?{$_.TypeName -eq “Excel Calculation Services”}
– if ($svc.Status –eq “Disabled”){ StartSPServiceInstance }
Top 10 Cmdlets
Get-SPServiceApplication
• How to use
– Maintain properties of service applications
– Pipe to query on TypeName
• Example
– $svcApp = Get-SPServiceApplication | ?{$_.TypeName eq “User Profile Service Application”}
– $svcApp.NetBIOSDomainNamesEnabled = $true
– $svcApp.Update()
Top 10 Cmdlets
New-SPLogFile
• How to use
– Great for troubleshooting
– Creates new log file on that server
• Example
– New-SPLogFile
Top 10 Cmdlets
Merge-SPLogFile
• How to use
– Merges last hour of logs across farm
– Can consume CorrelationId and other filters
• Example
– Merge-SPLogFile –Path “C:\Debug\error.log” –
Correlation 470a4ec2-985d-43be-a14e-176eb1c39672
Top 10 Cmdlets
Get-SPLogEvent
• How to use
– Gets ALL log events (no time filter)
– Single server
– Pipe to query and use -StartTime parameter
• Example
– $guid = “470a4ec2-985d-43be-a14e-176eb1c39672”
– Get-SPLogEvent –StartTime (Get-Date).AddHours(-1) |
?{$_.Correlation –eq $guid} | Format-List Timestamp,
Category, Message | Out-File “c:\Debug\debug.log”
Top 10 Cmdlets
Add-SPSolution | Get-SPSolution | Install-SPSolution
• How to use
– Add farm solution to solution store
– Automated deployments
• Example
– Add-SPSolution –LiteralPath “C:\Solutions\spcmis.wsp”
– $sol = Get-SPSolution | ?{$_.Name –eq “spcmis.wsp”}
– $sol | Install-SPSolution –GACDeployment AllWebApplications
Top 10 Cmdlets
Out-File
• How to use
– Write to the file
– Nice for logging on scheduled tasks
– Use -Append parameter
• Example
–
–
–
–
–
$msg = “This is what I want to send to the file”
$path = “logging.log”
$currentTime = Get-Date –UFormat “%H:%M:%S”
$msg = $currentTime + “ :: DEB :: “ + $msg
$msg | Out-File $path -append
Top 10 Cmdlets
Write-Host | Read-Host
• How to use
– Write-Host used to display status to the screen
• Use ForegroundColor for color coding
– Read-Host used to get user input
• Example
– $url = Read-Host “What is the web application URL”
– $w = Get-SPWebApplication $url
– Write-Host -ForegroundColor Green $w.Url
Top 10 Scripts
Top 10 Scripts
My favorites to find information in a crazy world
Top 10 Scripts
Get-ErrorLog.ps1
• What it uses
– Merge-SPLogFile
– Get-SPLogEvent
• When to use it
– When you get a correlation ID
• How to use it
– Choose to query farm or current server
Top 10 Scripts
Get-SiteStorageInfo.ps1
• What it uses
– Start-SPAssignment / Stop-SPAssignment
– Get-SPWebApplication / Get-SPSite
• When to use it
– Get storage size and quota
• How to use it
– Run as scheduled task or on demand
Top 10 Scripts
Get-WebInfo.ps1
• What it uses
– Start-SPAssignment / Stop-SPAssignment
– Get-SPWebApplication / Get-SPSite / Get-SPWeb
• When to use it
– Get web properties (Url, Template, Author, Last Modified)
• How to use it
– Run as scheduled task or on demand
Top 10 Scripts
Get-WorkflowInfo.ps1
• What it uses
– Start-SPAssignment / Stop-SPAssignment
– Get-SPWebApplication / Get-SPSite / Get-SPWeb
– SPList / SPContentType / SPWorkflowAssociation
• When to use it
– Get workflow properties (SPD, Author, Running Instances)
• How to use it
– Run as scheduled task or on demand
Top 10 Scripts
Get-VersionInfo.ps1
• What it uses
– Start-SPAssignment / Stop-SPAssignment
– Get-SPWebApplication / Get-SPSite / Get-SPWeb
– SPList
• When to use it
– Get version properties (Item Count, Versioning, Limits)
• How to use it
– Run as scheduled task or on demand
Top 10 Scripts
Warmup-Farm.ps1
• What it uses
– System.Net.CredentialCache / WebClient
– Get-SPWebApplication / Get-SPSite
– Get-Content
• When to use it
– Keep system connections “hot”
• How to use it
– Run as scheduled task or on demand
• Reference
– Kirk Hofer
• http://kirkhofer.wordpress.com/2008/10/18/sharepoint-warm-up-script/
– Martin Laukkanen
• http://nearbaseline.com.au/blog/2010/02/powershell-warmup-script-2/
Top 10 Scripts
Set-UserProfileImages.ps1
• What it uses
– Microsoft.Office.Server.UserProfiles
– Start-Transcript
– Update-SPProfilePhotoStore
• When to use it
– Centrally managed photos to push into SharePoint
• How to use it
– Run as scheduled task or on demand
Top 10 Scripts
Invoke-AlertFixup.ps1
• What it uses
– Get-SPWeb / SPSite
– SPAlert
• When to use it
– Fix up alerts after changing web application url or site
collection url
• How to use it
– Invoke-AlertFixup -site “http://teams/sites/newteam” oldurl “http://teams/sites/oldteam”
• Reference
– TechNet
• http://technet.microsoft.com/en-us/library/cc508847.aspx
Top 10 Scripts
Check-Loopback.ps1
• What it uses
– Get-Item
– New-ItemProperty
• When to use it
– Need to check for registry value and create if
needed
• How to use it
– Use as part of build scripts other server admin
Top 10 Scripts
Get-AccountCreds.ps1
• What it uses
– Microsoft.Web.Administration
• When to use it
– Used to recover application pool credentials
• How to use it
– Run on demand, requires application pool name
• Reference
– Raymond Mitchell (IWKid)
• http://www.iwkid.com/blog/Lists/Posts/Post.aspx?ID=85
DEMO
References
• Brian’s Blog
– http://blog.avtex.com/author/bcaauwe
• Windows PowerShell for SharePoint 2010
– http://technet.microsoft.com/en-us/sharepoint/ff603532.aspx
• Script References
– Invoke-AlertFixup
• http://technet.microsoft.com/en-us/library/cc508847.aspx
– Raymond Mitchell’s Blog
• http://www.iwkid.com/blog
– Kirk Hofer’s Blog
• http://kirkhofer.wordpress.com
– Martin Laukkanen
• http://nearbaseline.com.au/blog/2010/02/powershell-warmupscript-2/
Q&A