导出 AD 中多个 OU 中所有计算机的简单列表

导出 AD 中多个 OU 中所有计算机的简单列表

我有一个程序,可以根据文本文档选择要连接的计算机。列表只需要包含计算机名称,每行 1 个。没有其他内容。

我需要一个可以运行的命令或脚本来产生这个结果。我想每周自动运行一次这个脚本来更新列表中的新计算机。服务器运行的是 Windows Server 2008 R2。我安装了 Quest AD 模块,但找不到太多关于如何使用它的帮助。

任何帮助都将不胜感激!谢谢 :)

答案1

我认为这是正确的,我在没有域名可以测试的计算机上做了一些更改。

# a PowerShell script, licensed under GPL ;)
#
# importing dependancy, assuming it's already installed.
# Install RSAT for Windows workstation, AD DS role for Windows Server if missing
Import-Module "ActiveDirectory"

# an array containing the OU paths we'll enumerate
$OUpaths = @("OU=Allocated,OU=Workstations,OU=WDS Org,DC=wds,DC=wdsgroup,DC=local","OU=Available,OU=Workstations,OU=WDS Org,DC=wds,DC=wdsgroup,DC=local")

# loop though the array of OUs, adding the computers to a list ('Object' really)
foreach ($iOUpath in $OUpaths)
    {
        ($objComputers += Get-ADComputer -SearchBase $iOUpath -Filter *)    #You might need to refine the query witha 'Filter' depending on your AD structure
    }

# dump the list to a file
$objComputers | Select name | Export-Csv -LiteralPath "C:\Temp\ComputerNames.txt" -NoTypeInformationA

答案2

POWERSHELL 获取 AD 计算机对象列表输出到文件

看看这些电源外壳下面的单行示例,您可以更改和测试它的过滤器部分,以满足您从 ADOperating System等属性中查询的需求。

确保在零件文件位置中更改输出文本文件的名称和需要将其输出到的位置Out-File C:\Test\Test.txt

用于非服务器列表

Get-ADComputer -Filter {OperatingSystem -NotLike "*Server*"} | Select -Expand Name | Out-File C:\Test\Test.txt

用于服务器列表

Get-ADComputer -Filter {OperatingSystem -Like "*Server*"} | Select -Expand Name | Out-File C:\Test\TestServers.txt

用于自定义描述列表

AD Users and Computers(您可以从特定 OU 中选择所有 AD 计算机对象,然后在选择所有计算机对象时right-click进行选择Properties,然后为该Description值添加与 OU 相关的自定义唯一字符串(参见下面的屏幕截图)。然后,您可以优化下面的搜索过滤器,以查找Description每个 OU 中具有此自定义唯一值的 AD 计算机)

Get-ADComputer -Filter {Description -Like "*CustomTestString*"} | Select -Expand Name | Out-File C:\Test\Custom.txt

在此处输入图片描述

答案3

我使用这个命令行来导出 AD 中的活动计算机:

Get-ADComputer -filter {Enabled -eq $True} -Properties cn -SearchBase "OU=servers,OU=computers,DC=example,DC=example" | select cn | ConvertTo-Csv -NoTypeInformation | Select-Object -skip 1 | Out-File d:\output.csv

如果您需要它作为文本文件,则可以使用.txt而不是.csv,并将脚本配置为作为计划任务运行。

希望这对你有帮助。

答案4

您可以对过去 7 天内创建的计算机执行如下操作:

$d=[DateTime]::Today.AddDays(-7)  

$comps=Get-ADComputer -filter { (whencreated -le $d) } -searchbase "OU=,OU= ,DC= ,DC= " -properties whencreated, Description

$comps | sort-object -Descending whencreated |ft Name  -A
write-host 'PCs=' $comps.Count

相关内容