Automatiseer het aanmaken van accounts met PowerShell. Wat heb je nodig om te beginnen?

2 juli 2012 om 23:09 uur

Hoe u snel 100.500 nieuwe gebruikers kunt 'gooien' Actieve map(opgegroeid met MS Windows-server 2003) of script voor het toevoegen van gebruikersaccounts aan Active Directory

  • Systeemprogrammering

Het gebeurde zo dat ik een beroep koos systeembeheerder. En ik doe deze soms ondankbare taak nu al bijna zes jaar.
Een paar jaar geleden werd ik eens geconfronteerd met een vraag, die later uitgroeide tot een taak: hoe kon ik relatief snel nieuwe gebruikersaccounts aanmaken in AD onder MS Windows Server 2003?

Ik denk dat iedereen de manier kent om een ​​gebruiker bij wijze van spreken ‘met de hand’ aan een domein toe te voegen. Dat wil zeggen dat u, om nieuwe AD-gebruikersaccounts toe te voegen, ongeveer de volgende dingen moet doen: open de module "Gebruikers en computers" van het bovengenoemde besturingssysteem, open de overeenkomstige OU (Organization Unite), start een van de bekende methoden maak een gebruiker aan en maak vervolgens in het geopende venster gebruikers één voor één aan. Mee eens, dit is behoorlijk lang en vervelend, vooral als de vereiste gebruikersaccounts niet 10 zijn, maar bijvoorbeeld 300, 500 of meer. Dit zal vooral een routinetaak worden wanneer u niet alleen de velden “login” en “wachtwoord” moet invullen, maar ook de velden “Achternaam”, “Voornaam Patroniem”, “Positie”, “Afdeling”, “Organisatie 'bevindt zich in verschillende tabbladen' enz. Natuurlijk zul je zeggen dat nog niemand de methoden "kopiëren en plakken" en "blind typen" heeft geannuleerd, maar probeer het eens, en voel het aantal gebruikers waar je moe van wordt, en als je niet moe wordt, dan tel het aantal gemaakte fouten bij het invoeren van gegevens.
Over het algemeen besefte ik dat ik hier iets aan moest doen en aangezien ik weinig tijd had, wendde ik me tot internetbronnen om te zoeken naar een script dat zou moeten bestaan ​​en dit probleem zou moeten oplossen, zoals mijn instinct me vertelde. Helaas, ik was bijna teleurgesteld in wat ik zag. Het internet stond vol met allerlei automatiseringsscripts diverse taken in de AD-omgeving, maar wat ik nodig had, ontbrak volledig. Ik moest me wenden tot Engelstalige bronnen, waarvan er één (helaas was ik de sitelink al kwijt op het moment dat ik dit artikel schreef, ik heb ideeën waar ik moet zoeken, en als ik het vind, zal ik het publiceren) er was een bepaald "vis" -script op VBS in een zeer "ruwe" vorm, zo bleek toen ik het probeerde toe te passen test systeem wat nergens toe leidde - het werkte simpelweg a priori niet, vanwege de aanwezigheid van veel tekortkomingen en banale fouten erin, zoals ik later ontdekte. Ik moest corrigeren, code toevoegen en bovendien een beetje een VBS-programmeur worden :)
Laat me hiervoor aan het gerespecteerde publiek een script presenteren voor het toevoegen van gebruikersaccounts in AD aan vooraf gemaakte OE's (1e niveau). Als de vraag rijst waarom OU's niet automatisch worden gemaakt, dan zal ik van tevoren antwoorden dat ik niet heb gevonden hoe ik dit moet doen, en dat de controle over de wijzigingen die in AD zijn aangebracht zo streng is - je hoeft nog steeds niet in de sandbox te spelen, maar tastbare veranderingen aanbrengen in een krachtig en functionerend in realtime systeem, de zogenaamde “Active Directory”.

