Назад | Перейти на главную страницу

Экспорт простого списка всех компьютеров в нескольких подразделениях в AD

У меня есть программа, которая выбирает, к каким компьютерам подключаться, на основе текстового документа. В списке должны быть только имена компьютеров, по 1 в каждой строке. Ничего больше.

Мне нужна команда или сценарий, который я могу запустить, чтобы произвести это. Я бы хотел запускать этот скрипт автоматически раз в неделю, чтобы обновлять список новыми компьютерами. Сервер работает под управлением Windows Server 2008 R2. У меня установлен Quest AD Module, я не нашел особой помощи с его использованием.

Любая помощь будет оценена по достоинству! Спасибо :)

Я думаю, что это правильно, внес некоторые изменения с компьютера, на котором у меня нет домена для тестирования.

# 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

POWERSHELL ПОЛУЧИТЬ СПИСОК ОБЪЕКТОВ ОБЪЯВЛЕНИЯ КОМПЬЮТЕРА ВЫВОД В ФАЙЛ

Посмотрите эти PowerShell однострочные примеры ниже, вы можете изменить и протестировать его фильтрующую часть в соответствии с вашими потребностями для того, что вы запрашиваете из AD Operating 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 из AD Users and Computers в конкретном OU, затем right-click и выберите Properties пока выбраны ВСЕ КОМПЬЮТЕРНЫЕ ОБЪЕКТЫ, а затем добавьте настраиваемую и уникальную строку, относящуюся к OU для Description значение (см. снимок экрана ниже). Затем вы можете уточнить фильтр поиска ниже, чтобы искать компьютеры AD с этим настраиваемым Description уникальное значение для каждого OU)

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

Я использую этот лайнер для экспорта активных компьютеров в 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, если он вам нужен как текстовый файл, и просто настройте сценарий для запуска как запланированной задачи.

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

Вы можете сделать это для компьютеров, созданных за последние 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