Problems maintaining the SharePoint snapin

This topic contains 2 replies, has 2 voices, and was last updated by Profile photo of Prajeesh Prathap Prajeesh Prathap 2 years ago.

  • Author
    Posts
  • #20572
    Profile photo of Prajeesh Prathap
    Prajeesh Prathap
    Participant

    Hi,
    I've decided to use DSC to configure our sharepoint environment.
    But I'm having problems loading the SharePoint cmdlets from the second module in the configuration. It always throws an error. Could you please have a look and help me how to proceed?

    I've created a sample module and configuration file for reference. The module given below and the second one have the same content.

    function Get-TargetResource
    {
    	[CmdletBinding()]
    	[OutputType([System.Collections.Hashtable])]
    	param
    	(
    		[parameter(Mandatory = $true)]
    		[System.String]
    		$Site1
    	)
    }
    
    
    function Set-TargetResource
    {
    	[CmdletBinding()]
    	param
    	(
    		[parameter(Mandatory = $true)]
    		[System.String]
    		$Site1
    	)
    }
    
    
    function Test-TargetResource
    {
    	[CmdletBinding()]
    	[OutputType([System.Boolean])]
    	param
    	(
    		[parameter(Mandatory = $true)]
    		[System.String]
    		$Site1
    	)
    
    	 If ((Get-PsSnapin |?{$_.Name -eq "Microsoft.SharePoint.PowerShell"})-eq $null){
            Write-Verbose "Loading SharePoint Powershell Snapin..."
            Add-PsSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue | Out-Null
         }  
         if ((Get-SPSite -Limit All | ? {$_.Url -eq $Site1})-eq $null){
            Write-Verbose "$Site1 not found"
            return $false
         }
         else{
            return $true
         }
    }
    
    
    Export-ModuleMember -Function *-TargetResource
    
    
    

    My configuration file looks like

    Configuration SPSiteConfig {
        Import-DscResource -ModuleName xDSCSPSite1
        Import-DscResource -ModuleName xDSCSPSite2
        Node SER-XXX{
    
            xDSCSPSite1 Site1{
                Site1 = "http://Site1-d"
            }
            
    
            xDSCSPSite2 Site2 {            
                Site2 = "http://Site2-d"
            }
        }
    }
    SPSiteConfig
    
    Start-DscConfiguration -Wait -Verbose -Path .\SPSiteConfig
    

    But when I run this configration I get the error as

    PS E:\DSC> .\SPSiteConfig.ps1
    
    
        Directory: E:\DSC\SPSiteConfig
    
    
    Mode                LastWriteTime     Length Name                                                                                                         
    ----                -------------     ------ ----                                                                                                         
    -a---        13-11-2014     17:51       1488 SLO-702.mof                                                                                                  
    VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' = SendConfigurationApply,'className' = MSFT_DSCLocalConfigurationMan
    ager,'namespaceName' = root/Microsoft/Windows/DesiredStateConfiguration'.
    VERBOSE: An LCM method call arrived from computer SLO-702 with user sid S-1-5-21-1229272821-1801674531-839522115-133922.
    VERBOSE: [SLO-702]: LCM:  [ Start  Set      ]
    VERBOSE: [SLO-702]: LCM:  [ Start  Resource ]  [[xDSCSPSite1]Site1]
    VERBOSE: [SLO-702]: LCM:  [ Start  Test     ]  [[xDSCSPSite1]Site1]
    VERBOSE: [SLO-702]:                            [[xDSCSPSite1]Site1] Loading SharePoint Powershell Snapin...
    VERBOSE: [SLO-702]:                            [[xDSCSPSite1]Site1] Leaving BeginProcessing Method of Get-SPSite.
    VERBOSE: [SLO-702]:                            [[xDSCSPSite1]Site1] Leaving ProcessRecord Method of Get-SPSite.
    VERBOSE: [SLO-702]:                            [[xDSCSPSite1]Site1] Leaving EndProcessing Method of Get-SPSite.
    VERBOSE: [SLO-702]:                            [[xDSCSPSite1]Site1] http://Site1-d not found
    VERBOSE: [SLO-702]: LCM:  [ End    Test     ]  [[xDSCSPSite1]Site1]  in 5.9720 seconds.
    VERBOSE: [SLO-702]: LCM:  [ Start  Set      ]  [[xDSCSPSite1]Site1]
    VERBOSE: [SLO-702]: LCM:  [ End    Set      ]  [[xDSCSPSite1]Site1]  in 0.0060 seconds.
    VERBOSE: [SLO-702]: LCM:  [ End    Resource ]  [[xDSCSPSite1]Site1]
    VERBOSE: [SLO-702]: LCM:  [ Start  Resource ]  [[xDSCSPSite2]Site2]
    VERBOSE: [SLO-702]: LCM:  [ Start  Test     ]  [[xDSCSPSite2]Site2]
    VERBOSE: [SLO-702]:                            [[xDSCSPSite2]Site2] Loading SharePoint Powershell Snapin...
    The term 'Get-SPSite' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path 
    was included, verify that the path is correct and try again.
        + CategoryInfo          : ObjectNotFound: (Get-SPSite:) [], CimException
        + FullyQualifiedErrorId : CommandNotFoundException
        + PSComputerName        : SLO-702
     
    VERBOSE: [SLO-702]: LCM:  [ End    Test     ]  [[xDSCSPSite2]Site2]  in 0.3880 seconds.
    The PowerShell provider xDSCSPSite2 threw one or more non-terminating errors while running the Test-TargetResource functionality. These errors are logged 
    to the ETW channel called Microsoft-Windows-DSC/Operational. Refer to this channel for more details.
        + CategoryInfo          : InvalidOperation: (:) [], CimException
        + FullyQualifiedErrorId : NonTerminatingErrorFromProvider
        + PSComputerName        : SLO-702
     
    VERBOSE: [SLO-702]: LCM:  [ End    Set      ]
    The SendConfigurationApply function did not succeed.
        + CategoryInfo          : NotSpecified: (root/Microsoft/...gurationManager:String) [], CimException
        + FullyQualifiedErrorId : MI RESULT 1
        + PSComputerName        : SLO-702
     
    VERBOSE: Operation 'Invoke CimMethod' complete.
    VERBOSE: Time taken for configuration job to complete is 7.578 seconds
    

    I've attached the module and mof files for reference.

  • #20653
    Profile photo of Don Jones
    Don Jones
    Keymaster

    If you run the -TargetResource functions manually, just from a PowerShell prompt, do they do anything different?

  • #20675
    Profile photo of Prajeesh Prathap
    Prajeesh Prathap
    Participant

    Hi Jones,
    It works fine. Even the first module in the configuration works without an issue. Its the second module that has the issue with the snapin.

    Anyway,
    I figured out a way to get this thing resolved. I dispose the snapin at the end of every function in the module.

     finally{
            If ((Get-PsSnapin |?{$_.Name -eq "Microsoft.SharePoint.PowerShell"})-ne $null){
                Write-Verbose "Removing the PowerShell snapin"
                Remove-PsSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue | Out-Null
            } 
        }
    
    

You must be logged in to reply to this topic.