Belangrijke opmerking!
U moet vooraf een bestand maken met daarin, gescheiden door ";" vereiste parameters:
Login; Wachtwoord; Voornaam Patroniem; Achternaam; Functie; Afdeling; Organisatie;
Een volgscheidingsteken ";" is vereist. op elke regel, bijvoorbeeld:
sirin-vogel1; wachtwoord1; Voornaam Patroniem1; Achternaam1; Positie1; Afdeling1; Organisatie1;
sirin-vogel2; wachtwoord2; Voornaam Patroniem2; Achternaam2; Positie2; Afdeling2; Organisatie2;
sirin-vogel4; wachtwoord3; Voornaam2 Middelste naam3; Achternaam3; Positie3; Afdeling3; Organisatie3;
sirin-vogel3; wachtwoord4; Voornaam Patroniem4; Achternaam4; Positie4; Afdeling4; Organisatie4;
sirin-vogel5; wachtwoord5; Voornaam2 Middelste naam5; Achternaam5; Positie5; Afdeling5; Organisatie5;
… … … … … … …
De creatie van een dergelijk bestand kan ook worden toevertrouwd aan ongekwalificeerd personeel dat weet hoe een eenvoudige teksteditor moet worden gebruikt. En controleer dan gewoon de juistheid van het typen en plaatsen van scheidingstekens, zoals uw nederige dienaar deed.

Nog één ding belangrijke opmerking!
De parameter “Organisatie” is een OE voor de corresponderende gebruiker en wordt niet door dit script gemaakt. Om alles te laten werken, moet u dus eerst de juiste OE’s maken in de domeinhoofdmap (in de buurt van de OU-map “Gebruikers”). Dit wordt verklaard door het feit dat er in mijn domein verschillende klantorganisaties waren met hun eigen werknemersgebruikers, vandaar deze indeling.

Dus het script zelf:
Stel objArgs = WScript.Arguments in
als objArgs.Count = 0 dan
WScript.Echo "Voegt gebruikers toe aan het domein."
WScript.Echo "add_to_ad.vbs [bestandsnaam]"
WScript.Echo "[bestandsnaam] - bestand met een lijst met gebruikers"
WScript.Echo "bestandsformaat: Login; Wachtwoord; Voornaam-Patroniem; Achternaam; Functie; Afdeling; Organisatie;"
WScript.Afsluiten
eindigen als
pad = objArgs(0)

Stel fso = CreateObject("Scripting.FileSystemObject") in
Stel objFile = fso.OpenTextFile(pad, 1) in
Doen totdat objFile.AtEndOfStream
str = objFile.ReadLine
voor i = 1 tot Len(str) stap 1
strCh = Midden(str, i, 1)
als strCh = ";" Dan
selecteer geval Z
geval 0
Gebruikersnaam = strRez " *** Inloggen
geval 1
Gebruikerswachtwoord = strRez " *** Wachtwoord
geval 2
Voornaam = strRez " *** Voornaam - patroniem
geval 3
Achternaam = strRez " *** Achternaam
geval 4
Titel = strRez " *** Positie
geval 5
Afdeling = strRez " *** Afdeling
geval 6
Bedrijf = strRez " *** Organisatie
"geval 7
"Beheerder = strRez" *** Beheerder
"geval 8
"KantoorKamer = strRez " *** Kamer
einde selecteren
strRez = ""
strCh = ""
Z=Z+1
anders
strRez = strRez + strCh
eindigen als
volgende
strRez = ""
strCh = ""
Z=0

Stel objRoot = GetObject("LDAP://RootDSE") in
Stel objADSystemInfo = CreateObject("ADSystemInfo") in
DomeinDNSNaam = objADSystemInfo.DomainDNSNaam
DomeinDN = objRoot.Get("DefaultNamingContext")
ContainerDN = "ou="&Bedrijf & "," & DomeinDN

PName = Gebruikersnaam & "@" & DomeinDNSNaam ""@snb.local"

"!!! BELANGRIJK!!!***We geven een EERDER GEMAAKTE OU aan waar nieuwe gebruikers snel naartoe snellen*******

Stel objOU = GetObject("LDAP://" & ContainerDN) in

"************************* Maak een domeingebruikersaccount aan ******************** * ****
Stel objUser = objOU.Create("Gebruiker", "cn=" + Gebruikersnaam) in
" **** Inloggen *****
objUser.Plaats "sAMAccountName", Gebruikersnaam
objUser.SetInfo

" ****** wachtwoord *******
Set objUser = GetObject("LDAP://cn=" + Gebruikersnaam + "," + ContainerDN)
objUser.SetPassword Gebruikerswachtwoord

"*******UPN**********
objUser.Plaats "userPrincipalName", pName

"****** account deactiveren *******
objUser.AccountDisabled = WAAR

" ******** Naam *********
objUser.Plaats "gegevenNaam", Voornaam

" ***** Achternaam *********
objUser.Plaats "sn", Achternaam

" ***** Weergavenaam ******
objUser.Plaats "displayName", Achternaam & " " & Voornaam

