我正在开发运行在 SharePoint Service 3.0 上的公司 SharePoint Intranet 网站。除了一件事外,其他一切都运行正常。
我想创建一个员工列表,其中包含有关员工的所有信息,如电话、电子邮件、姓名、公司职位等。问题是,所有这些信息都已在我们的 Active Directory 中,因此我想提取这些数据并从 AD 中创建员工列表,而不是将它们全部重新写下来。此外,只需在 AD 中更改,这对于员工的更新和维护将有很大帮助。
我希望我已经正确解释了我的问题,否则,请告诉我。
真诚的
梅斯蒂卡
答案1
看起来您正在向我谈论将 AD 信息同步到 SharePoint 列表。
我以前遇到过同样的问题。有人告诉我 SharePoint(我的情况是 SharePoint 2007)内置功能提供了这样的功能,但我甚至没有通过使用内置功能来实现这一点。这就是为什么我最终使用第三方工具,例如SharePoint AD 同步(顺便说一下,这是 30 天的免费试用期)。
仅供您参考。
答案2
对于 2007 年,我怀疑这可能有用,但我还没有尝试过。网络上有许多适用于员工名录的 Web 部件,听起来就像您想要的。
我正在寻找适用于 Sharepoint 2010 的类似产品,但我的理解是,您需要具有用户配置文件同步服务的 Share Point Server Portal 版本。对于 Sharepoint 2010,这包括标准版和企业版(http://technet.microsoft.com/en-us/library/ee721049.aspx) 因此升级时请务必小心。
答案3
您可以使用 LDIFDE(xml 格式)或 CSVDE(用于 csv 输出)从 AD 中提取数据。您还可以指定要转储的记录和要提取的字段...
这里有一个很好的网站来了解详细信息:
答案4
编写一个 PowerShell 脚本,从 AD 获取所有用户,然后将数据推送到列表中。我过去做过的一件事是编写一个 PowerShell 脚本,查询 SQL Server DB,清除 SharePoint (WSS 3.0) 列表中的所有数据,然后将当前数据推送到列表中。它可以按计划使用计划任务运行。如果这似乎是您想要的方式,我非常乐意提供帮助。
以下是WSS 3.0端的一些示例代码:
[void][System.reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$site = new-object Microsoft.SharePoint.SPSite("https://portal.domain.com/")
$web = $Site.OpenWeb("rfq")
$list = $web.Lists["Estimating_Load"]
$items = $list.Items;
#Purge the list.
for ($i=$items.Count -1; $i -ge 0; $i -= 1)
{
$items.Delete($i);
}
##Add new items to list.
foreach($dataitem in $DataSet.Tables[0])
{
$newitem = $list.items.Add()
$newitem["Customer"] = $dataitem.Company;
$newitem["Quote_Number"] = $dataitem.Quote_No;
$newitem["Sales_Person"] = $dataitem.Sales_Person;
$newitem["Estimator"] = $dataitem.Estimator;
$newitem["Due_Date"] = $dataitem.Due_Date;
$newitem["Time"] = $dataitem.TimeToCompEa;
$newitem.update()
}
$web.Dispose()
$site.Dispose()