如何一起列出所有AD用户和AD计算机?

时间:2017-02-03 05:11:08

标签: powershell

我正在尝试弄清楚如何使用PowerShell将所有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用户(上次登录用户)添加到此列表中?

2 个答案:

答案 0 :(得分: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 ,查看安全日志并查看该用户的登录位置。

但我认为不会以特定的方式捕获。他们可能会为所有用户使用通用的东西。 (我不确定你是否正在寻找映射,这就是为什么我写的)

希望它有所帮助。

答案 1 :(得分:0)

在您可以使用的服务器上找到最后登录的用户:

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

或者您可以使用powershell远程处理到目标服务器,您可以在该脚本块中输入:

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