PowerShell командлет Get-ADComputer може да се използва за получаване на различна информация за компютърни акаунти (сървъри и работни станции) в домейн на Active Directory. Това е един от най-полезните командлети за избор и търсене на компютри по различни критерии в AD домейна (за да получите информация за потребителските акаунти на AD, се използва друг командлет - Get-ADUser).
Съдържание:
- Основен синтаксис и използване на Get-ADComputer Cmdlet
- Примери за командлети Get-ADComputer
Да предположим, че вашата задача е да намерите в Active Directory всички неактивни компютри, които не са регистрирани в домейна повече от 120 дни и да блокирате акаунти на тези компютри.
Преди да започнете да използвате командлета Get-ADComputer, трябва да свържете модула Active Directory за Windows PowerShell.
Импорт-модул activedirectory
Активиране-WindowsOptionsFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
Основен синтаксис и използване на Get-ADComputer Cmdlet
Помощ за параметрите на командлета Get-ADComputer се извиква стандартно с помощта на Get-Help:
Get-Help Get-ADComputer
За да получите информация за домейн акаунта на конкретен компютър или сървър, посочете името му като аргумент на параметъра -идентичност:
Get-ADComputer -Идентичност SRV-DB01
DistinguishedName: CN = DB01, OU = сървъри, OU = MSK, DC = winitpro, DC = bg DNSHostName: DB01.winitpro.ru Активиран: Вярно име: DB01 ObjectClass: компютър ObjectGUID: 1234567c-13f8-4a2c-8b00-b30a32324103 SamAcc DB01 $ SID: S-1-5-21-3243682314-1360322815-2238451561-4318 UserPrincipalName:
Командлетът връща само основните свойства на обекта Computer от AD. Интересуваме се от времето на последната регистрация на компютър в домейна AD, но тази информация не е в изхода на командата. Списък на всички налични свойства на този компютър от Active Directory:
Get-ADComputer -Идентичност SRV-DB01 -Properties *
Get-ADComputer -Filter * -Properties * | Get-държава
Както можете да видите, времето, когато компютърът е бил влязъл последно в мрежата, е посочен в компютърния атрибут LastLogonDate - 21.09.2015 12:20:17.
Командлерът Get-ADComputer ви позволява да покажете някое от компютърните свойства в резултатите от командите. Премахваме цялата ненужна информация, оставяйки само стойностите на полето в изхода име и LastLogonDate.
Get-ADComputer -identity SRV-DB01 -Properties * | Име на FT, LastLogonDate -Autosize
И така, получихме данните за последния път на регистрация в домейна за един компютър. Сега трябва да променим командата, така че тя да връща информация за времето на последната регистрация в мрежата за всички компютри в домейна. За да направите това, заменете параметъра -идентичност за -филтър:
Get-ADComputer -Filter * -Properties * | Име на FT, LastLogonDate -Autosize
Получихме таблица, която съдържа само 2 полета: име на компютъра и дата LastLogonData. Можете да добавите други полета на обекта Computer от AD към тази таблица. За да покажете информация за компютрите в контейнер за определен домейн (OU), използвайте параметъра SearchBase:Get-ADComputer -SearchBase 'OU = Москва, DC = winitpro, DC = loc' -Filter * -Properties * | Име на FT, LastLogonDate -Autosize
Сортираме резултатите от заявката по времето на последното влизане в мрежата (поле LastLogonDate), използвайки командата вид:
Get-ADComputer -Filter * -Properties * | Сортиране на LastLogonDate | Име на FT, LastLogonDate -Autosize
И така, получихме списък на компютри с домейни и времето на последното им влизане в мрежата на Active Directory. Сега искаме да блокираме компютърни акаунти, които не се използват повече от 120 дни.
С помощта на Get-Date получаваме текущата дата в променливата и изваждаме 120 дни от текущата дата:
$ date_with_offset = (Дата на получаване) .AddDays (-120)
Получената променлива с дата може да се използва като филтър за Get-ADComputer заявка от полето LastLogonDate
Get-ADComputer -Properties LastLogonDate -Filter LastLogonDate -lt $ date_with_offset | Сортиране на LastLogonDate | Име на FT, LastLogonDate -Autosize
Така получихме списък на неактивни компютри, които не бяха регистрирани в мрежата повече от 120 дни. Използване на командлета Set-ADComputer или Disable-ADAccount можете да деактивирате тези акаунти.
съвет. За първи път е по-добре да тествате резултатите от командата с превключвателя -WhatIf, благодарение на които екипът не прави никакви промени, показвайки какво ще се случи при изпълнение.
Get-ADComputer -Properties LastLogonDate -Filter LastLogonData -lt $ date_with_offset | Set-ADComputer -Enabled $ false -whatif
Сега можете да блокирате всички получени компютърни акаунти:
Get-ADComputer -Properties LastLogonDate -Filter LastLogonData -lt $ datecutoff | Set-ADComputer -Enabled $ false
съвет. Списъкът с блокирани, прекъснати и неактивни компютри и потребители на домейн също може да бъде получен чрез отделния командлет Search-ADAccount..
Примери за командлети Get-ADComputer
По-долу са някои по-полезни примери за команди, използващи командлета Get-ADComputer, който можете да използвате за избор и търсене на компютри в домейн за определени критерии.
Вземете общия брой активни (отключени) компютри в Active Directory:
(Get-ADComputer -Filter enable -eq "true")
Прочетете броя на сървърите на Windows Server в домейна:
(Get-ADComputer -Filter активиран -eq "true" -и OperatingSystem -подобен '* Windows Server *').
Вземете списък на компютрите в определен ОУ, чиито имена започват с BuhPC:
Get-ADComputer -Filter Име -подобно "BuhPC *" -SearchBase 'OU = Москва, DC = winitpro, DC = loc' -Операции IPv4Address | Име на таблицата за формати, DNSHostName, IPv4Address | фута -Wrap -Auto
Когато търсите чрез OU, можете да използвате допълнителен параметър -SearchScope 1, което означава, че трябва да търсите само в главния дял. параметър -SearchScope 2 означава рекурсивно търсене на компютри във всички вложени OU.
Изберете всички работни станции, работещи под Windows 10:
Get-ADComputer -Filter OperatingSystem -подобен '* Windows 10 *'
Вземете списък със сървъри в домейн с инсталирана версия на OS, IP адрес и Service Pack:Get-ADComputer -Filter 'оперираща система -подобен "* Windows сървър *" -и активиран -eq "true"' -Имене на свойства, Операционна система, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address | Сортирай-Обект-Операционна система за собственост | Select-Object -Име на собственост, Операционна система, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address | фута -Wrap -Auto
Резултатът беше толкова красива таблица със списък на Windows Server в AD.
Атрибутът -LDAPFilter ви позволява да използвате различни LDAP заявки като параметър на командлета Get-ADComputer, например:
Get-ADComputer -LDAPFilter "(име = * db *)" | ft
Изберете заключени компютри в конкретен OU:
Get-ADComputer -filter * -SearchBase 'OU = Компютри, dc = winitpro, dc = loc' | Къде-обект $ _. Активиран -eq $ False
За да изтриете всички компютърни акаунти в домейн, които не са влизали в домейна повече от 6 месеца, можете да използвате командата:
get-adcomputer -properties lastLogonDate -filter * | където $ _. lastLogonDate -lt (get-date) .addmonths (-6) | Remove-ADComputer
Резултатът от командата Get-ADComputer може да бъде изтеглен в текстов файл:
Get-ADComputer -Filter OperatingSystem -Like '* Windows Server 2008 *' -Properties OperatingSystem | Изберете DNSHostName, OperatingSystem | Format-Table -AutoSize C: \ Script \ server_system.txt
Можете също да получите избор на компютри и да го експортирате в CSV файл:
Get-ADComputer -Filter * -Property * | Select-Object Name, OperatingSystem, OperatingSystemServicePack | Export-CSV All-Windows.csv -NoTypeInformation -Енкодиране UTF8
Или вземете HTML отчет с списък на компютрите и необходимите компютърни атрибути:
Get-ADComputer -Filter OperatingSystem -Like '* Windows Server 2012 *' -Properties * | Select-Object Name, OperatingSystem | ConvertTo-Html | Изходен файл C: \ ps \ ad_computer.html
За да извършите конкретно действие с всички компютри от списъка, трябва да използвате контура Foreach. В този пример искаме да получим списък на сървърите в домейна с модела и производителя:
$ Computers = Get-ADComputer -Filter OperatingSystem -подобен '* Windows Server *'
Foreach ($ Компютър в $ Компютри)
$ Hostname = $ Computer.Name
$ ComputerInfo = (Get-WmiObject -име_на_компютъра $ Hostname Win32_ComputerSystem)
$ Производител = $ Computer.Manufacturer
$ Model = $ Computer.Model
Напишете хост „Име: $ име на хост“
Напишете-домакин "Производител: $ Производител"
Хост за запис "Модел: $ Модел"
Напишете-домакин ""
$ Content = "$ име на хост; $ производител; $ модел"
Добавете съдържание -стойност $ Съдържание -път "C: \ PS \ ServersInfo.txt"
Или можете да използвате синтаксис с по-къс контур. Да предположим, че трябва да изпълним конкретна команда на всички компютри в определен OU (в този пример искаме да изпълним командата за актуализиране на настройките на груповата политика на всички сървъри):
get-adcomputer -SearchBase "OU = сървъри, DC = winitpro, DC = loc" -Filter * | % Invoke-Command -компютър $ _. Име -ScriptBlock gpupdate / force
С помощта на Get-AdComputer и влизане на скрипт PowerShell можете да контролирате различни компютърни настройки. Например, наблюдавам състоянието на SCCM агента на компютрите на потребителите. Когато всеки компютър се стартира, той изпълнява скрипт за влизане, който, използвайки Set-ADComputer, записва състоянието на услугата ccmexec до безплатен компютърен атрибут - extensionAttribute10.
След това, използвайки следната команда, мога да намеря компютри, на които услугата CCMExec липсва или не работи:
get-adcomputer -filter extensionAttribute10 -ne "SCCM агент: работи" -SearchBase "OU = компютри, OU = MSK, DC = winitpro, DC = en" -properties dNSHostName, extensionAttribute10, LastLogonDate | select-object dNSHostName, extensionAttribute LastLogonDate