"Initialen
objUser.Plaats "initialen", left(FirstName,1) & "." "& left(Achternaam,1)

" ***** Functienaam ******
objUser.Zet "titel", Titel

" ***** Afdeling ******
objUser.Zet "afdeling", Afdeling

"Organisatie
objUser.Plaats "Bedrijf", Bedrijf

"Toezichthouder
"objUser.Put"manager", Manager

" kamer
"objUser. Zet "physicalDeliveryOfficeName", OfficeRoom

" ***** Instellen dat een wachtwoordwijziging vereist is de volgende keer dat u zich aanmeldt ***
objUser.Put "pwdLastSet", CLng(0)

ObjUser.SetInfo

"WScript.Echo "Gebruiker - " + Gebruikersnaam + " toegevoegd aan AD"

Lus
WScript.Echo "Gebruikers toegevoegd aan AD"
objFile.Sluiten

extra code om in het script in te voegen:

"Thuismap
"objUser. Zet "HomeDirectory", strHomeDirPath

" brievenbus
"objUser. Zet "mailNickname", strName

"Nog een paar voorbeelden:
"ObjUser. Zet "Beschrijving", "Jaar 2"
"objUser.Plaats "physicalDeliveryOfficeName", sOfficeName
"objUser.Plaats "ProfilePath", sScPath
"sHDrive objUser. Zet "HomeDrive", "Z"
"objUser.Plaats "TerminalServicesProfilePath", sTermProf
"objUser.Plaats "TerminalServicesHomeDirectory", sTermHDir

Codeer vanaf teksteditor moeten worden opgeslagen met de extensie .vbs
Het script wordt gestart door parameters uit een bestand door te geven.
Bijvoorbeeld: script.vbs gebruikers.txt
, Waar
script.vbs - het script zelf
users.txt - bestand met invoergegevens.

Het uitvoeren van het script duurt enkele seconden en heeft onmiddellijk resultaat.
Zoals je kunt zien in de code, als je nog een paar regels commentaar verwijdert en toevoegingen aan het bestand maakt met invoerparameters, dan kunt u “automatisch” de Manager en het Kamernummer invoeren. Het script kan onbeperkt worden ontwikkeld. Voeg bijvoorbeeld op dezelfde manier de mogelijkheid toe om een ​​veld zoals ‘Telefoon’ in te voeren.
Als teksteditor voor Windows kan ik het gratis en zeer functionele Notepad++ aanbevelen.
Een van nuttige links, waar er scripts in VBS zijn.

In de zeer eenvoudige versie Het aanmaken van een nieuw gebruikersaccount duurt ongeveer een paar minuten. Open de module “Active Directory – Gebruikers en computers”, ga naar de gewenste organisatie-eenheid (OU), selecteer Nieuw - Gebruiker in het menu, voer de gebruikersnaam en het wachtwoord in. Dat is alles, het account is klaar, u kunt werken.
Stel je nu voor dat je op deze manier niet één, maar bijvoorbeeld 50 accounts moet aanmaken, en dit regelmatig moet doen.

Omdat het onwaarschijnlijk is dat iemand graag tijd besteedt aan het dom typen van gebruikersgegevens, trekken we een eenvoudige conclusie: het proces van het aanmaken van gebruikers is noodzakelijk automatiseren. En PowerShell gaat ons hierbij helpen.

Stel je dus voor dat we dringend 50 accounts van hetzelfde type moeten aanmaken. Laten we het volgende script schrijven:


$gebruikersnaam=″student″
$aantal=1..50
foreach ($i in $count)
( Nieuwe AdUser -Naam $gebruikersnaam$i -Pad $org -passThru )

We voeren het script uit en er worden 50 gebruikers met de namen student1-student50 aangemaakt in de divisie Studenten. Standaard worden accounts uitgeschakeld gemaakt en worden gebruikers nog steeds gedwongen contact met u op te nemen om ze te activeren. Laten we dit proberen te vermijden:


$gebruikersnaam=″student″
$aantal=1..50
foreach ($i in $count)

-AccountPassword (ConvertTo-SecureString "p@$$w0rd" -AsPlainText -force) -passThru )

Hier creëren wij rekeningen al actief en ingesteld p@$$w0rd als het standaardwachtwoord, en geef ook aan dat u dit de eerste keer dat u zich bij het systeem aanmeldt, moet wijzigen. Om te voorkomen dat het wachtwoord wordt verzonden naar open vorm, gebruik de cmdlet ConvertTo-SecureString, wat vertaalt tekstreeks naar een veilig formaat

