使用PowerShell从SharePoint获取用户详细信息

时间:2011-05-03 15:27:25

标签: sharepoint powershell sharepoint-2010

我正在使用此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()

我希望它会打印网站所有者的一些详细信息,如电话号码和电子邮件。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

我认为你有两个选择。访问SPUser属性或从活动目录中获取信息。

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

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

有关从Active Directory获取用户属性的信息,您可以轻松实现以下question中提供的解决方案。它对我来说很好。

希望这有帮助


改进编辑

站在MS文档中,您可以获得一些属性,请参阅SPUSer Members。例如,你没有phone

要从活动目录中获取内容,请尝试更改以下函数,以便返回所需的属性(在Windows 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}

干杯