Get-ADComputer показва компютърна информация в Active Directory чрез PowerShell

PowerShell командлет Get-ADComputer може да се използва за получаване на различна информация за компютърни акаунти (сървъри и работни станции) в домейн на Active Directory. Това е един от най-полезните командлети за избор и търсене на компютри по различни критерии в AD домейна (за да получите информация за потребителските акаунти на AD, се използва друг командлет - Get-ADUser).

Съдържание:

  • Основен синтаксис и използване на Get-ADComputer Cmdlet
  • Примери за командлети Get-ADComputer

Да предположим, че вашата задача е да намерите в Active Directory всички неактивни компютри, които не са регистрирани в домейна повече от 120 дни и да блокирате акаунти на тези компютри.

Преди да започнете да използвате командлета Get-ADComputer, трябва да свържете модула Active Directory за Windows PowerShell.

Импорт-модул activedirectory

съвет. В PowerShell 3.0 (въведена в Windows Server 2012) и по-горе, този модул е ​​свързан по подразбиране, когато инсталирате Инструменти за отдалечено администриране на сървъра -> Инструменти за администриране на роли -> AD DS и AD LDS Инструменти -> Модул Active Directory за Windows PowerShell. За да използвате командлета Get-ADComputer в клиентски Windows 10.8.1 и Windows 7, трябва да изтеглите и инсталирате RSAT за вашата версия на ОС и да активирате AD-PowerShell модула от контролния панел или чрез командата:
Активиране-WindowsOptionsFeature -Online -FeatureName RSATClient-Roles-AD-Powershell

Основен синтаксис и използване на Get-ADComputer Cmdlet

Помощ за параметрите на командлета Get-ADComputer се извиква стандартно с помощта на Get-Help:

Get-Help Get-ADComputer

За да получите информация от AD, използвайки командлетите на модула AD for Powershell, не е необходимо да имате права на администратор на домейн, достатъчно е акаунтът, под който се изпълнява командлетът, да бъде включен в групата на потребителите на домейни (Автентифицирани потребители / Потребители на домейни).

За да получите информация за домейн акаунта на конкретен компютър или сървър, посочете името му като аргумент на параметъра -идентичност:

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-Member можете да получите списък на всички свойства на Компютърния клас в AD:

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