访问仅对“组成员”#34;可见的“SharePoint组”。作为管理员使用PowerShell Invoke-RestMethod

时间:2015-04-30 21:04:17

标签: web-services rest powershell sharepoint soap

我尝试通过PowerShell Invoke-RestMethod请求访问/获取SharePoint 2010组数据(角色和权限)。我很难访问将其组设置设置为:

的组
  

谁可以查看该群组的成员资格?小组成员

我是管理员,所以无论如何我都应该能够访问这些数据。

当组设置设置为:组成员?

时,如何访问此数据

我是否需要利用我的凭据?我不完全确定如何将凭据传递到网站。我在本地计算机上运行PowerShell v4.0而不是在SP生产服务器上运行。我想因为我访问了一个网络资源,我应该能够传递凭据并获得提升的权限。

请参阅以下代码:

      clear

      $CRED = Get-Credential
      [System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }

      $uri = "http://{site}/_vti_bin/UserGroup.asmx"

      $soap = '<?xml version="1.0" encoding="utf-8"?>'
      $soap+= '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
      $soap+= '<soap:Body>'
      $soap+= '<GetRoleCollectionFromGroup xmlns="http://schemas.microsoft.com/sharepoint/soap/directory/">'
      $soap+= '<groupName>TestGroup</groupName>'
      $soap+= '</GetRoleCollectionFromGroup>'
      $soap+= '</soap:Body>'
      $soap+= '</soap:Envelope>'

      [xml]$WF = Invoke-RestMethod $uri -Credential $CRED -Method POST -ContentType "text/xml" -Body $soap                

      $WF.Envelope.Body.GetRoleCollectionFromGroupResponse.GetRoleCollectionFromGroupResult.GetRoleCollectionFromGroup.Roles.Role

运行此代码后,我收到此错误:

\\ xmlns="http://schemas.microsoft.com/sharepoint/soap/">Group cannot be found.</errorstring>

我成功地通过UserGroup.asmx获取了其他资源,例如GetGroupInfo和GetGroupCollectionFromSite。我不明白我需要做什么来访问这些数据。我通过$ CRED传递我的用户凭据

提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果SharePoint站点接受匿名连接,然后发出401状态代码,[PSCredential]将响通过使用凭据发送相同的请求(我知道它支持基本身份验证,它可能支持其他方案)。如果站点使用基于表单的身份验证,则您无法使用此方法。

您可以使用-Credential点击登录表单,使用其解析HTML的功能来查找表单,然后使用填写的数据重新提交,并使用Invoke-RestMethod和{{ 1}},然后您可以使用Invoke-WebRequest调用相同的会话变量。