PowerShell Metavis

advertisement
Agenda
Who is this Todd guy?
www.toddklindt.com/blog
www.sharepoint911.com
todd@sharepoint911.com
Windows PowerShell Basics
• Combine the two to build specific commands
• Examples
• Get-SPSite
• Get = Verb
• SPSite = Noun
Getting the list of SharePoint cmdlets
• Get-Command –noun sp*
• Get-Help <cmdlet>
Getting the list of SharePoint cmdlets
• Get-Help <cmdlet> -full
• Get-Help <cmdlet> -detailed
DEMO
Scripting Syntax
• $password = Read-Host "What is the password for all accounts?" assecurestring ; Get-Content usernames.txt | ForEach-Object {NewSPManagedAccount -password $password -username litwareinc\$_;
Set-SPManagedAccount -identity $_ -autogenerate -confirm:$False}
Syntax
Description
$
Denotes a variable.
;
Denotes completion of cmdlet, continue to next one.
|
Sends the output of the preceding cmdlet to the next
cmdlet.
ForEach-Object { }
For each object, execute all the commands within the { }.
General PowerShell tips
• It’s just a shell, spruce it up some
• Color
• Size
• Run as Admin
• Enable quick edit
• Use the included ISE
• Use a third party solution
Remoting
• Must be enabled on each server
• Nothing much to do on the client
• Two ways in
• Enter-PSSession
• Invoke-Command
• Use Enable-PSRemoting to enable
• Get-Help about_remoting
• Watch out for security settings
• Increase MaxMemoryPerShellMB
Avoiding the Farm Config Wizard
• The Farm Config Wizard does some very bad
things
• Wise SharePoint admins avoid it
• Use PowerShell to replicate its functionality
• Steps
• Managed accounts
• Web applications
• MySite host
• Service application pool
• State Service
• Usage Service
• The rest 
Everyday tasks
•
•
•
•
•
•
•
Add-SPShellAdmin
Move-SPSite
Enable Developer Dashboard
Visual Upgrade
Troubleshooting
Master pages
Get database sizes
Add-SPShellAdmin
• Necessary for unprivileged accounts, since you’re
not logging in as the Farm account, right?
• Must specify databases to give access to
• Gives permissions to an account
• WSS_Admin_WPG on SharePoint servers
• SharePoint_Shell_Access role on database
• To run it account must have:
• Security_Admin role SQL instance
• db_owner role on database
• Local admin on SharePoint server
Move-SPSite
• Used to move Site Collections between
content databases
• Everything ‘mergecontentdbs’ can do, this can
do better
• Mostly done on the SQL side
• Databases must be attached to the same web
application, and on the same SQL instance
• Works great to get rid of Content databases
with GUIDs
Developer Dashboard
• Can be enabled with STSADM, but that’s
just embarrassing
• More flexibility with PowerShell
$dash =
[Microsoft.SharePoint.Administration.SPWebService]::Conte
ntService.DeveloperDashboardSettings;
$dash.DisplayLevel = 'OnDemand';
$dash.TraceEnabled = $true;
$dash.Update()
Visual Upgrade
• Can be used to rapidly check or change status
$db = Get-SPContentDatabase WSS_Content_SharePoint_2007
$db.Sites | Get-SPWeb -limit all | ForEach-Object
{$_.UIversion = 4; $_.UIVersionConfigurationEnabled =
$false; $_.update()}
• Or
$db = Get-SPContentDatabase WSS_Content_SharePoint_2007
$db.Sites | foreach-object {$_.VisualUpgradeWebs}
Troubleshooting
• Use New-SPLogFile immediately before and
right after recreating a problem
• Use Merge-SPLogFiles to collect trace logs
from all servers in your farm
• Use Get-SPLogEvent to get events
• Can filter by a number of properties, like
Correlation ID
• Can point at alternate directory
Get-SPLogEvent -StartTime (Get-Date).addminutes(-10) –Directory
e:\logs | Where-Object {$_.correlation -eq "dc07834b-9982-4eafaacf-d62a6b398f87"}
Master Pages
• Can be used to set the master page
$web = Get-SPWeb http://sharepoint
$web.CustomMasterUrl =
"/_catalogs/masterpage/nightandday.master"
$web.MasterUrl = "/_catalogs/masterpage/nightandday.master"
$web.Update()
Database Information
• Use Get-SPDatabase to get list of databases
and their properties
Get-SPDatabase | Sort-Object disksizerequired -desc | FormatTable Name, @{Label ="Size in MB"; Expression =
{$_.disksizerequired/1MB}}
Get-SPDatabase | ForEach-Object {$db=0} {$db
+=$_.disksizerequired; $_.name + " - " +
$_.disksizerequired/1MB} {Write-Host "`nTotal Storage (in MB)
=" ("{0:n0}" -f ($db/1MB))}
A short list of people that are
smarter than me
• Zach Rosenfield’s blog
• http://sharepoint.microsoft.com/Blogs/zach
• SPModule
• http://www.microsoft.com/downloads/en/details.aspx?displaylang=en
&FamilyID=c57556ff-8df0-44fd-aba6-3df01b9f80ce
• Gary Lapointe’s blog
• http://blog.falchionconsulting.com
• Document your farm with PowerShell
• http://technet.microsoft.com/en-us/library/ff645391.aspx
• PS Scripts
• http://get-spscripts.com/
Things I referenced
• Determine database sizes in PowerShell
• http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=193
• Using PowerShell to control Visual Upgrade
• http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=173
• Remoting requirements for SharePoint 2010
• http://sharepoint.microsoft.com/blogs/zach/Lists/Posts/Post.aspx?ID=45
• Developer Dashboard
• http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=189
• Master Pages
• http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=226
• Good farm configuration script from another Todd
• http://todd-carter.com/post/2010/04/26/The-Wizard-Likes-His-GUIDs.aspx
• Use Move-SPSite
• http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=233
Download