Get-ADComputer zobrazuje informace o počítači ve službě Active Directory pomocí prostředí PowerShell

Rutina PowerShell Get-adcomputer lze použít k získání různých informací o počítačových účtech (serverech a pracovních stanicích) v doméně služby Active Directory. Toto je jeden z nejužitečnějších rutin pro výběr a prohledávání počítačů podle různých kritérií v doméně AD (pro získání informací o uživatelských účtech AD se používá další rutina - Get-ADUser).

Obsah:

  • Základní syntaxe a použití Get-ADComputer Cmdlet
  • Příklady cmdletů Get-ADComputer

Předpokládejme, že vaším úkolem je najít ve službě Active Directory všechny neaktivní počítače, které nebyly zaregistrovány v doméně déle než 120 dnů, a zablokovat účty těchto počítačů.

Než začnete používat rutinu Get-ADComputer, musíte připojit modul Active Directory pro Windows PowerShell.

Adresář importního modulu

Tip. Ve verzi PowerShell 3.0 (představené v systému Windows Server 2012) a výše je tento modul ve výchozím nastavení připojen při instalaci nástrojů pro správu vzdáleného serveru -> Nástroje pro správu rolí -> Nástroje AD DS a AD LDS -> modul Active Directory pro Windows PowerShell. Chcete-li použít rutinu Get-ADComputer v klientech Windows 10.8.1 a Windows 7, musíte si stáhnout a nainstalovat RSAT pro vaši verzi operačního systému a povolit modul AD-PowerShell z ovládacího panelu nebo příkazem:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Role-AD-Powershell

Základní syntaxe a použití Get-ADComputer Cmdlet

Nápověda týkající se parametrů rutiny Get-ADComputer je vyvolána standardně pomocí nápovědy:

Get-Help Get-ADComputer

Chcete-li získat informace z AD pomocí rutin cm modulu AD pro Powershell, není nutné mít práva správce domény, stačí, že účet, pod kterým je rutina spuštěna, je zahrnut do skupiny uživatelů domény (Authenticated Users / Domain Users).

Chcete-li získat informace o účtu domény konkrétního počítače nebo serveru, zadejte jeho název jako argument parametru -Identita:

Get-ADComputer -Identity SRV-DB01

Rozlišující název: CN = DB01, OU = Servery, OU = MSK, DC = winitpro, DC = cs DNSHostName: DB01.winitpro.ru Povoleno: True Name: DB01 ObjectClass: computer ObjectGUID: 1234567c-13f8-4a2c-8b00-b30a32324103 SamAccountName: DB01 $ SID: S-1-5-21-3243682314-1360322815-2238451561-4318 UserPrincipalName: 

Rutina vrátila z AD pouze základní vlastnosti objektu Computer. Zajímá nás čas poslední registrace počítače v doméně AD, ale tato informace není ve výstupu příkazu. Seznam všech dostupných vlastností tohoto počítače ze služby Active Directory:

Get-ADComputer -Identity SRV-DB01 -Properties *

Pomocí funkce Get-Member můžete získat seznam všech vlastností třídy Computer v AD:

Get-ADComputer -Filter * -Properties * | Získejte člena

Jak vidíte, čas posledního přihlášení počítače k ​​síti je uveden v atributu počítače LastLogonDate - 21.9.2015 12:20:17.

Rutina Get-ADComputer umožňuje zobrazit všechny vlastnosti počítače ve výsledcích příkazu. Odebereme všechny nepotřebné informace a na výstupu ponecháme pouze hodnoty polí Jméno a LastLogonDate.

Get-ADComputer -identity SRV-DB01 -Vlastnosti * | Název FT, LastLogonDate -Autosize

Získali jsme tedy údaje o poslední době registrace v doméně pro jeden počítač. Nyní musíme změnit příkaz tak, aby vrátil informace o době poslední registrace v síti pro všechny počítače v doméně. Za tímto účelem vyměňte parametr -Identita dál -Filtr:

Get-ADComputer -Filter * -Properties * | Název FT, LastLogonDate -Autosize

Dostali jsme tabulku, která obsahuje pouze 2 pole: jméno a datum počítače LastLogonData. Do této tabulky můžete přidat další pole objektu Computer z AD. Chcete-li zobrazit informace o počítačích v kontejneru konkrétní domény (OU), použijte parametr SearchBase:
Get-ADComputer -SearchBase 'OU = Moskva, DC = winitpro, DC = loc' -Filter * -Properties * | Název FT, LastLogonDate -Autosize

Výsledky dotazu seřadí podle času posledního přihlášení do sítě (pole LastLogonDate) pomocí příkazu Seřadit:

Get-ADComputer -Filter * -Properties * | Seřadit LastLogonDate | Název FT, LastLogonDate -Autosize

Dostali jsme tedy seznam doménových počítačů a čas jejich posledního vstupu do sítě Active Directory. Nyní chceme blokovat počítačové účty, které nebyly používány déle než 120 dní.

Pomocí funkce Get-Date získáme aktuální proměnné a odečteme 120 dní od aktuálního data:

$ date_with_offset = (Get-Date) .AddDays (-120)

Získaná proměnná s datem může být použita jako filtr pro požadavek Get-ADComputer podle pole LastLogonDate

Get-ADComputer -Properties LastLogonDate -Filter LastLogonDate -lt $ date_with_offset | Seřadit LastLogonDate | Název FT, LastLogonDate -Autosize

Dostali jsme tedy seznam neaktivních počítačů, které nebyly zaregistrovány v síti déle než 120 dnů. Použití rutiny Set-adcomputer nebo Zakázat-ADAccount, můžete tyto účty deaktivovat.

Tip. Poprvé je lepší vyzkoušet výsledky příkazu pomocí přepínače -Whatif, díky kterému tým neprovádí žádné změny, ukazuje, co se stane, když bude proveden.

Get-ADComputer -Properties LastLogonDate -Filter LastLogonData -lt $ date_with_offset | Set-ADComputer - Povoleno $ false - whatif

Nyní můžete zablokovat všechny přijaté účty počítače:

Get-ADComputer -Properties LastLogonDate -Filter LastLogonData -lt $ datecutoff | Set-ADComputer - Povoleno $ false

Tip. Seznam blokovaných, odpojených a neaktivních uživatelů počítačů a domén lze také získat pomocí samostatné rutiny Search-ADAccount..

Příklady cmdletů Get-ADComputer

Níže uvádíme několik užitečnějších příkladů příkazů používajících rutinu Get-ADComputer, které můžete použít k výběru a vyhledávání doménových počítačů podle určitých kritérií.

Získejte celkový počet aktivních (odemčených) počítačů ve službě Active Directory:

(Get-ADComputer -Filter enabled -eq "true")

Přečtěte si počet serverů Windows Server v doméně:

(Get-ADComputer -Filter enabled -eq "true" - a OperatingSystem -Like '* Windows Server *').

Získejte seznam počítačů v konkrétním OU, jehož jména začínají na BuhPC:

Get-ADComputer -Filter Name-like "BuhPC *" -SearchBase 'OU = Moscow, DC = winitpro, DC = loc' -Properties IPv4Address | Název tabulky formátu, DNSHostName, IPv4Address | ft-wrap-auto

Při vyhledávání podle OU můžete použít další parametr -SearchScope 1, což znamená, že musíte hledat pouze v kořenovém oddílu. Parametr -SearchScope 2 znamená rekurzivní vyhledávání počítačů ve všech vnořených organizačních jednotkách.

Vyberte všechny pracovní stanice se systémem Windows 10:

Get-ADComputer -Filter OperatingSystem-like '* Windows 10 *'

Získejte seznam serverů v doméně s nainstalovanou verzí OS, adresou IP a aktualizací Service Pack:
Get-ADComputer -Filter 'operatingsystem-like "* Windows server *" -a enabled -eq "true"' -Properties Name, Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address | Sort-Object -Property Operatingsystem | Select-Object -Property Name, Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address | ft-wrap-auto

