Hi,
I’m writing a dsc resource to set permission in a SharePoint site. The code I’m using works perfectly fine when I test it in a powershell shell with the snappin Microsoft.SharePoint.PowerShell loaded.
As a dsc resource the object Microsoft.SharePoint.SPWeb does not return the properties although it seems to load fine.
function Test-TargetResource
{
[CmdletBinding()]
[OutputType([System.Boolean])]
param
(
[parameter(Mandatory = $true)]
[System.String]
$GroupName,
[System.String]
$LoginName,
[System.String]
$WebUrl,
[ValidateSet("Present","Absent")]
[System.String]
$Ensure
)
$WebUrl = "http://scw000001204.corp.gwpnet.com/search"
Add-PSSnapin Microsoft.SharePoint.PowerShell
$result = $false
Write-Verbose ("using credentials: " + $Env:USERNAME)
try {
$web = Get-SPWeb -Identity $WebUrl -ErrorAction Stop
Write-Verbose ("Web found: " + $web.Url)
Write-Verbose ("Object Type: " + $web.GetType().Fullname)
}
catch {
Write-Error ("Could not load web with url: " + $weburl)
}
if($Group = $web.SiteGroups[$GroupName]) {
try {
$User = $web.EnsureUser($LoginName)
foreach ($GroupUser in $group.users) {
if ($GroupUser.Userlogin -eq $User.Userlogin) {
$result = $true
Write-Verbose ("User " + $User.Userlogin + " is member of the group: " + $GroupName)
}
}
}
catch {
Write-Error ("User not found: " + $LoginName)
}
}
else {
Write-Error ("Group not found: " + $GroupName)
}
return $result
}
The output looks like this:
VERBOSE: [SCW000001204]: LCM: [ Start Resource ] [[srSPGroupMember]VisitorGroupRoot]
VERBOSE: [SCW000001204]: LCM: [ Start Test ] [[srSPGroupMember]VisitorGroupRoot]
VERBOSE: [SCW000001204]: [[srSPGroupMember]VisitorGroupRoot] using credentials: tecshp00
VERBOSE: [SCW000001204]: [[srSPGroupMember]VisitorGroupRoot] Leaving BeginProcessing Method of Get-SPWeb.
VERBOSE: [SCW000001204]: [[srSPGroupMember]VisitorGroupRoot] Leaving ProcessRecord Method of Get-SPWeb.
VERBOSE: [SCW000001204]: [[srSPGroupMember]VisitorGroupRoot] Leaving EndProcessing Method of Get-SPWeb.
VERBOSE: [SCW000001204]: [[srSPGroupMember]VisitorGroupRoot] Web found: http://scw000001204.corp.gwpnet.com/search
VERBOSE: [SCW000001204]: [[srSPGroupMember]VisitorGroupRoot] Object Type: Microsoft.SharePoint.SPWeb
Group not found: TestGroup
+ CategoryInfo : NotSpecified: (
, CimException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Test-TargetResource
+ PSComputerName : localhost
The Group “TestGroup” exists and I can run the same code outside the dsc resource and it works fine.
Any ideas what I’m doing wrong here?
Thanks,
Brian