2011-05-03 44 views
3

我使用这个PowerShell脚本让网站所有者:从SharePoint获取用户信息使用PowerShell

 
$siteUrl = Read-Host "enter site url here:" 

$rootSite = New-Object Microsoft.SharePoint.SPSite($siteUrl) 

$spWebApp = $rootSite.WebApplication 

foreach($site in $spWebApp.Sites) 

{ 

    foreach($siteAdmin in $site.RootWeb.SiteAdministrators) 

    { 

     Write-Host "$($siteAdmin.ParentWeb.Url) - $($siteAdmin.DisplayName)" 

    } 

    $site.Dispose() 
} 

$rootSite.Dispose() 

我想,这将打印网站的所有者如电话号码和电子邮件的某些细节。我怎样才能做到这一点?

回答

2

我有两种选择。访问SPUser属性或从活动目录获取信息。

在第一种情况下,您是否无法像访问DisplayName那样访问属性?我的意思是,如果你有一个SPUser对象获得的电子邮件只是使用:

 
write-output "$($siteAdmin.Email)" 

有关获得从Active Directory用户属性信息,可以方便地实现在以下question提供的解决方案。它为我工作得很好。

希望这有助于


编辑与改善

从你有一些属性avaialble MS文档站立,看SPUSer Members。例如,您还没有phone

若要从活动目录得到的东西尝试更改下面的函数,以便它返回你所需要的属性(视窗2K8服务器上测试):

 
function Get-AD-Data { 
    $strFilter = "(&(objectCategory=User))" 
    $objDomain = New-Object System.DirectoryServices.DirectoryEntry 
    $objSearcher = New-Object System.DirectoryServices.DirectorySearcher 
    $objSearcher.SearchRoot = $objDomain 
    $objSearcher.PageSize = 1000 
    $objSearcher.Filter = $strFilter 
    $objSearcher.SearchScope = "Subtree" 
    $objSearcher.FindAll() | select @{L="User";E={$_.properties.displayname}}, 
    @{L="Department";E={$_.properties.department}}, 
    @{L="MemberOf";E={$_.properties.memberof}}  
} 

该函数返回的所有用户从AD与沿选定的属性。从一个特定的用户获取信息你可以使用(我猜):

 
$ad_userdetails = Get-AD-Data | ? {$_.user -eq $siteAdmin.Name} 

干杯

+0

真好! tnx!那电话怎么样? – alex 2011-05-03 16:26:06

+0

如果您要使用活动目录,则必须在AD中搜索属性。查看上面提供的链接,了解如何获取您的AD属性名称。 – 2011-05-03 16:49:28