Maak actieve directorycomputer rapporten met PowerShell

Maak Actieve Directory Computer Rapporten met PowerShell. Om alles te vinden met betrekking tot actieve directory (AD) computerobjecten en hun eigenschappen, zullen we voornamelijk de Get-ADComputer cmdlet gebruiken. Bijvoorbeeld, in een Actieve Directory domein, kunnen we de Get-ADComputer PowerShell cmdlet gebruiken om informatie te krijgen over computeraccountobjecten (servers en werkstations). Deze cmdlet is een van de meest nuttige voor het zoeken naar AD-computers op verschillende criteria.

Dit artikel bespreekt de vele toepassingen van de Get-ADComputer cmdlet en hoe we deze kunnen omzetten in een uitgebreid en waardevol rapport.

Laten we beginnen met het artikelblog Maak Actieve Directory Computer Rapporten met PowerShell.

Maak Active Directory-computerrapporten met Powershell

Vereisten

Als we de voorbeeldscripts in dit artikel willen volgen, zorg er dan voor dat je het volgende hebt:

Nou, hoe maak je Active Directory Computer Rapporten met PowerShell? Laten we erachter komen.

De Get-ADComputer Powershell-opdracht begrijpen

Voordat we beginnen, moeten we vertrouwd raken met de Get-ADComputer opdracht. We hebben geen domeinbeheerdersrechten nodig om informatie uit de Actieve Directory te halen. Het is voldoende om een gewoon gebruikersaccount te gebruiken dat lid is van de Domeingebruikers of Geverifieerde gebruikers groep.

Nou, het Get-Help commando, zoals gewoonlijk, geeft een lijst van alle andere parameters voor het Get-ADComputer cmdlet:

$command = Get-ADComputer
Get-Help $command

Voorbeelduitvoer:

Als alternatief kunnen we de officiële documentatie van het Get-ADComputer commando hier raadplegen.

Na het doorlopen van de lange lijst met parameters in onze opdrachtregel en documentatie, kunnen we beginnen met scripten. Onthoud, de belangrijkste parameter die bij het Get-ADComputer commando wordt gebruikt, is de Identity parameter.

Om informatie te verkrijgen over een specifieke computeraccount in het domein, gebruik de -Identity parameter met zijn naam als argument:

Get-ADComputer -Identity DC01

Hier is het voorbeelduitvoer:

DistinguishedName : CN=DC01,OU=Servers,OU=DC,OU=IT,DC=infrasos,DC=com
DNSHostName       : DC01.infrasos.com
Enabled           : True
Name              : DC01
ObjectClass       : computer
ObjectGUID        : 87654321-1204-5578-0000-123462341264
SamAccountName    : DC01
SID               : S-1-5-21-123656780-1234667890-0986654321-1264

Als resultaat gaf de Get-ADComputer cmdlet alleen de fundamentele eigenschappen van het Computerobject vanuit AD terug. Echter, het uitvoeren van het bovenstaande commando geeft alleen de toplevelinformatie over het computerobject. Als we dan dieper willen duiken en de beschikbare eigenschappen van het object willen weergeven, kunnen we de -Eigenschappen parameter gebruiken.

Om alle eigenschappen van het object op te sommen, voeg de -Eigenschappen parameter toe en voeg een waarde van een asterisk (*) toe. De asterisk waarde is de wildcard waarde die ALLE aangeeft:

Get-ADComputer -Identity DC01 -Properties *

Voorbeelduitvoer:

Aan de andere kant kunnen we binnen de Active Directory Gebruikers en Computers console (of dsa.msc) navigeren en daar de eigenschappen bekijken. Selecteer ten slotte een computerobject en navigeer naar het Eigenschappen-tabblad om de lijst met eigenschappen van het computerobject te bekijken.

Filteren van Get-ADComputer Resultaten

Een nadeel is dat we mogelijk meer informatie tonen over zaken die we niet per se nodig hebben. Met behulp van de PowerShell-pipeline, stelt het Get-ADComputer cmdlet ons in staat om specifieke computer eigenschappen weer te geven in de commandoregel. Bijvoorbeeld, we kunnen alleen waarden van Name en LastLogonDate eigenschappen in de output achterlaten door de Format-Table opdracht door te pijpen naar de hoofdsyntax:

Get-ADComputer -Identity DC01 -Properties * | Format-Table Name, LastLogonDate -Autosize

Voorbeeld output:

Hier berekent Windows PowerShell de kolombreedtes op basis van de werkelijke weergegeven data als we de AutoSize parameter specificeren wanneer we de Format-Table opdracht uitvoeren. Al met al maakt deze parameter de kolommen leesbaar.

Echter, de vorige opdracht zoekt alleen naar één AD-computerobject. Daarom, als we informatie wilden voor alle computers in het domein, kunnen we de Identiteit parameter vervangen door Filter:

Get-ADComputer -Filter * -Properties * | Format-Table Name, Created -Autosize

Zie het voorbeeld van de uitvoer:

We hebben een eenvoudig opgemaakt tabel met slechts twee velden: de computer naam en de datum van object aanmaak. We kunnen andere kolommen van het Computer object uit AD toevoegen aan deze tabel door eigenschappen toe te voegen in het Format-Table gedeelte van de pijplijn.

Kort gezegd, om informatie te verkrijgen over de computerobjecten in een bepaalde Organisatie-Eenheid (OU), kunnen we de –ZoekBasis parameter gebruiken:

Get-ADComputer -SearchBase ‘OU=IT,DC=infrasos,DC=com’ -Filter * -Properties * | Format-Table Name, Created -Autosize

Bovendien kunnen we ook de queryresultaten sorteren door de Sort-Object cmdlet in de pipeline:

