Weboldal keresés

Get-ADComputer: Keresse meg a számítógép tulajdonságait az Active Directoryban a PowerShell segítségével


A Get-ADComputer PowerShell-parancsmag segítségével különféle információkat szerezhet be az Active Directory-tartomány számítógépfiók-objektumairól (kiszolgálókról és munkaállomásokról). Ez az egyik leghasznosabb parancsmag az AD-számítógépek különféle kritériumok szerinti kereséséhez

Tegyük fel, hogy az Ön feladata az összes olyan inaktív számítógép megkeresése az Active Directoryban, amelyek több mint 120 napja nem regisztráltak egy tartományban, és tiltsa le ezeket a számítógépfiókokat.

A Get-ADComputer parancsmag használata előtt telepítenie és importálnia kell a Windows PowerShell Active Directory modulját.

Import-Module activedirectory

Tipp. A PowerShell 3.0 (a Windows Server 2012 rendszerben bevezetett) vagy újabb verziójában ez a modul alapértelmezés szerint importálva van, ha a következő összetevő telepítve van: Távoli kiszolgálófelügyeleti eszközök -> Szerepkör-felügyeleti eszközök -> AD DS és AD LDS eszközök -> Active Directory modul a Windows PowerShellhez. A Get-ADComputer parancsmag asztali klienseken (Windows 11 vagy 11) való használatához le kell töltenie és telepítenie kell az RSAT-t, és engedélyeznie kell az AD-Powershell modult a Vezérlőpultról vagy a következő paranccsal:

Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell

Sorolja fel a számítógépobjektum tulajdonságait a Get-ADComputer segítségével

A Get-ADComputer parancsmag paramétereihez a szokásos módon a Get-Help paranccsal kaphat segítséget:

Get-Help Get-ADComputer

Ha az AD for PowerShell-modulból származó parancsmagokkal szeretne információkat kapni az AD-től, nem kell rendelkeznie a tartományi rendszergazdai jogosultságokkal. Elegendő egy normál felhasználói fiók használata, amely tagja a Domain-felhasználók vagy a Authenticated Users csoportnak.

Ha információt szeretne kapni egy adott számítógépfiókról a tartományban, adja meg a nevét az -Identity paraméter argumentumaként:

Get-ADComputer -Identity SRV-DB01

DistinguishedName : CN=SRV-DB01,OU=Servers,OU=London,OU=UK,DC=a-d,DC=com
DNSHostName       : SRV-DB01.a-d.site
Enabled           : True
Name              : SRV-DB01
ObjectClass       : computer
ObjectGUID        : 87654321-1234-5678-0000-123412341234
SamAccountName    : SRV-DB01$
SID               : S-1-5-21-123456780-1234567890-0987654321-1234
UserPrincipalName :

A Get-ADComputer parancsmag csak a Computer objektum alapvető tulajdonságait adta vissza az AD-ből. Érdekel bennünket az utolsó számítógép regisztráció ideje az AD tartományban, de ez az információ nem jelenik meg a fenti parancs kimenetében. Felsorolhatja ennek a számítógépes objektumnak az összes elérhető tulajdonságát az Active Directoryból:

Get-ADComputer -Identity SRV-DB01 -Properties *

A számítógép-attribútumok listája az Active Directory felhasználók és számítógépek konzolján (dsa.msc) is elérhető az Attribútumszerkesztő lapon.

A Get-Member használatával listát kaphat az AD Computer osztály összes tulajdonságáról

Get-ADComputer -Filter * -Properties * | Get-Member

Amint láthatja, ennek a számítógépnek a hálózatba való utolsó bejelentkezési idejét a számítógép LastLogonDate - 2022.06.02. 3:53:50 attribútuma határozza meg.

A Get-ADComputer parancsmag lehetővé teszi a számítógép bármely tulajdonságának megjelenítését a parancseredmények között. Távolítson el minden felesleges információt, és csak a Name és a LastLogonDate attribútumok értékeit hagyja meg a kimenetben.

Get-ADComputer -identity SRV-DB01 -Properties * | FT Name, LastLogonDate -Autosize

Így egyetlen számítógépre vonatkozóan kaptunk adatokat a domain utolsó regisztrációjának időpontjáról. Ezután módosítania kell a parancsot, hogy a tartományban lévő összes számítógépen megjelenítse az utolsó hálózati regisztráció idejére vonatkozó információkat. Ehhez cserélje ki az -Identity kifejezést a -Szűrő * kifejezésre:

Get-ADComputer -Filter * -Properties * | FT Name, LastLogonDate -Autosize

Kaptunk egy egyszerű táblázatot, amely csak 2 mezőt tartalmaz: a számítógép nevét és a LastLogonData dátumát. Ehhez a táblázathoz hozzáadhatja a Computer objektum egyéb mezőit az AD-ből.

Egy adott szervezeti egység (OU) számítógépes objektumaira vonatkozó információk megjelenítéséhez használja a -SearchBase paramétert:

Get-ADComputer -SearchBase ‘OU=Paris,DC=a-d,DC=loc’ -Filter * -Properties * | FT Name, LastLogonDate -Autosize

Rendezze a lekérdezés eredményeit az utolsó bejelentkezés dátuma szerint a Rendezésparancsmag segítségével:

Get-ADComputer -Filter * -Properties * | Sort LastLogonDate | FT Name, LastLogonDate -Autosize

Tehát megkaptuk a tartományi számítógépek listáját és azt a dátumot, amikor utoljára bejelentkeztek az Active Directory hálózatba. Most szeretnénk letiltani azokat a számítógépes fiókokat, amelyeket több mint 20 napja nem használtak.

A Get-Date használatával megkaphatjuk az aktuális dátum értékét a változóban, és csökkenthetjük azt 120 napra:

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

Az eredményül kapott dátumváltozó használható a Get-ADComputer lekérdezés szűrőjeként a LastLogonDate mezőben:

Get-ADComputer -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset } | Sort LastLogonDate | FT Name, LastLogonDate -Autosize

Így kaptunk egy listát azokról az inaktív számítógépes fiókokról, amelyeket több mint 120 napja nem regisztráltak a tartományi hálózaton. Használja a Disable-ADAccount vagy a Set-ADComputer parancsot a fiókok letiltásához.

Tipp. Az első alkalommal jobb, ha a parancs eredményét teszteli a -WhatIf kapcsolóval, amely lehetővé teszi, hogy megnézze, mi történik, ha a parancsot az AD-objektumok módosítása nélkül futtatják.

Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false -whatif

Most már letilthatja az összes inaktív számítógépfiókot:

Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $datecutoff} | Set-ADComputer -Enabled $false

Megjegyzés. Ezenkívül a Search-ADAccount parancsmag segítségével lekérheti a letiltott, letiltott és inaktív számítógépek és tartományfelhasználók listáját.

Keresési szűrők használata a Get-ADComputerrel

A Get-ADComputer parancsmag -Filter argumentumával több Active Directory-számítógépet kereshet meghatározott feltételek alapján. Itt helyettesítő karaktereket és logikai összehasonlító operátorokat használhat. Csak alapvető számítógépes objektum attribútumok használhatók szűrőként.

Ha keresési szűrőket kell használnia kiterjesztett számítógép-attribútumokon, akkor azokat a Where-Object cső segítségével adhatja meg. A cikk következő részében számos példa található.

Az alábbiakban néhány hasznosabb példa található a Get-ADComputer parancsmag használatával a tartomány számítógépes objektumaiban meghatározott feltételek alapján történő lekérdezéshez és kereséshez.

Az Active Directoryban található összes aktív (feloldott) számítógép teljes számának lekérése:

(Get-ADComputer -Filter {enabled -eq "true"}).count

Több szűrő használatával egyszerre több paraméter alapján kereshet számítógépeket. Ehhez használjon PowerShell logikai összehasonlító operátorokat (-and, -eq, -ne , -gt , -ge , -lt , -le , -like , -notlike , -and , -or , stb.).

Számolja meg az AD tartományban lévő Windows Server gazdagépek számát:

(Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows Server*' }).count

Szerezze meg az adott szervezeti egységben található számítógépek listáját, amelyek neve LonPC-vel kezdődik:

Get-ADComputer -Filter {Name -like "LonPC*"} -SearchBase ‘OU=London,DC=a-d,DC=com’  -Properties IPv4Address | Format-table Name,DNSHostName,IPv4Address | ft -Wrap -Auto

Ha az OU-ban keres, használhatja a -SearchScope 1 kiegészítő paramétert, ami azt jelenti, hogy csak a gyökér szervezeti egységben kell keresnie. A -SearchScope 2 opció a számítógépek rekurzív keresését jelenti az összes beágyazott szervezeti egységben.

A Windows 10 rendszert futtató munkaállomások megkeresése:

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

Szerezze meg a tartományban található kiszolgálók listáját az operációs rendszer verziójával, a szervizcsomaggal. és IP cím:

Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' -Properties  Name,Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack,IPv4Address | Sort-Object -Property Operatingsystem | Select-Object -Property Name,Operatingsystem, OperatingSystemVersion, OperatingSystemServicePack, IPv4Address| ft -Wrap -Auto

A kimenet egy ilyen tiszta táblázat volt a Windows Server listájával az AD-ben:

Az Active Directory ingázók lekérdezése a Get-ADComputer segítségével: Példák

Az alábbiakban néhány hasznosabb példa található a Get-ADComputer parancsmag használatával a tartomány számítógépeinek bizonyos kritériumok alapján történő kiválasztására.

Az -LDAPFilter attribútum lehetővé teszi különböző LDAP-lekérdezések használatát a Get-ADComputer parancsmag paramétereként, például:

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

Az összes letiltott számítógép-objektum megkeresése egy adott Active Directory szervezeti egységben:

Get-ADComputer -filter * -SearchBase ‘OU=Computers,OU=London,DC=a-d,dc=com’ | Where-Object {$_.enabled -eq $False}

Az összes olyan számítógépes fiók törléséhez, amely több mint 6 hónapja nem jelentkezett be a tartományba, használja a következő parancsot:

Get-ADComputer -properties lastLogonDate -filter * | where { $_.lastLogonDate -lt (get-date).addmonths(-6) } | Remove-ADComputer

Jelenítse meg a számítógép jelszavának legutóbbi módosításának időpontját az Active Directoryban. Alapértelmezés szerint a jelszót a számítógépnek 30 naponként automatikusan meg kell változtatnia. Ha a számítógép jelszava nem egyezik az AD jelszavával, a számítógép és a tartomány közötti bizalmi kapcsolat megszakad:

Get-ADComputer -Identity MUNPC321 -Properties PasswordLastSet

A Get-ADComputer parancs eredménye egyszerű szöveges fájlba exportálható:

Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server 2016*' } -Properties OperatingSystem | Select DNSHostName, OperatingSystem | Format-Table -AutoSize C:\Script\server_system.txt

Ezenkívül beszerezheti a számítógépek listáját, és exportálhatja CSV-fájlba:

Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem,OperatingSystemServicePack | Export-CSV All-Windows.csv -NoTypeInformation -Encoding UTF8

Vagy kérjen egy HTML-jelentést a számítógépek listájával és a szükséges tulajdonságokkal:

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

Távolról lekérdezhet AD-számítógépeket WMI-n vagy CIM-en keresztül. Például a tartományban lévő összes szerver sorozatszámának megjelenítéséhez:

Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' | Select-Object Name | Foreach-Object {Get-CimInstance Win32_Bios -ComputerName $_.Name -ErrorAction SilentlyContinue | Select-Object PSComputerName,SerialNumber}

Ha egy adott műveletet szeretne végrehajtani az eredményül kapott listán szereplő összes számítógépen, a Foreach hurkot kell használnia. Ebben a példában szeretnénk lekérni a tartományban található Windows Server-állomások listáját modellel és gyártóval.

$Computers = Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*'}
Foreach ($Computer in $Computers)
{
$Hostname = $Computer.Name
$ComputerInfo = (Get-WmiObject -Computername $Hostname Win32_ComputerSystem)
$Manufacturer = $Computer.Manufacturer
$Model = $Computer.Model
Write-Host "Name: $Hostname"
Write-Host "Manufacturer: $Manufacturer"
Write-Host "Model: $Model"
Write-Host " "
$Content = "$Hostname;$Manufacturer;$Model"
Add-Content -Value $Content -Path "C:\PS\ServersInfo.txt"
}

Használhat rövidebb ciklusszintaxist. Tegyük fel, hogy egy adott parancsot kell futtatnia egy adott szervezeti egység összes számítógépén. Ebben a példában az Invoke-Command parancsot fogom használni egy csoportházirend-frissítési parancs futtatásához az összes kiszolgálón:

get-adcomputer -SearchBase "OU=Servers,DC=a-d,DC=com" -Filter * | %{ Invoke-Command -Computer $_.Name -ScriptBlock {gpupdate /force} }

Ugyanígy különféle hasznos információkat kaphat a tartomány összes számítógépéről:

  • Ellenőrizze a Windows aktiválási állapotát a tartományi számítógépeken

  • Ellenőrizze a szabad lemezterületet

  • Ellenőrizze és frissítse a PowerShell verzióját

  • Gyűjtse össze a hálózati konfigurációkat az összes számítógépről

  • Az aktuális bejelentkezett felhasználónevek lekérése

A Get-ADComputer és a PowerShell indítási parancsfájlok segítségével különféle számítógépbeállításokat vezérelhet, vagy különféle hasznos információkat tárolhat az AD számítógép attribútumaiban (például hozzáadhat egy felhasználónevet a számítógép leírásához).

Például figyelem az SCCM ügynök állapotát a felhasználók számítógépein. Amikor minden számítógép elindul, lefuttat egy kis bejelentkezési szkriptet, amely elmenti a ccmexec szolgáltatás állapotát egy nem használt számítógépattribútumba - extensionAttribute10. Ezután a következő paranccsal megkereshetem azokat a számítógépeket, amelyeken hiányzik vagy nem fut a CCMExec szolgáltatás.

get-adcomputer -filter {extensionAttribute10 -ne "SCCM Agent:Running"} -SearchBase “OU=Compters,OU=London,DC=a-d,DC=com” -properties dNSHostName,extensionAttribute10,LastLogonDate  |select-object dNSHostName,extensionAttribute10,LastLogonDate

Az Active Directory felhasználói fiókjaira vonatkozó információkat a Get-ADUser parancsmag segítségével szerezheti be.

Kapcsolódó cikkek