![导出 AD 中多个 OU 中所有计算机的简单列表](https://linux22.com/image/669869/%E5%AF%BC%E5%87%BA%20AD%20%E4%B8%AD%E5%A4%9A%E4%B8%AA%20OU%20%E4%B8%AD%E6%89%80%E6%9C%89%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E7%AE%80%E5%8D%95%E5%88%97%E8%A1%A8%20.png)
我有一个程序,可以根据文本文档选择要连接的计算机。列表只需要包含计算机名称,每行 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