Get-ADComputer -Filter * -Properties * | Sort-Object Created | Format-Table Name, Created -Autosize

In de bovenstaande opdracht worden de resultaten van de Sort-Object opdracht eerst gesorteerd op Get-ADComputer op basis van Created en vervolgens doorgegeven aan Format-Table voor weergave.

Het gebruik van zoekfilters met Get-ADComputer

We gebruiken de Get-ADComputer cmdlet’s -Filter argument om naar meerdere AD computers te zoeken op basis van specifieke criteria. Zoals vermeld, kunnen we in dit geval jokertekens en logische vergelijkingsoperatoren gebruiken. Zeker, als filters kunnen we alleen primaire computerobjectattributen gebruiken.

Evenzo gebruiken we de Where-Object pijp als we zoekfilters op uitgebreide computerkenmerken moeten gebruiken. Hier volgen praktischere voorbeelden van hoe u computerobjecten in het domein kunt opvragen en zoeken met behulp van de Get-ADComputer cmdlet.

Bereken het totale aantal actieve en niet geblokkeerde computers in Active Directory:

We zoeken naar computers met meerdere filters tegelijk. Gebruik PowerShell logische vergelijkingsoperatoren om dit te realiseren.

(Get-ADComputer -Filter {Enabled -eq "true"}).Count

Toon alle Windows Server-hosts in het AD-domein:

Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*' }

Haal een lijst op van alle computers in een specifieke OU wiens namen beginnen met DC:

Get-ADComputer -Filter {Name -like "DC*"} -SearchBase ‘OU=IT,DC=infrasos,DC=com’ -Properties * | Format-Table Name

Bij het zoeken in de OU, kunnen we de –SearchScope1 parameter gebruiken om onze zoekopdracht te beperken tot de hoofd-OU alleen. De -SearchScope2 optie voert een recursieve zoekopdracht uit naar computers in alle OUs.

Beheren van meerdere computers met Get-ADComputer

We moeten de Foreach-Object lus gebruiken om een specifieke actie uit te voeren op alle computers in de resulterende lijst. In dit voorbeeld kunnen we meerdere AD-computers op afstand opvragen met behulp van Windows Management Instrumentation of Common Information Classes:

Get-ADComputer -Filter * -Property * |
Select-Object Name,OperatingSystem |
Foreach-Object {
    Get-CimInstance Win32_Bios -ComputerName $_.Name -ErrorAction SilentlyContinue |
    Select-Object PSComputerName
}

Inderdaad, in dit voorbeeld, als we een lijst willen van Windows Server-hosts in het domein, samen met hun model en fabrikant, gebruiken we dezelfde lusmethode en halen we de computer eigenschappen op.

$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-Output "Name: $Hostname"
    Write-Output "Manufacturer: $Manufacturer"
    Write-Output "Model: $Model"
    Write-Output " "
}

Dus, de informatie die wordt opgehaald uit de bovenstaande voorbeelden is direct beschikbaar via de domein services, omdat deze computers deel uitmaken van AD. Er zijn echter niet alle computers die hun eigenschappen aan het domein aanbieden. Hoe kunnen we die ophalen?

Vervolgens maken we gebruik van de Invoke-CommandDaarom voert deze PowerShell-cmdlet lokale opdrachten uit op de externe computer. Stel bijvoorbeeld dat we een specifieke opdracht op alle computers in een bepaalde OU moeten uitvoeren. In dit voorbeeld gebruiken we de Invoke-Command om een groepsbeleid update-opdracht uit te voeren op alle servers:

Get-ADComputer -SearchBase "OU=DC,DC=infrasos,DC=com" -Filter * |
%{ Invoke-Command -Computer $_.Name -ScriptBlock { gpupdate /force } }

Genereer PowerShell AD-rapporten met Get-ADComputer

In Windows PowerShell exporteren we de uitvoer van onze opdrachten in meerdere rapportage formaten. Hier zijn enkele voorbeelden.

Eerst exporteren we het resultaat van de Get-ADComputer-opdracht naar een tekstbestand:

Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server 2019*' } -Properties * |
Select Name, OperatingSystem |
Format-Table -AutoSize C:\Temp\2019_servers.txt

Ten tweede krijgen we ook een lijst met alle computers en exporteren deze naar een waarde gescheiden door komma’s(CSV) bestand:

Get-ADComputer -Filter * -Property * |
Select-Object Name,OperatingSystem |
Export-CSV All-Computers.csv -NoTypeInformation

Ten derde kunnen we ook ons rapport exporteren en een HTML-webpaginaformaat krijgen met een lijst van alle computers en essentiële eigenschappen:

Get-ADComputer -Filter * -Properties * |
Select-Object Name,OperatingSystem |
ConvertTo-Html |
Out-File C:\ps\ad_all_computers.html

Het zou er zo uit moeten zien:

Bedankt voor het lezen van “Create Active Directory Computer Reports with PowerShell”. We zullen besluiten.

Conclusie van het maken van Active Directory Computer Reports met Powershell

In dit artikel hebben we het Get-ADComputer commando uitgebreid besproken. We hebben geleerd dat met dit commando we een gedetailleerde lijst van eigenschappen en informatie voor een bepaald apparaat kunnen krijgen. Bovendien hebben we met een uitgebreide lijst geleerd hoe we deze eigenschappen kunnen filteren om alleen de informatie te verkrijgen die we nodig hebben.

Samenvattend hebben we ook geleerd hoe we een query cmdlet kunnen omzetten in een meer bruikbare commando dat we op afstand kunnen gebruiken om commando’s door te geven. Ten slotte kunnen we nu ons rapport genereren in meerdere formaten met al deze ingevoerde informatie.

Source:
https://infrasos.com/create-active-directory-computer-reports-with-powershell/