我正在使用此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()
我希望它会打印网站所有者的一些详细信息,如电话号码和电子邮件。我怎样才能做到这一点?
答案 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}
干杯