Výstupem byla taková krásná tabulka se seznamem Windows Server v AD.

Atribut -LDAPFilter vám umožňuje použít různé dotazy LDAP jako parametr cmdlet Get-ADComputer, například:

Get-ADComputer -LDAPFilter "(name = * db *)" | ft

Vyberte uzamčené počítače v konkrétní OU:

Get-ADComputer -filter * -SearchBase 'OU = Počítače, dc = winitpro, dc = loc' | Where-Object $ _. Enabled -eq $ False

Chcete-li odstranit všechny účty počítače v doméně, které nebyly přihlášeny do domény déle než 6 měsíců, můžete použít příkaz:

get-adcomputer -properties lastLogonDate -filter * | kde $ _. lastLogonDate -lt (get-date) .addmonths (-6) | Remove-ADComputer

Výsledek příkazu Get-ADComputer lze stáhnout do textového souboru:

Get-ADComputer -Filter OperatingSystem -Like '* Windows Server 2008 *' -Properties OperatingSystem | Vyberte DNSHostName, OperatingSystem | Tabulka formátu -AutoSize C: \ Script \ server_system.txt

Můžete také získat výběr počítačů a exportovat je do souboru CSV:

Get-ADComputer -Filter * -Property * | Název Select-Object, OperatingSystem, OperatingSystemServicePack | Exportovat CSV All-Windows.csv -NoTypeInformation -Encoding UTF8

Nebo získejte soubor sestavy HTML se seznamem počítačů a nezbytnými atributy počítače:

Get-ADComputer -Filter OperatingSystem -Like '* Windows Server 2012 *' -Properties * | Select-Object Name, OperatingSystem | ConvertTo-Html | Out-File C: \ ps \ ad_computer.html

Chcete-li provést konkrétní akci se všemi počítači ze seznamu, musíte použít smyčku Foreach. V tomto příkladu chceme získat seznam serverů v doméně s modelem a výrobcem:

$ Computers = Get-ADComputer -Filter OperatingSystem -Like '* Windows Server *'
Foreach ($ Computer in $ Computers)

$ Hostname = $ Computer.Name
$ ComputerInfo = (Get-WmiObject -Název_počítače $ Hostname Win32_ComputerSystem)
$ Výrobce = $ Počítač. Výrobce
$ Model = $ Computer.Model
Write-Host "Name: $ Hostname"
Write-Host "Výrobce: $ Výrobce"
Write-Host "Model: $ Model"
Write-Host ""
$ Content = "$ Hostname; $ Výrobce; $ Model"
Přidat obsah -Hodnota $ Obsah -Cesta "C: \ PS \ ServersInfo.txt"

Nebo můžete použít kratší syntaxi smyčky. Předpokládejme, že potřebujeme provést konkrétní příkaz na všech počítačích v určité OU (v tomto příkladu chceme spustit příkaz pro aktualizaci nastavení skupinových zásad na všech serverech):

get-adcomputer -SearchBase "OU = Servery, DC = winitpro, DC = loc" -Filter * | % Invoke-Command -Computer $ _. Name -ScriptBlock gpupdate / force

Pomocí programu Get-AdComputer a přihlašovacího skriptu PowerShell můžete ovládat různá nastavení počítače. Například monitoruji stav agenta SCCM v počítačích uživatelů. Po spuštění každého počítače se spustí přihlašovací skript, který pomocí Set-ADComputer uloží stav služby ccmexec do atributu volného počítače - extensionAttribute10.

Poté pomocí následujícího příkazu najdu počítače, na kterých služba CCMExec chybí nebo není spuštěna:

get-adcomputer -filter extensionAttribute10 -ne "Agent SCCM: Running" -SearchBase “OU = Computers, OU = MSK, DC = winitpro, DC = en” -properties dNSHostName, extensionAttribute10, LastLogonDate | select-object dNSHostName, extensionAttribute LastLogonDate