Laten we ons script nu een beetje flexibeler maken. De cmdlet gebruiken Lees-host laten we ons script de naam en het aantal gebruikers laten vragen:

$org=″OU=Studenten,DC=contoso,DC=com″


$count=1..$getal
foreach ($i in $count)
( Nieuwe AdUser -Naam $gebruikersnaam$i -Pad $org

Er zijn accounts aangemaakt en gebruikers kunnen inloggen en werken. Nu moeten ze worden geconfigureerd - toegevoegd aan beveiligingsgroepen, geregistreerd thuismap, loginscripts, enz. Dit kunt u doen met behulp van een sjabloon. Simpel gezegd: we maken een sjabloonaccount aan, passen het volledig aan en maken er vervolgens het vereiste aantal kopieën van met behulp van de parameter -Aanleg :

$template = Get-AdUser -Identiteit ″student″
$org=″OU=Studenten,DC=contoso,DC=com″
$username=Read-Host ″Voer naam in″
$number=Read-Host ″Geef nummer in″

$count=1..$getal
foreach ($i in $count)
( Nieuwe AdUser -Naam $gebruikersnaam$i -UserPrincipalName $gebruikersnaam$i -Pad $org -Instance `
$sjabloon -$True ingeschakeld -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString ″p@$$w0rd″ -AsPlainText -force) -passThru )

Een andere manier om het aanmaken van accounts te automatiseren is door ze uit een CSV-bestand te importeren. Deze methode is geschikt als u een lijst met gebruikers heeft gekregen en zij accounts moeten aanmaken in overeenstemming met deze lijst. In de regel geldt soortgelijke lijsten worden in Excel gemaakt in de vorm van een tabel met de kolommen Naam, Functie, Afdeling, etc., ongeveer als volgt:

Het is onze taak om het in CSV-formaat op te slaan en het vervolgens in het script op te geven met behulp van de cmdlet Import-CSV. Als uw CSV-bestand alle vereiste kolommen bevat, dan Nieuwe ADU-gebruiker koppelt ze automatisch aan de juiste gebruikersattributen:

$csv = Import-CSV -Pad ″C:\scripts\users.csv″
$csv | Nieuwe AdUser -Pad $org -$True ingeschakeld -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString ″p@$$w0rd″ -AsPlainText -force) -passThru

Op deze manier kun je in een paar seconden honderden nieuwe gebruikers importeren, maar er zijn valkuilen bij deze methode:

  • Kolomnamen moeten volledig overeenkomen met de namen van de gebruikerskenmerken, bijvoorbeeld Naam, Organisatie, Titel, anders werkt niets. Volledige lijst attributen kunnen worden bekeken.
  • In de tafel Noodzakelijkerwijs u moet SamAccountName opgeven, anders ontvangt u een foutmelding waarin staat dat het account al bestaat.
  • Als attributen zijn ingesteld in de Russische lay-out, zoals in ons voorbeeld, kunnen er problemen met de codering optreden. Wat mij hielp dit probleem op te lossen, was het extraheren van de inhoud van een CSV-bestand met behulp van een cmdlet Ontvang inhoud en sla het op in een ander CSV-bestand: Get-Content gebruikers.csv >> gebruikers1.csv. Daarna werden alle Russischtalige attributen normaal weergegeven.

En nog een belangrijk punt: om de cmdlet uit te voeren Nieuwe ADU-gebruiker U moet eerst de Active Directory-module voor PowerShell importeren. Dit wordt gedaan door een team Importmodule ActiveDirectory, je kunt deze regel gewoon in het script plakken . De uitzondering is wanneer u het script uitvoert vanuit een speciale module " Actieve module Directory voor Windows PowerShell."

Wij automatiseren het aanmaken van accounts met met behulp van PowerShell

In de eenvoudigste vorm duurt het maken van een nieuw gebruikersaccount ongeveer een paar minuten. Open de module “Active Directory – Gebruikers en computers”, ga naar de gewenste organisatie-eenheid (OU), selecteer Nieuw – Gebruiker in het menu, voer de gebruikersnaam en het wachtwoord in. Dat is alles, het account is klaar, u kunt werken.
Stel je nu voor dat je op deze manier niet één, maar bijvoorbeeld 50 accounts moet aanmaken, en dit regelmatig moet doen.

Omdat het onwaarschijnlijk is dat iemand graag tijd besteedt aan het dom typen van gebruikersgegevens, trekken we een eenvoudige conclusie: het proces van het aanmaken van gebruikers moet automatiseren. En PowerShell gaat ons hierbij helpen.

Stel je dus voor dat we dringend 50 accounts van hetzelfde type moeten aanmaken. Laten we het volgende script schrijven:


$gebruikersnaam=″student″
$aantal=1..50
foreach ($i in $count)
( Nieuwe AdUser -Naam $gebruikersnaam$i -Pad $org -passThru )

We voeren het script uit en er worden 50 gebruikers met de namen student1-student50 aangemaakt in de divisie Studenten. Standaard worden accounts uitgeschakeld gemaakt en worden gebruikers nog steeds gedwongen contact met u op te nemen om ze te activeren. Laten we dit proberen te vermijden:

$org=″OU=Studenten,DC=contoso,DC=com″
$gebruikersnaam=″student″
$aantal=1..50
foreach ($i in $count)

-AccountPassword (ConvertTo-SecureString "p@$$w0rd" -AsPlainText -force) -passThru )

Hier maken we accounts aan die al actief en ingesteld zijn p@$$w0rd als het standaardwachtwoord, en geef ook aan dat u dit de eerste keer dat u zich bij het systeem aanmeldt, moet wijzigen. Om te voorkomen dat het wachtwoord in leesbare tekst wordt verzonden, gebruiken we de cmdlet ConvertTo-SecureString, waarmee een tekstreeks naar een beveiligd formaat wordt geconverteerd

Laten we ons script nu een beetje flexibeler maken. De cmdlet gebruiken Lees-host laten we ons script de naam en het aantal gebruikers laten vragen:

$org=″OU=Studenten,DC=contoso,DC=com″


$count=1..$getal
foreach ($i in $count)
( Nieuw-AdUser -Naam $gebruikersnaam$i -Pad $org -Ingeschakeld $True -ChangePasswordAtLogon $true `

Er zijn accounts aangemaakt en gebruikers kunnen inloggen en werken. Nu moeten ze worden geconfigureerd: toegevoegd aan beveiligingsgroepen, geregistreerd in de thuismap, inlogscripts, enz. Dit kunt u doen met behulp van een sjabloon. Simpel gezegd: we maken een sjabloonaccount aan, passen het volledig aan en maken er vervolgens het vereiste aantal kopieën van met behulp van de parameter -Aanleg :

$template = Get-AdUser -Identiteit ″student″

$username=Read-Host ″Voer naam in″
$number=Read-Host ″Geef nummer in″

$count=1..$getal
foreach ($i in $count)
( Nieuwe AdUser -Naam $gebruikersnaam$i -UserPrincipalName $gebruikersnaam$i -Pad $org -Instance `
$template -Ingeschakeld $True -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString ″p@$$w0rd″ -AsPlainText -force) -passThru )

Een andere manier om het aanmaken van accounts te automatiseren is door ze uit een CSV-bestand te importeren. Deze methode is geschikt als u een lijst met gebruikers heeft gekregen en zij accounts moeten aanmaken in overeenstemming met deze lijst. In de regel worden dergelijke lijsten in Excel gemaakt in de vorm van een tabel met de kolommen Naam, Functie, Afdeling, enz., zoiets als dit:

Het is onze taak om het in CSV-formaat op te slaan en het vervolgens in het script op te geven met behulp van de cmdlet Import-CSV. Als uw CSV-bestand alle vereiste kolommen bevat, dan Nieuwe ADU-gebruiker koppelt ze automatisch aan de juiste gebruikersattributen:

$csv = Import-CSV -Pad ″C:\scripts\users.csv″
$csv | Nieuw-AdUser -Pad $org -Enabled $True -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString ″p@$$w0rd″ -AsPlainText -force) -passThru

Op deze manier kun je in een paar seconden honderden nieuwe gebruikers importeren, maar er zijn valkuilen bij deze methode:

  • Kolomnamen moeten volledig overeenkomen met de namen van de gebruikerskenmerken, bijvoorbeeld Naam, Organisatie, Titel, anders werkt niets. De volledige lijst met attributen kan worden bekeken.
  • In de tafel Noodzakelijkerwijs u moet SamAccountName opgeven, anders ontvangt u een foutmelding waarin staat dat het account al bestaat.
  • Als attributen zijn ingesteld in de Russische lay-out, zoals in ons voorbeeld, kunnen er problemen met de codering optreden. Wat mij hielp dit probleem op te lossen, was het extraheren van de inhoud van een CSV-bestand met behulp van een cmdlet Ontvang inhoud en sla het op in een ander CSV-bestand: Get-Content gebruikers.csv >> gebruikers1.csv. Daarna werden alle Russischtalige attributen normaal weergegeven.

Tot slot nog een paar belangrijke punten:

Om de cmdlet uit te voeren Nieuwe ADU-gebruiker U moet eerst de Active Directory-module voor PowerShell importeren. Dit wordt gedaan door een team Importmodule ActiveDirectory, je kunt deze regel gewoon in het script plakken . De uitzondering hierop is wanneer u het script uitvoert vanuit de speciale Active Directory Module voor Windows PowerShell-module.

De ActiveDirectory-module is beschikbaar op servers onder Windows-besturing Server 2008R2/2012, evenals op werknemers Windows-stations 7/8 sec geïnstalleerd pakket RSAT-administratie.

De ActiveDirectory-module vereist Active Directory Web Service (ADWS), die een webinterface biedt voor toegang tot de directoryservice. Deze service wordt standaard automatisch geïnstalleerd wanneer u de AD DS- en AD LDS-serverrollen toevoegt op servers met Windows Server 2008R2 en hoger. Voor Windows Server 2003\2008 kan deze service afzonderlijk worden geïnstalleerd door te downloaden

Het script doorloopt alle servers vanuit Active Directory en kijkt naar de samenstelling lokale groep Beheerders en slaat de lijst op in een bestand. Zal nuttig zijn voor het handhaven van de veiligheid in een omgeving met een groot aantal servers.

Voorbeeldscript

Scriptbeschrijving

1 - 4 We definiëren variabelen voor verder gebruik.
1 Pad naar het bestand waarin het resultaat wordt opgeslagen.
2 Een container in Active Directory die servercomputeraccounts bevat.
3 We maken ook een hash-array. In Powershell moet dit worden gedaan voordat u het gebruikt.
4 Maak een lege variabele. We vullen het met een lijst met gebruikers die lid zijn van de groep Administrators.
6 - 21 Functie voor het zoeken naar gebruikers in de groep Administrators.
7 De servernaam wordt doorgegeven aan de functie. We slaan het op in de variabele $strcomputer
8 - 12 We maken een uitzondering voor de bewerking die wordt uitgevoerd. Als het verzoek niet correct is voltooid, wordt de servernaam op het scherm weergegeven.
9 We hebben toegang tot het win32_groupuser-object in WMI met een lijst met Windows-groepen.
11 Als de oproep naar WMI mislukt (meestal omdat RPC niet beschikbaar is), wordt de naam van de server waartoe u toegang hebt, op het scherm weergegeven. op dit moment beroep is in behandeling.
13 De voorwaarde waaronder het bestaan ​​van de variabele met de lijst met groepen verkregen in regel 9 wordt gecontroleerd
14 We maken een variabele die een lijst met gebruikers van de groep Administrators of Administrators (op servers met de Engelse versie) bevat.
15 - 18 We verwijderen gebruikers uit de beheerdersgroep en verwijderen onnodige service-informatie.
19 De functie retourneert een lijst met gebruikers.
23 We maken een variabele en plaatsen daarin een lijst met computers waarop we naar beheerders zoeken. IN in dit voorbeeld, dit zijn computers uit Active Directory.
24 - 29 We extraheren de servers één voor één die zijn verkregen in regel 23.
25 We voeren de functie uit en geven de servernaam door. Het resultaat van het werk wordt naar de variabele $UserList geschreven
26 De voorwaarde controleert op de aanwezigheid van een waarde in de variabele $UserList
27 Als er een lijst met gebruikers is, voegt u deze toe aan de $AdminList-array
31 - 35 We doorlopen de $AdminList-array en voegen deze toe aan de lijst met servers en beheerders.
32 We maken een variabele waarin we de servernaam schrijven.
33 We maken een variabele aan waarin we de lijst met gebruikers voor de server vanaf regel 32 plaatsen.
34 De variabele $ToCSV bevat regels voor het toekomstige bestand. Elke regel bevat de servernaam en een lijst met beheerders, gescheiden door een puntkomma.
37 - 39 We controleren de aanwezigheid van het bestand in het systeem waarin we het resultaat van het script willen plaatsen. Als het bestand bestaat, verwijdert u het.
41 We maken een uploadbestand aan en plaatsen daarin een lijst met beheerders.