Получите информацию о пользователе из SharePoint с PowerShell - PullRequest
3 голосов
/ 03 мая 2011

Я использую этот скрипт 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 Ответ

2 голосов
/ 03 мая 2011

У меня есть два варианта, я думаю. Откройте свойства SPUser или получите информацию из активного каталога.

В первом случае вы не можете получить доступ к свойствам, как вы сделали для DisplayName? Я имею в виду, если у вас есть объект SPUser для получения электронной почты, просто используйте:

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

Для получения информации о том, как получить пользовательские свойства из активного каталога, вы можете легко реализовать решение, представленное в следующем вопросе . У меня все работало нормально.

Надеюсь, это поможет


РЕДАКТИРОВАТЬ с улучшением

Из документации MS у вас есть несколько доступных свойств, см. Участники SPUSer . Например, у вас нет 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}

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...