У меня есть программа, которая выбирает, к каким компьютерам подключаться, на основе текстового документа. В списке должны быть только имена компьютеров, по 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 однострочные примеры ниже, вы можете изменить и протестировать его фильтрующую часть в соответствии с вашими потребностями для того, что вы запрашиваете из 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