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 Certifications Email: bcaauwe@avtex.com 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 Work Roles 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 Run “As Administrator” 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 Call PowerShell from Windows\system32 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 Other Assemblies User Profile Managed Metadata 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 How to Use Examples Get-Command | Get-Help 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 How to use Example 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 How to use Example Get-SPServer | Get-SPServiceInstance 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”){ Start-SPServiceInstance }
Top 10 Cmdlets How to use Example Get-SPServiceApplication 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 How to use Example New-SPLogFile Great for troubleshooting Creates new log file on that server Example New-SPLogFile
Top 10 Cmdlets How to use Example Merge-SPLogFile 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 How to use Example Get-SPLogEvent 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 How to use Example 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 How to use Example Out-File 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 How to use Example Write-Host | Read-Host 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 When to use it 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 When to use it 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 When to use it 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 When to use it 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 When to use it 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 When to use it 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 When to use it 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 What it uses When to use it How to use it Reference 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 What it uses When to use it How to use it 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 What it uses When to use it How to use it Reference 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 Windows PowerShell for SharePoint 2010 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-warmup-script-2/
Q & A