Sie sind auf Seite 1von 11

SharePoint 2010: STSADM and PowerShell

The information in this article is based on BETA 2 of SharePoint 2010 - there will likely be differences with the RTM release. Finally, the NDA is lifted and we can openly talk about SharePoint 2010! There's so many cool things to talk about it's hard to decide where to begin, but as the focus of my blog has generally been on STSADM then I suppose that's a good place to start. The first thing we should do is load the new SharePoint 2010 Management Shellwhich can be found under the Microsoft SharePoint 2010 Products section of the start menu:

This new console window is actually just a PowerShell console which pre-loads the SharePoint PowerShell Snap-in. You can see that by looking at the target for the shortcut:

C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -NoExit C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\CONFIG\POWERSHELL\Registration\\sharepoint.ps1 ' " If you look at the SharePoint.ps1 file you'll see the following:

" & '

From this you can see that you can easily load up any PowerShell console app (either the native PowerShell console or a any other editor such as PowerGUI or the PowerShell ISE) and simply run the Add-PsSnapin cmdlet to load the new SharePoint 2010 cmdlets as shown above. Note that the script is also changing the threading model of PowerShell so that commands are entered in the same thread rather than a different thread for each line of execution (I'll cover this in more detail in a later post but it's important to understand that this has a huge impact on how objects are disposed within PowerShell - see Zach's post about threading here: http://sharepoint.microsoft.com/blogs/zach/Lists/Posts/Post.aspx?ID=34) I'll cover the PowerShell stuff in bit but first lets take a look at the STSADM changes. I did a simple stsadm -helpcommand and saved that to a file in both my 2007 and 2010 environment and then compared those files. Here's what I found: The following STSADM commands no longer exist: o o o o o o o associatewebapp createcmsmigrationprofile createssp deletecmsmigrationprofile deletessp deletessptimerjob editcmsmigrationprofile

o o o o o o o o o o o o o o o o o o o o o

editssp enablecmsurlredirect enumssp enumssptimerjobs grantiis7permission listqueryprocessoroptions mysite preupgradecheck restoressp runcmsmigrationprofile setdefaultssp setqueryprocessoroptions setsharedwebserviceauthn setsspport trimauditlog add-adsdefaultapplication add-ecsblockedexcelfiletype monitordb patchpostaction remove-adsdefaultapplication remove-ecsblockedexcelfiletype

The following STSADM commands have been added:

From the list above you can see that the bulk of the items removed have to do with the SSP and CMS migration features which were part of the 2007 product but have been removed from the 2010 product (2010 has a whole new services architecture which is really cool, but outside the scope of this article - stay tuned! - 2010 also does not support upgrading from Microsoft CMS, you must upgrade to SharePoint 2007 and then SharePoint 2010). Also note that very few new commands have been added - in fact I was surprised to see that any were added - why? Because PowerShell is what we should all be using - STSADM is dead - just don't use it, forget that these new commands have been added as there are PowerShell equivalents (I wouldn't be surprised if they get pulled come RTM). That said, at beta there may be some stuff that still only exists with STSADM but expect that not to be the case going forward. So now that we have that out of the way, lets talk about some PowerShell (as of this post I'm officially done creating STSADM extensions - at least for 2010, I may still have need for some new stuff with the 2007 product). In your new SharePoint 4.0 Management Console type the following command: gcm -pssnapin microsoft.sharepoint.powershell | select Name, Definition | fl > .\sp2010cmdlets.txt

Take a look at the file you just generated, you now have a listing of the 535 new PowerShell cmdlets that ship with SharePoint 2010. For brevity sake I won't show the syntax but here's a listing of all the new cmdlets that are available:
Add-PluggableSecurityTrimmer Add-SPClaimTypeMapping Add-SPDiagnosticsPerformanceCounter Add-SPInfoPathUserAgent Add-SPServiceApplicationProxyGroupMember Add-SPShellAdmin Add-SPSiteSubscriptionFeaturePackMember Add-SPSiteSubscriptionProfileConfig Add-SPSolution Add-SPUserSolution Backup-SPConfigurationDatabase Backup-SPFarm Backup-SPSite Clear-SPLogLevel Clear-SPMetadataWebServicePartitionData Clear-SPPerformancePointServiceApplicationTrustedLocation Clear-SPSecureStoreCredentialMapping Clear-SPSecureStoreDefaultProvider Clear-SPSiteSubscriptionBusinessDataCatalogConfig Connect-SPConfigurationDatabase Copy-SPBusinessDataCatalogAclToChildren Disable-SPBusinessDataCatalogEntity Disable-SPFeature Disable-SPInfoPathFormTemplate Disable-SPSessionStateService Disable-SPSingleSignOn Disable-SPTimerJob Disable-SPWebApplicationHttpThrottling Disconnect-SPConfigurationDatabase Dismount-SPContentDatabase Dismount-SPStateServiceDatabase Enable-SPBusinessDataCatalogEntity Enable-SPFeature Enable-SPInfoPathFormTemplate Enable-SPSessionStateService Enable-SPTimerJob Enable-SPWebApplicationHttpThrottling Export-SPBusinessDataCatalogModel Export-SPEnterpriseSearchTopology Export-SPInfoPathAdministrationFiles Export-SPMetadataWebServicePartitionData Export-SPSiteSubscriptionBusinessDataCatalogConfig Export-SPSiteSubscriptionProfileConfig Export-SPSiteSubscriptionSettings Export-SPWeb Get-PluggableSecurityTrimmer Get-SPAccessServiceApplication Get-SPAlternateURL Get-SPAuthenticationProvider Get-SPBackupHistory Get-SPBrowserCustomerExperienceImprovementProgram Get-SPBusinessDataCatalogMetadataObject Get-SPBusinessDataCatalogThrottleConfig Get-SPCertificateAuthority Get-SPClaimProvider Get-SPClaimProviderManager Get-SPContentDatabase Get-SPContentDeploymentJob Get-SPContentDeploymentPath Get-SPCustomLayoutsPage Get-SPDatabase Get-SPDataConnectionFile Get-SPDataConnectionFileDependent Get-SPDesignerSettings Get-SPDiagnosticConfig Get-SPDiagnosticsPerformanceCounter Get-SPDiagnosticsProvider New-SPPerformancePointServiceApplication New-SPPerformancePointServiceApplicationProxy New-SPPerformancePointServiceApplicationTrustedLocation New-SPProfileServiceApplication New-SPProfileServiceApplicationProxy New-SPSecureStoreApplication New-SPSecureStoreApplicationField New-SPSecureStoreServiceApplication New-SPSecureStoreServiceApplicationProxy New-SPSecureStoreTargetApplication New-SPServiceApplicationProxyGroup New-SPSite New-SPSiteSubscription New-SPSiteSubscriptionFeaturePack New-SPStateServiceApplication New-SPStateServiceApplicationProxy New-SPStateServiceDatabase New-SPSubscriptionSettingsServiceApplication New-SPSubscriptionSettingsServiceApplicationProxy New-SPTrustedIdentityTokenIssuer New-SPTrustedRootAuthority New-SPTrustedServiceTokenIssuer New-SPUsageApplication New-SPUsageLogFile New-SPUser New-SPVisioSafeDataProvider New-SPVisioServiceApplication New-SPVisioServiceApplicationProxy New-SPWeb New-SPWebAnalyticsServiceApplication New-SPWebAnalyticsServiceApplicationProxy New-SPWebApplication New-SPWebApplicationExtension New-SPWordConversionServiceApplication Ping-SPEnterpriseSearchContentService Publish-SPServiceApplication Receive-SPSharedServiceApplicationInfo Remove-PluggableSecurityTrimmer Remove-SPAlternateURL Remove-SPBusinessDataCatalogModel Remove-SPBusinessDataCatalogSiteSubscriptionConfig Remove-SPBusinessDataCatalogThrottleConfig Remove-SPClaimProvider Remove-SPClaimTypeMapping Remove-SPConfigurationDatabase Remove-SPContentDatabase Remove-SPContentDeploymentJob Remove-SPContentDeploymentPath Remove-SPDiagnosticsPerformanceCounter Remove-SPEnterpriseSearchCrawlComponent Remove-SPEnterpriseSearchCrawlContentSource Remove-SPEnterpriseSearchCrawlCustomConnector Remove-SPEnterpriseSearchCrawlDatabase Remove-SPEnterpriseSearchCrawlExtension Remove-SPEnterpriseSearchCrawlMapping Remove-SPEnterpriseSearchCrawlRule Remove-SPEnterpriseSearchCrawlTopology Remove-SPEnterpriseSearchExtendedConnectorProperty Remove-SPEnterpriseSearchLanguageResourcePhrase Remove-SPEnterpriseSearchMetadataCategory Remove-SPEnterpriseSearchMetadataManagedProperty Remove-SPEnterpriseSearchMetadataMapping Remove-SPEnterpriseSearchPropertyDatabase Remove-SPEnterpriseSearchQueryAuthority Remove-SPEnterpriseSearchQueryComponent Remove-SPEnterpriseSearchQueryDemoted Remove-SPEnterpriseSearchQueryKeyword

Get-SPEnterpriseSearchAdministrationComponent Get-SPEnterpriseSearchCrawlComponent Get-SPEnterpriseSearchCrawlContentSource Get-SPEnterpriseSearchCrawlCustomConnector Get-SPEnterpriseSearchCrawlDatabase Get-SPEnterpriseSearchCrawlExtension Get-SPEnterpriseSearchCrawlMapping Get-SPEnterpriseSearchCrawlRule Get-SPEnterpriseSearchCrawlTopology Get-SPEnterpriseSearchExtendedClickThroughExtractorJobDefinition Get-SPEnterpriseSearchExtendedConnectorProperty Get-SPEnterpriseSearchExtendedQueryProperty Get-SPEnterpriseSearchIndexPartition Get-SPEnterpriseSearchLanguageResourcePhrase Get-SPEnterpriseSearchMetadataCategory Get-SPEnterpriseSearchMetadataCrawledProperty Get-SPEnterpriseSearchMetadataManagedProperty Get-SPEnterpriseSearchMetadataMapping Get-SPEnterpriseSearchPropertyDatabase Get-SPEnterpriseSearchQueryAndSiteSettingsService Get-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance Get-SPEnterpriseSearchQueryAndSiteSettingsServiceProxy Get-SPEnterpriseSearchQueryAuthority Get-SPEnterpriseSearchQueryComponent Get-SPEnterpriseSearchQueryDemoted Get-SPEnterpriseSearchQueryKeyword Get-SPEnterpriseSearchQueryScope Get-SPEnterpriseSearchQueryScopeRule Get-SPEnterpriseSearchQuerySuggestionCandidates Get-SPEnterpriseSearchQueryTopology Get-SPEnterpriseSearchRankingModel Get-SPEnterpriseSearchSecurityTrimmer Get-SPEnterpriseSearchService Get-SPEnterpriseSearchServiceApplication Get-SPEnterpriseSearchServiceApplicationProxy Get-SPEnterpriseSearchServiceInstance Get-SPEnterpriseSearchSiteHitRule Get-SPExcelBlockedFileType Get-SPExcelDataConnectionLibrary Get-SPExcelDataProvider Get-SPExcelFileLocation Get-SPExcelServiceApplication Get-SPExcelUserDefinedFunction Get-SPFarm Get-SPFarmConfig Get-SPFeature Get-SPHelpCollection Get-SPIisWebServiceApplicationPool Get-SPIisWebServiceSettings Get-SPInfoPathFormsService Get-SPInfoPathFormTemplate Get-SPInfoPathUserAgent Get-SPInfoPathWebServiceProxy Get-SPLogEvent Get-SPLogLevel Get-SPManagedAccount Get-SPManagedPath Get-SPMetadataServiceApplication Get-SPMetadataServiceApplicationProxy Get-SPMobileMessagingAccount Get-SPPerformancePointSecureDataValues Get-SPPerformancePointServiceApplication Get-SPPerformancePointServiceApplicationTrustedLocation Get-SPProcessAccount Get-SPProduct Get-SPProfileServiceApplicationSecurity Get-SPSearchService Get-SPSearchServiceInstance Get-SPSecureStoreApplication Get-SPSecurityTokenService Get-SPServer Get-SPServiceApplication Get-SPServiceApplicationProxy Get-SPServiceApplicationProxyGroup

Remove-SPEnterpriseSearchQueryScope Remove-SPEnterpriseSearchQueryScopeRule Remove-SPEnterpriseSearchQueryTopology Remove-SPEnterpriseSearchRankingModel Remove-SPEnterpriseSearchSecurityTrimmer Remove-SPEnterpriseSearchServiceApplication Remove-SPEnterpriseSearchServiceApplicationProxy Remove-SPEnterpriseSearchSiteHitRule Remove-SPExcelBlockedFileType Remove-SPExcelDataConnectionLibrary Remove-SPExcelDataProvider Remove-SPExcelFileLocation Remove-SPExcelUserDefinedFunction Remove-SPIisWebServiceApplicationPool Remove-SPInfoPathUserAgent Remove-SPManagedAccount Remove-SPManagedPath Remove-SPPerformancePointServiceApplication Remove-SPPerformancePointServiceApplicationProxy Remove-SPPerformancePointServiceApplicationTrustedLocation Remove-SPSecureStoreApplication Remove-SPServiceApplication Remove-SPServiceApplicationProxy Remove-SPServiceApplicationProxyGroup Remove-SPServiceApplicationProxyGroupMember Remove-SPShellAdmin Remove-SPSite Remove-SPSiteSubscription Remove-SPSiteSubscriptionFeaturePack Remove-SPSiteSubscriptionFeaturePackMember Remove-SPSiteSubscriptionMetadataConfig Remove-SPSiteSubscriptionProfileConfig Remove-SPSiteSubscriptionSettings Remove-SPSocialItemByDate Remove-SPSolution Remove-SPSolutionDeploymentLock Remove-SPStateServiceDatabase Remove-SPTrustedIdentityTokenIssuer Remove-SPTrustedRootAuthority Remove-SPTrustedServiceTokenIssuer Remove-SPUsageApplication Remove-SPUser Remove-SPUserSolution Remove-SPVisioSafeDataProvider Remove-SPWeb Remove-SPWebApplication Remove-SPWordConversionServiceJobHistory Rename-SPServer Restart-SPEnterpriseSearchQueryComponent Restore-SPEnterpriseSearchServiceApplication Restore-SPFarm Restore-SPSite Resume-SPEnterpriseSearchServiceApplication Resume-SPStateServiceDatabase Revoke-SPBusinessDataCatalogMetadataObject Revoke-SPObjectSecurity Set-SPAccessServiceApplication Set-SPAlternateURL Set-SPBrowserCustomerExperienceImprovementProgram Set-SPBusinessDataCatalogMetadataObject Set-SPBusinessDataCatalogServiceApplication Set-SPBusinessDataCatalogThrottleConfig Set-SPCentralAdministration Set-SPClaimProvider Set-SPContentDatabase Set-SPContentDeploymentJob Set-SPContentDeploymentPath Set-SPCustomLayoutsPage Set-SPDataConnectionFile Set-SPDesignerSettings Set-SPDiagnosticConfig Set-SPDiagnosticsProvider Set-SPEnterpriseSearchAdministrationComponent Set-SPEnterpriseSearchCrawlContentSource

Get-SPServiceApplicationSecurity Get-SPServiceContext Get-SPServiceEndpoint Get-SPServiceInstance Get-SPSessionStateService Get-SPShellAdmin Get-SPSite Get-SPSiteAdministration Get-SPSiteSubscription Get-SPSiteSubscriptionConfig Get-SPSiteSubscriptionEdiscoveryHub Get-SPSiteSubscriptionEdiscoverySearchScope Get-SPSiteSubscriptionFeaturePack Get-SPSiteSubscriptionMetadataConfig Get-SPSolution Get-SPStateServiceApplication Get-SPStateServiceApplicationProxy Get-SPStateServiceDatabase Get-SPTaxonomySession Get-SPTimerJob Get-SPTopologyWebServiceApplication Get-SPTopologyWebServiceProxy Get-SPTrustedIdentityTokenIssuer Get-SPTrustedRootAuthority Get-SPTrustedServiceTokenIssuer Get-SPUsageApplication Get-SPUsageDefinition Get-SPUsageService Get-SPUser Get-SPUserSolution Get-SPVisioExternalData Get-SPVisioPerformance Get-SPVisioSafeDataProvider Get-SPVisioServiceApplication Get-SPVisioServiceApplicationProxy Get-SPWeb Get-SPWebAnalyticsServiceApplication Get-SPWebAnalyticsServiceApplicationProxy Get-SPWebApplication Get-SPWebApplicationHttpThrottlingMonitor Get-SPWebPartPack Get-SPWebTemplate Get-SPWorkflowConfig Grant-SPBusinessDataCatalogMetadataObject Grant-SPObjectSecurity Import-SPBusinessDataCatalogModel Import-SPEnterpriseSearchTopology Import-SPInfoPathAdministrationFiles Import-SPMetadataWebServicePartitionData Import-SPSiteSubscriptionBusinessDataCatalogConfig Import-SPSiteSubscriptionProfileConfig Import-SPSiteSubscriptionSettings Import-SPWeb Initialize-SPContentDatabase Initialize-SPResourceSecurity Initialize-SPStateServiceDatabase Install-SPApplicationContent Install-SPDataConnectionFile Install-SPFeature Install-SPHelpCollection Install-SPInfoPathFormTemplate Install-SPService Install-SPSolution Install-SPUserSolution Install-SPWebPartPack Install-SPWebTemplate Merge-SPLogFile Mount-SPContentDatabase Mount-SPStateServiceDatabase Move-SPBlobStorageLocation Move-SPProfileManagedMetadataProperty Move-SPSite Move-SPUser New-SPAccessServiceApplication

Set-SPEnterpriseSearchCrawlDatabase Set-SPEnterpriseSearchCrawlRule Set-SPEnterpriseSearchCrawlTopology Set-SPEnterpriseSearchExtendedConnectorProperty Set-SPEnterpriseSearchExtendedQueryProperty Set-SPEnterpriseSearchIndexPartition Set-SPEnterpriseSearchMetadataCategory Set-SPEnterpriseSearchMetadataCrawledProperty Set-SPEnterpriseSearchMetadataManagedProperty Set-SPEnterpriseSearchMetadataMapping Set-SPEnterpriseSearchPropertyDatabase Set-SPEnterpriseSearchQueryAuthority Set-SPEnterpriseSearchQueryComponent Set-SPEnterpriseSearchQueryKeyword Set-SPEnterpriseSearchQueryScope Set-SPEnterpriseSearchQueryScopeRule Set-SPEnterpriseSearchQueryTopology Set-SPEnterpriseSearchRankingModel Set-SPEnterpriseSearchService Set-SPEnterpriseSearchServiceApplication Set-SPEnterpriseSearchServiceApplicationProxy Set-SPEnterpriseSearchServiceInstance Set-SPExcelDataConnectionLibrary Set-SPExcelDataProvider Set-SPExcelFileLocation Set-SPExcelServiceApplication Set-SPExcelUserDefinedFunction Set-SPFarmConfig Set-SPIisWebServiceApplicationPool Set-SPIisWebServiceSettings Set-SPInfoPathFormsService Set-SPInfoPathFormTemplate Set-SPInfoPathWebServiceProxy Set-SPLogLevel Set-SPManagedAccount Set-SPMetadataServiceApplication Set-SPMetadataServiceApplicationProxy Set-SPMobileMessagingAccount Set-SPPassPhrase Set-SPPerformancePointSecureDataValues Set-SPPerformancePointServiceApplication Set-SPProfileServiceApplication Set-SPProfileServiceApplicationProxy Set-SPProfileServiceApplicationSecurity Set-SPSearchService Set-SPSearchServiceInstance Set-SPSecureStoreApplication Set-SPSecureStoreDefaultProvider Set-SPSecureStoreServiceApplication Set-SPSecurityTokenService Set-SPServiceApplication Set-SPServiceApplicationSecurity Set-SPServiceEndpoint Set-SPSessionStateService Set-SPSite Set-SPSiteAdministration Set-SPSiteSubscriptionConfig Set-SPSiteSubscriptionEdiscoveryHub Set-SPSiteSubscriptionMetadataConfig Set-SPSiteSubscriptionProfileConfig Set-SPStateServiceApplication Set-SPStateServiceApplicationProxy Set-SPStateServiceDatabase Set-SPSubscriptionSettingsServiceApplication Set-SPTimerJob Set-SPTopologyWebServiceApplication Set-SPTopologyWebServiceProxy Set-SPTrustedIdentityTokenIssuer Set-SPTrustedRootAuthority Set-SPTrustedServiceTokenIssuer Set-SPUsageApplication Set-SPUsageDefinition Set-SPUsageService Set-SPUser

New-SPAlternateURL New-SPAuthenticationProvider New-SPBusinessDataCatalogServiceApplication New-SPBusinessDataCatalogServiceApplicationProxy New-SPCentralAdministration New-SPClaimProvider New-SPClaimsObject New-SPClaimsPrincipal New-SPClaimTypeMapping New-SPConfigurationDatabase New-SPContentDatabase New-SPContentDeploymentJob New-SPContentDeploymentPath New-SPEnterpriseSearchCrawlComponent New-SPEnterpriseSearchCrawlContentSource New-SPEnterpriseSearchCrawlCustomConnector New-SPEnterpriseSearchCrawlDatabase New-SPEnterpriseSearchCrawlExtension New-SPEnterpriseSearchCrawlMapping New-SPEnterpriseSearchCrawlRule New-SPEnterpriseSearchCrawlTopology New-SPEnterpriseSearchExtendedConnectorProperty New-SPEnterpriseSearchLanguageResourcePhrase New-SPEnterpriseSearchMetadataCategory New-SPEnterpriseSearchMetadataCrawledProperty New-SPEnterpriseSearchMetadataManagedProperty New-SPEnterpriseSearchMetadataMapping New-SPEnterpriseSearchPropertyDatabase New-SPEnterpriseSearchQueryAuthority New-SPEnterpriseSearchQueryComponent New-SPEnterpriseSearchQueryDemoted New-SPEnterpriseSearchQueryKeyword New-SPEnterpriseSearchQueryScope New-SPEnterpriseSearchQueryScopeRule New-SPEnterpriseSearchQueryTopology New-SPEnterpriseSearchRankingModel New-SPEnterpriseSearchSecurityTrimmer New-SPEnterpriseSearchServiceApplication New-SPEnterpriseSearchServiceApplicationProxy New-SPEnterpriseSearchSiteHitRule New-SPExcelBlockedFileType New-SPExcelDataConnectionLibrary New-SPExcelDataProvider New-SPExcelFileLocation New-SPExcelServiceApplication New-SPExcelUserDefinedFunction New-SPIisWebServiceApplicationPool New-SPLogFile New-SPManagedAccount New-SPManagedPath New-SPMetadataServiceApplication New-SPMetadataServiceApplicationProxy New-SPObaSolutionPackage

Set-SPVisioExternalData Set-SPVisioPerformance Set-SPVisioSafeDataProvider Set-SPVisioServiceApplication Set-SPWeb Set-SPWebAnalyticsServiceApplication Set-SPWebAnalyticsServiceApplicationProxy Set-SPWebApplication Set-SPWebApplicationHttpThrottlingMonitor Set-SPWebTemplate Set-SPWordConversionServiceApplication Set-SPWorkflowConfig Start-SPAdminJob Start-SPAssignment Start-SPContentDeploymentJob Start-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance Start-SPEnterpriseSearchServiceInstance Start-SPInfoPathFormTemplate Start-SPServiceInstance Start-SPTimerJob Stop-SPAssignment Stop-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance Stop-SPEnterpriseSearchServiceInstance Stop-SPInfoPathFormTemplate Stop-SPServiceInstance Suspend-SPEnterpriseSearchServiceApplication Suspend-SPStateServiceDatabase Test-SPContentDatabase Test-SPInfoPathFormTemplate Uninstall-SPDataConnectionFile Uninstall-SPFeature Uninstall-SPHelpCollection Uninstall-SPInfoPathFormTemplate Uninstall-SPSolution Uninstall-SPUserSolution Uninstall-SPWebPartPack Uninstall-SPWebTemplate Unpublish-SPServiceApplication Update-SPFarmEncryptionKey Update-SPInfoPathAdminFileUrl Update-SPInfoPathFormTemplate Update-SPInfoPathUserFileUrl Update-SPProfilePhotoStore Update-SPSecureStoreApplicationServerKey Update-SPSecureStoreCredentialMapping Update-SPSecureStoreGroupCredentialMapping Update-SPSecureStoreMasterKey Update-SPSolution Update-SPUserSolution Upgrade-SPContentDatabase Upgrade-SPEnterpriseSearchServiceApplication Upgrade-SPSingleSignOnDatabase

If you're going to be working with the SharePoint PowerShell cmdlets then there are two cmdlets that you should learn before any others: Start-SPAssignment and StopSPAssignment. If you've used the custom cmdlets that I created for the 2007 product and read my articles around them then you should be familiar with the core issue that I was trying to solve with some of them - the handling of disposable objects. When you use a cmdlet such as Get-SPSite you are returning back a disposable object, an object that implements the IDisposable interface in order to release handles to unmanaged resources which cause memory leaks if not released. I chose to solve the issue by simply not returning back disposable objects and instead using a proxy object. Microsoft chose a different route.

If you look closely at the definitions of the cmdlets from the text file you created above you should notice that every cmdlet has an

-AssignmentCollection parameter which takes in

an SPAssignmentCollection object type. The purpose of this collection is to store disposable objects so that they can be disposed when your operations complete. You create a new assignment collection by calling the Start-SPAssignment cmdlet. You can then optionally pass the created assignment collection object into your subsequent calls by either using the pipeline or directly setting the parameter (otherwise the global collection will be used). Lets look at the help for the cmdlet to understand this better:
PS C:\> help start-spassignment NAME Start-SPAssignment SYNOPSIS Initiates a new assignment store. SYNTAX Start-SPAssignment [-Global <SwitchParameter>] [<CommonParameters>] DETAILED DESCRIPTION Use this command to properly dispose of objects used with variable assignme nts. Using SPWeb, SPSite, or SPSiteAdminsitration objects can use large amounts of memory and using these objects, or lists of these objects, in PowerShell scripts requires proper memory management. By default, all Get commands di spose of these objects immediately after the pipeline finishes, but using S PAssignment, you can assign the list of objects to a variable and dispose o f the objects after they are no longer needed. You can also ensure that the objects will remain as long as you need them, even throughout multiple ite rations of commands. There are three levels of assignment: * No assignment - The object is not assigned to a variable and is disposed of after each iteration of the command. * Simple assignment - All objects are assigned to the global assignment sto re. This is done by using the Global parameter. When using this level, al l objects are assigned to a global store and are disposed of when the Sto p-SPAssignment command is called. * Advanced assignment - Objects are assigned to named stores for disposal. You can dispose of objects by using the -Identity parameter with the Stop -SPAssignment command. Regardless of the level used, all objects are disposed of when the PowerShe ll runspace is closed. RELATED LINKS REMARKS To see the examples, type: "get-help Start-SPAssignment -examples". For more information, type: "get-help Start-SPAssignment -detailed". For technical information, type: "get-help Start-SPAssignment -full".

As you can see from the help text there are three levels of assignment: No assignment (dispose immediately), simple assignment (use a global store), and advanced assignment

(use a named store). Let's take a look at the syntax (note that in Beta 1 most of the help files do not match the actual syntax so I rarely rely on the help text to tell me what the cmdlet syntax is - instead I use the Get-Command (gcm) cmdlet):
PS C:\> gcm Start-SPAssignment -syntax Start-SPAssignment [-Global] [-AssignmentCollection <SPAssignmentCollection>] [ -Verbose] [-Debug] [-ErrorAction <ActionPreference>] [-WarningAction <ActionPre ference>] [-ErrorVariable <String>] [-WarningVariable <String>] [-OutVariable < String>] [-OutBuffer <Int32>]

If you specify the

-Global switch then you do not need to store the returned object or pass

it into your cmdlets - internally this cmdlet stores the object in a static variable which is used by all subsequent calls - this is the "simple assignment" method mentioned in the help text. If you do not specify the

-Global switch then you must store the returned object in a

variable and pass that variable into all subsequent cmdlet calls that return disposable objects and provide the variable to the Stop-SPAssignment cmdlet with the same variable via the

-SemiGlobal parameter (this may change to Identity for the RTM) - this is the

"advanced assignment" mentioned in the help text. So what about the "no assignment" option? The "no assignment" option is basically when you do not create an SPAssignmentCollection using the Start-SPAssignment cmdlet which causes cmdlets that return disposable objects to dispose of the object immediately after the call to WriteObject. So as long as the pipeline is active the object remains un-disposed but at the end of the pipeline the object is disposed. So now we'll look at the syntax for the Stop-SPAssignment cmdlet:
PS C:\> gcm Stop-SPAssignment -syntax Stop-SPAssignment [[-SemiGlobal] <SPAssignmentCollection>] [-Global] [-Assignme ntCollection <SPAssignmentCollection>] [-Verbose] [-Debug] [-ErrorAction <Actio nPreference>] [-WarningAction <ActionPreference>] [-ErrorVariable <String>] [-W arningVariable <String>] [-OutVariable <String>] [-OutBuffer <Int32>]

-Global switch for the StartSPAssignment cmdlet then you'll use it here, otherwise you would use the SemiGlobal parameter and pass the variable you created earlier.
As you can see this is pretty straightforward, if you used the Here's a complete example demonstrating both approaches: #Use of the Global assignment variable Start-SPAssignment -Global $site = Get-SPSite "http://portal" $site | fl Stop-SPAssignment -Global

#Use of a semi-global, or named variable $gc = Start-SPAssignment $site = $gc | Get-SPSite "http://mysites" $site | fl $gc | Stop-SPAssignment For the second example you can see that I'm passing in the variable using the pipeline rather than setting the parameter directly (for both the Get-SPSite cmdlet and the StopSPAssignment cmdlet). I could have easily set the parameter names directly but this just results in less code. So one thing you should be asking is when do I need to do this - every cmdlet takes an SPAssignmentCollection so does that mean that I always have to deal with this stuff? My simple answer is, no, you don't have to do this all the time, only when you know you are working with disposable objects. The problem is that most people don't know when they are working with disposable objects, and in many cases what disposable objects are. So my first best practice recommendation for SharePoint 2010 will be to always use the simple assignment approach (use the global assignment variable) unless you specifically know to do otherwise. So wrap all your scripts with a call to Start-SPAssignment and StopSPAssignment. If you have functions that do not return values then wrap those using the advanced approach as shown below: function Set-SomethingInteresting([string]$siteUrl) { trap { $gc | Stop-SPAssignment } $gc = Start-SPAssignment $site = $gc | Get-SPSite $siteUrl Write-Host "Doing something interesting..." $gc | Stop-SPAssignment } Set-SomethingInteresting "http://mysites" So as you can see SharePoint 2010 introduces all kinds of really cool stuff - I've literally not even scratched the surface with what you can do with PowerShell and SharePoint 2010, let alone all the cool new features that 2010 introduces. Over the coming weeks and months I hope to provide details on how to do a full scripted install of SharePoint 2010 including detail on how to script out every single service - this will be critical information that every

administrator and developer should have as PowerShell is going to be the recommended way to start and configure your services in the new architecture.

Das könnte Ihnen auch gefallen