纳特的答案很接近。它实际上是 UserInfo 表。这些数字对应于该表的 tp_ID 列。不幸的是,我仍然不知道如何使用 SSIS 提取此信息,因此我正在编写一个控制台应用程序,该应用程序通过 Sharepoint Web 服务提取表的数据并将其转储到数据库表中并使用 Windows 任务对其进行调度调度器。此外,由于 Sharepoint 的工作方式,每个根网站集对每个人都有不同的 ID,因此我需要为每个根网站集进行单独的拉取。这是我正在使用的方法:
private static XElement GetUserInfo(string siteCollectionListsSvc)
{
SharepointListsSvc.ListsSoapClient ws = new SharepointListsSvc.ListsSoapClient();
ws.Endpoint.Address = new System.ServiceModel.EndpointAddress(siteCollectionListsSvc);
ws.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
ws.ClientCredentials.Windows.AllowNtlm = true;
ws.ClientCredentials.Windows.ClientCredential = (System.Net.NetworkCredential)System.Net.CredentialCache.DefaultCredentials;
XElement userInfo = ws.GetListItems("UserInfo", String.Empty, null, null, "4000", null, null);
return userInfo;
}
方法参数类似于“http://www.my.site/_vti_bin/lists.asmx”。我设置绑定和端点的应用程序配置:
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="ListsSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="5000000" maxBufferPoolSize="524288" maxReceivedMessageSize="5000000"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://www.my.site/_vti_bin/lists.asmx"
binding="basicHttpBinding" bindingConfiguration="ListsSoap"
contract="SharepointListsSvc.ListsSoap" name="ListsSoap" />
</client>
</system.serviceModel>
</configuration>
请注意,我将 //binding/@maxBufferSize 和 //binding/@maxReceivedMessageSize 从默认的 65536 增加到 5000000。我们有大约 3000 条可以返回的记录,而默认大小还不够大。由于这些都是内部调用,我不担心网络延迟。默认绑定的其他更改在 //security 元素中,特别是 @mode 和 //transport/@clientCredentialType 属性。
当你取回 XML 时,数字(存储在 PoG 字段中)在 //z:row/@ows_ID 属性中,而他对应的 ADS 登录在 //z:row/@ows_Name 属性中。您还可以在 //z:row/@ows_EMail 属性中获取电子邮件地址。
希望这可以帮助其他人解决同样的问题!