我尝试通过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传递我的用户凭据
提前谢谢。
答案 0 :(得分:0)
如果SharePoint站点接受匿名连接,然后发出401状态代码,[PSCredential]
将响通过使用凭据发送相同的请求(我知道它支持基本身份验证,它可能支持其他方案)。如果站点使用基于表单的身份验证,则您无法使用此方法。
您可以使用-Credential
点击登录表单,使用其解析HTML的功能来查找表单,然后使用填写的数据重新提交,并使用Invoke-RestMethod
和{{ 1}},然后您可以使用Invoke-WebRequest
调用相同的会话变量。