2017-02-03 4 views
0

Я пытаюсь выяснить, как экспортировать всех пользователей AD с их именем в PowerShell.Как перечислить всех пользователей AD и компьютеров AD вместе?

Я могу напечатать:

Get-ADComputer -Filter * -Properties Name, ipv4address, OperatingSystem, OperatingSystemVersion -SearchBase "DC=my,DC=domain,DC=com" -Server "my.domain.com" | Format-Table Name, OperatingSystem, ipv4* 

В результате это даст мне все имена хостов, ОС и IP-адреса в моем домене.

Но как я могу добавить пользователей AD (последний зарегистрированный пользователь) в этот список?

ответ

0

Чтобы получить весь перечень пользователей присутствует в AD, вы можете использовать:

Get-ADUser -filter *

Для получения последнего входа в систему, вы можете использовать нижеуказанная функция:

Import-Module ActiveDirectory 

function Get-ADUserLastLogon([string]$userName) 
{ 
    $dcs = Get-ADDomainController -Filter {Name -like "*"} 
    $time = 0 
    foreach($dc in $dcs) 
    { 
    $hostname = $dc.HostName 
    $user = Get-ADUser $userName | Get-ADObject -Properties lastLogon 
    if($user.LastLogon -gt $time) 
    { 
     $time = $user.LastLogon 
    } 
    } 
    $dt = [DateTime]::FromFileTime($time) 
    Write-Host $username "last logged on at:" $dt } 

# Call the function with parameter 
Get-ADUserLastLogon -UserName TestUser01 

Примечание: для этого вы можете использовать различные фильтры.

Ссылка Ссылка: Technet

В вашем случае, я уже вижу вы выборки всех деталей, за исключением последнего входа в систему. Используйте вышеуказанную функцию, сохраните результат в arraylist и просто добавьте его в свой конечный объект. Это должно дать желаемый результат вместе с Get-AdComputer, который вы уже используете.

К сожалению, Active Directory не фиксирует информацию для каждого соответствующего имени хоста, сопоставленного с пользователем, зарегистрированным в системе. Пользователь может войти с любого из компьютеров, подключенных к домену.

Вы можете попробовать включить аудит безопасности затем к каждому DC в домене, посмотрите на журнал безопасности и посмотреть, где что пользователь вошел в систему с.

Но я не думаю, что это будет зафиксировано определенным образом. Они могут использовать что-то общее для всех пользователей. (Я не уверен, что вы ищете картографию и вот почему я написал)

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

0

найти последний вход в системе пользователя на сервере, вы можете использовать:

quser /server:$server | select -Last 1 | %{($_.trim() -split "\s+")[0]} 

или вы можете использовать Powershell Remoting с сервером назначения, в том ScriptBlock вы можете дать:

quser | select -Last 1 | %{($_.trim() -split "\s+")[0]}