PowerShell istifadə edərək hesab yaratmağı avtomatlaşdırın. Başlamaq üçün nə lazımdır?

2 iyul 2012-ci il, saat 23:09

100.500 yeni istifadəçini necə tez "atmaq" olar Active Directory(MS-də böyüdü Windows Server 2003) və ya Active Directory-ə istifadəçi hesabları əlavə etmək üçün skript

  • Sistem proqramlaşdırması

Elə oldu ki, peşə seçdim sistem administratoru. Və mən artıq 6 ilə yaxındır ki, bu bəzən nankor bir işi görürəm.
Bir dəfə, bir neçə il əvvəl mən bir sualla qarşılaşdım, sonradan bir vəzifəyə çevrildi. Bu, MS Windows Server 2003 altında AD-də nisbətən tez yeni istifadəçi hesablarını necə yaratmaq idi?

Düşünürəm ki, hər kəs istifadəçini domenə əlavə etməyin yolunu bilir, belə desək, “əl ilə”. Yəni, yeni AD istifadəçi hesablarını əlavə etmək üçün təxminən aşağıdakıları etməlisiniz: yuxarıda qeyd olunan ƏS-nin “İstifadəçilər və Kompüterlər” əlavə elementini açın, müvafiq OU (Təşkilat Birləşməsi) açın, hər hansı birini işə salın. məlum üsullar istifadəçi yaratmaq və sonra açılan pəncərədə istifadəçiləri bir-bir yaratmaq. Razılaşın, bu olduqca uzun və yorucudur, xüsusən tələb olunan istifadəçi hesabları 10 deyil, məsələn, 300, 500 və ya daha çox olduqda. Bu, xüsusilə "giriş" və "parol" sahələrini deyil, həm də "Soyad", "Ad Atasının adı", "Vəzifə", "Şöbə", "Təşkilat" sahələrini doldurmağınız lazım olduqda adi bir işə çevriləcəkdir. ” müxtəlif tablarda yerləşən "və s. Əlbəttə, deyəcəksiniz ki, “kopyala-yapışdır” və “kor-koranə yazmaq” üsullarını hələ heç kim ləğv etməyib, amma cəhd edin, yorulduğunuz istifadəçilərin sayını hiss edin, yorulmursunuzsa, o zaman. məlumatları daxil edərkən edilən səhvlərin sayını hesablayın.
Ümumiyyətlə, bununla bağlı nəsə etməli olduğumu və vaxtım məhdud olduğu üçün instinktimin dediyi kimi mövcud olmalı və bu problemi həll etmək üçün internet resurslarına müraciət etdim. Təəssüf ki, gördüklərimdən az qala məyus oldum. İnternet hər cür avtomatlaşdırma skriptləri ilə dolu idi müxtəlif vəzifələr AD mühitində, amma mənə lazım olan şey tamamilə yox idi. İngilisdilli resurslara müraciət etməli oldum, onlardan biri (təəssüf ki, bu yazını yazarkən saytın linkini artıq itirmişdim, hara baxmaq barədə fikirlərim var, tapsam, dərc edəcəm) VBS-də çox "xam" formada müəyyən bir "balıq" skripti var idi, çünki onu tətbiq etməyə çalışarkən ortaya çıxdı test sistemi heç bir şeyə səbəb olmadı - sonradan bildiyim kimi, bir çox çatışmazlıqların və banal səhvlərin olması səbəbindən, sadəcə olaraq, apriori işləmədi. Düzəliş etməli, kod əlavə etməli və üstəlik bir az VBS proqramçısı olmalıydım :)
Bunun üçün icazə verin hörmətli ictimaiyyətə AD-də istifadəçi hesablarını əvvəlcədən yaradılmış OU-lara əlavə etmək üçün skript təqdim edim (1-ci səviyyə). Əgər sual yaranarsa, OU niyə avtomatik olaraq yaradılmır, onda mən əvvəlcədən cavab verəcəm ki, bunu necə edəcəyimi tapmamışam və AD-də edilən dəyişikliklərə nəzarət daha sərtdir - hələ də qum qutusunda oynamamalısınız, lakin “Active Directory” adlanan güclü və real vaxt rejimində işləyən sistemdə nəzərəçarpacaq dəyişikliklər edin.

Vacib qeyd!
Əvvəlcədən ";" ilə ayrılmış fayl yaratmalısınız. tələb olunan parametrlər:
Giriş; parol; Atasının adı; soyadı; Vəzifə adı; Şöbə; Təşkilat;
Arxadakı ayırıcı ";" tələb olunur. hər sətirdə, məsələn:
sirin-quş1; parol1; Ad Atasının adı1; Soyad1; Vəzifə 1; Şöbə 1; Təşkilat1;
sirin-quş2; parol2; Ad Atasının adı2; Soyad2; Vəzifə 2; şöbə 2; Təşkilat2;
sirin-quş4; parol3; Ad2 Ata adı3; soyad3; Vəzifə 3; şöbə 3; Təşkilat3;
sirin-quş3; parol4; Ad Atasının adı4; Soyadı4; Vəzifə 4; şöbə 4; Təşkilat 4;
sirin-quş5; parol5; Ad2 Ata adı5; Soyadı5; Vəzifə 5; şöbə 5; Təşkilat5;
… … … … … … …
Belə bir faylın yaradılması həm də əsas mətn redaktorundan necə istifadə etməyi bilən ixtisaslı kadrlara həvalə edilə bilər. Və sonra təvazökar qulluqçunuzun etdiyi kimi ayırıcıların yazılması və yerləşdirilməsinin düzgünlüyünü yoxlayın.

Daha bir şey vacib qeyd!
“Təşkilat” parametri müvafiq istifadəçi üçün bir OU-dur və bu skript tərəfindən yaradılmır, buna görə də hər şeyin işləməsi üçün əvvəlcə domen kökündə (“İstifadəçilər” OU qovluğunun yaxınlığında) uyğun OU yaradın. Bu, mənim domenimdə öz işçi istifadəçiləri olan bir neçə müştəri təşkilatının olması ilə izah olunur, buna görə də bu bölmə.

Beləliklə, skriptin özü:
ObjArgs = WScript.Arguments təyin edin
əgər objArgs.Count = 0 olarsa
WScript.Echo "İstifadəçiləri domenə əlavə edir."
WScript.Echo "add_to_ad.vbs [fayl adı]"
WScript.Echo "[fayl adı] - istifadəçilərin siyahısı olan fayl"
WScript.Echo "fayl formatı: Giriş; Parol; Ad-Atasının adı; Soyadı; Vəzifə; Şöbə; Təşkilat;"
WScript.Quit
bitərsə
yol = objArgs(0)

Set fso = CreateObject("Scripting.FileSystemObject")
ObjFile = fso.OpenTextFile təyin edin(yol, 1)
objFile.AtEndOfStream qədər edin
str = objFile.ReadLine
i = 1 üçün Len(str) addım 1
strCh = Orta(küç, i, 1)
əgər strCh = ";" sonra
Z halını seçin
hal 0
İstifadəçi adı = strRez " *** Daxil ol
hal 1
UserPassword = strRez " *** Parol
hal 2
Ad = strRez " *** Ad - Ata adı
hal 3
Soyad = strRez " *** Soyadı
hal 4
Başlıq = strRez " *** Vəzifə
hal 5
Şöbə = strRez " *** Departamenti
hal 6
Şirkət = strRez " *** Təşkilat
"iş 7
"Menecer = strRez" *** Menecer
"İş 8
"OfficeRoom = strRez" *** Otaq
son seçim
strRez = ""
strCh = ""
Z = Z + 1
başqa
strRez = strRez + strCh
bitərsə
növbəti
strRez = ""
strCh = ""
Z=0

Set objRoot = GetObject("LDAP://RootDSE")
Set objADSystemInfo = CreateObject("ADSystemInfo")
DomainDNSName = objADSystemInfo.DomainDNSName
DomainDN = objRoot.Get("DefaultNamingContext")
ContainerDN = "ou="&Şirkət & "," & DomainDN

PName = İstifadəçi Adı & "@" & DomainDNSName ""@snb.local"

"!!! Vacib!!!***Biz yeni istifadəçilərin tələsdiyi ƏVVƏL YARADILMIŞ OU-nu göstəririk *****

Set objOU = GetObject("LDAP://" & ContainerDN)

"************************ Domen istifadəçi hesabı yaradın ***************** * ****
Set objUser = objOU.Create("İstifadəçi", "cn=" + İstifadəçi Adı)
"**** Giriş *****
objUser. "sAMAccountName", İstifadəçi Adı qoyun
objUser.SetInfo

"******** parol *******
Set objUser = GetObject("LDAP://cn=" + İstifadəçi Adı + "," + ContainerDN)
objUser.SetPassword UserPassword

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

"******** hesabın deaktiv edilməsi *******
objUser.AccountDisabled = DOĞRU

"******** Adı *********
objUser. "GivenName", FirstName qoyun

" ***** Soyadı *********
objUser. "sn", Soyadı qoyun

" ***** Görünən ad *****
objUser. "displayName", Soyad, " " & FirstName qoyun

"İlk hərflər
objUser. "baş hərfləri", sola(Ad,1) və "" qoyun. "& sol(Soyad,1)

" ***** Vəzifə adı *****
objUser. "başlıq", Başlıq qoyun

" ***** Şöbə ******
objUser."Şöbə", Şöbə qoyun

"Təşkilat
objUser.Put "Şirkət", Şirkət

"Nəzarətçi
"objUser.Put"manager", Menecer

"otaq
"objUser.Put "physicalDeliveryOfficeName", OfficeRoom

" ***** Növbəti dəfə daxil olduqda parol dəyişikliyini tələb etmək üçün təyin edin ***
objUser.Put "pwdLastSet", CLng(0)

ObjUser.SetInfo

"WScript.Echo "İstifadəçi - " + İstifadəçi Adı + " AD-yə əlavə edildi"

Döngə
WScript.Echo "İstifadəçilər AD-yə əlavə edildi"
objFile.Close

skriptə daxil etmək üçün əlavə kod:

"Ev kataloqu
"objUser.Put "HomeDirectory", strHomeDirPath

"poçt qutusu
"objUser.Put "mailNickname", strName

“Daha bir neçə misal:
"ObjUser."Təsviri qoyun", "İl 2"
"objUser.Put "physicalDeliveryOfficeName", sOfficeName
"objUser."ProfilePath", sScPath qoyun
"sHDrive objUser. "HomeDrive", "Z" qoyun
"objUser.Put "TerminalServicesProfilePath", sTermProf
"objUser.Put "TerminalServicesHomeDirectory", sTermHDir

kodundan mətn redaktoru.vbs uzantısı ilə yadda saxlamaq lazımdır
Skript fayldan parametrlər ötürməklə işə salınır.
Məsələn: script.vbs users.txt
, Harada
script.vbs - skriptin özü
users.txt - daxil məlumatı olan fayl.

Skriptin icrası ani nəticələrlə saniyə çəkir.
Koddan da göründüyü kimi, bir neçə sətir daha şərhi silsəniz və fayla əlavələr etsəniz giriş parametrləri, sonra Menecer və Otaq Nömrəsini “avtomatik olaraq” daxil edə bilərsiniz. Skript məhdudiyyətsiz olaraq inkişaf etdirilə bilər. Məsələn, eyni şəkildə “Telefon” kimi sahəyə daxil olmaq imkanı əlavə edin.
Windows üçün mətn redaktoru olaraq mən pulsuz və çox funksional Notepad++ proqramını tövsiyə edə bilərəm.
biri faydalı bağlantılar, VBS-də skriptlərin olduğu yer.

Çox sadə versiya Yeni istifadəçi hesabı yaratmaq təxminən bir neçə dəqiqə çəkir. “Active Directory – İstifadəçilər və Kompüterlər” əlavə elementini açın, istədiyiniz təşkilat bölməsinə (OU) gedin, menyudan Yeni – İstifadəçi seçin, istifadəçi adı və şifrənizi daxil edin. Budur, hesab hazırdır, işləyə bilərsiniz.
İndi təsəvvür edin ki, bu şəkildə bir deyil, məsələn, 50 hesab yaratmalı və bunu müntəzəm olaraq etməlisiniz.

Heç kimin istifadəçi etimadnamələrini yazaraq axmaqcasına vaxt keçirməyi sevməsi çətin olduğundan, sadə bir nəticə çıxarırıq - istifadəçilər yaratmaq prosesi lazımdır. avtomatlaşdırmaq. Və PowerShell bu işdə bizə kömək edəcək.

Beləliklə, təsəvvür edin ki, təcili olaraq eyni tipli 50 hesab yaratmalıyıq. Aşağıdakı skripti yazaq:


$username=″tələbə″
$count=1..50
foreach ($i $count)
( Yeni-Reklam İstifadəçisi -Ad $username$i -Path $org -passThru )

Biz skripti işlədirik və Tələbələr bölməsində student1-student50 adlı 50 istifadəçi yaradılır. Varsayılan olaraq, hesablar qeyri-aktiv yaradılmışdır və istifadəçilər onları aktivləşdirmək üçün hələ də sizinlə əlaqə saxlamağa məcbur olacaqlar. Bunun qarşısını almağa çalışaq:


$username=″tələbə″
$count=1..50
foreach ($i $count)

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

Burada yaradırıq hesablar artıq aktiv və qurulmuşdur p@$$w0rd defolt parol kimi və həmçinin sistemə ilk dəfə daxil olanda onu dəyişməyi göstərin. Şifrəni ötürməmək üçün açıq forma, cmdlet istifadə edin ConvertTo-SecureString, tərcümə edir mətn sətri təhlükəsiz formata çevirin

İndi skriptimizi bir az daha çevik edək. Cmdlet istifadə edərək Oxu-Host skriptimizdən istifadəçilərin adını və sayını tələb edək:

$org=″OU=Tələbələr,DC=contoso,DC=com″


$count=1..$nömrə
foreach ($i $count)
( Yeni-Reklam İstifadəçisi -Ad $username$i -Path $org

Hesablar yaradılıb və istifadəçilər daxil olub işləyə bilərlər. İndi onlar konfiqurasiya edilməlidir - təhlükəsizlik qruplarına əlavə edildi, qeydiyyatdan keçdi ev kataloqu, giriş skriptləri və s. Bunu bir şablondan istifadə edərək edə bilərsiniz. Sadəcə olaraq, biz bir şablon hesabı yaradırıq, onu tamamilə fərdiləşdiririk və sonra parametrdən istifadə edərək ondan lazımi sayda nüsxə çıxarırıq. -Nümunə :

$template = Get-AdUser -Şəxsiyyət ″tələbə″
$org=″OU=Tələbələr,DC=contoso,DC=com″
$username=Oxu-Host ″Ad daxil edin″
$number=Oxu-Host ″Nömrə daxil edin″

$count=1..$nömrə
foreach ($i $count)
( New-AdUser -Name $username$i -UserPrincipalName $username$i -Path $org -Instance `
$şablon -Aktiv $True -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString ″p@$$w0rd″ -AsPlainText -force) -passThru )

Hesab yaratmağı avtomatlaşdırmağın başqa bir yolu onları CSV faylından idxal etməkdir. Bu üsul sizə istifadəçilərin siyahısı verilmişsə və onlar bu siyahıya uyğun hesablar yaratmalıdırlarsa uyğundur. Bir qayda olaraq, oxşar siyahılar Excel-də Ad, Vəzifə, Şöbə və s. sütunları olan cədvəl şəklində yaradılır, təxminən belədir:

Bizim vəzifəmiz onu CSV formatında saxlamaq və sonra cmdletdən istifadə edərək skriptdə qeyd etməkdir İdxal-CSV. CSV faylınız bütün tələb olunan sütunları ehtiva edirsə, o zaman Yeni-ADUser onları avtomatik olaraq düzgün istifadəçi atributları ilə əlaqələndirəcək:

$csv = Import-CSV -Path ″C:\scripts\users.csv″
$csv | Yeni-Reklam İstifadəçisi -Path $org -Aktiv $True -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString ″p@$$w0rd″ -AsPlainText -force) -passThru

Bu yolla bir neçə saniyə ərzində yüzlərlə yeni istifadəçi idxal edə bilərsiniz, lakin bu üsulda tələlər var:

  • Sütun adları olmalıdır tam istifadəçi atributlarının adlarını uyğunlaşdırın, məsələn Ad, Təşkilat, Başlıq, əks halda heç nə işləməyəcək. Tam siyahı atributlarına baxmaq olar.
  • Cədvəldə Mütləq siz SamAccountName-i göstərməlisiniz, əks halda hesabın artıq mövcud olduğunu bildirən xəta alacaqsınız.
  • Atributlar bizim nümunəmizdə olduğu kimi rus tərtibatında quraşdırılıbsa, kodlaşdırma ilə bağlı problemlər yarana bilər. Mənə bu problemi həll etməyə kömək edən bir cmdlet istifadə edərək CSV faylının məzmununu çıxarmaq idi Məzmun əldə edin və onu başqa CSV faylında saxlamaq: Get-Content users.csv >> users1.csv. Bundan sonra bütün rusdilli atributlar normal şəkildə göstərilməyə başladı.

Və daha bir vacib məqam: cmdlet-i işə salmaq Yeni-ADUserƏvvəlcə PowerShell üçün Active Directory modulunu idxal etməlisiniz. Bu bir komanda tərəfindən edilir Import-Module ActiveDirectory, sadəcə bu xətti skriptə yapışdıra bilərsiniz . İstisna, skripti xüsusi bir əlavədən işə saldığınız zamandır " Aktiv modul Windows PowerShell üçün kataloq."

ilə hesabların yaradılmasını avtomatlaşdırırıq PowerShell istifadə edərək

Ən sadə formada, yeni istifadəçi hesabı yaratmaq bir neçə dəqiqə çəkir. “Active Directory – İstifadəçilər və Kompüterlər” əlavə elementini açın, istədiyiniz təşkilat bölməsinə (OU) gedin, menyudan Yeni – İstifadəçi seçin, istifadəçi adı və şifrənizi daxil edin. Budur, hesab hazırdır, işləyə bilərsiniz.
İndi təsəvvür edin ki, bu şəkildə bir deyil, məsələn, 50 hesab yaratmalı və bunu müntəzəm olaraq etməlisiniz.

Heç kimin istifadəçi etimadnamələrini yazaraq axmaqcasına vaxt keçirməyi sevməsi çətin olduğundan, sadə bir nəticə çıxarırıq - istifadəçilərin yaradılması prosesi avtomatlaşdırmaq. Və PowerShell bu işdə bizə kömək edəcək.

Beləliklə, təsəvvür edin ki, təcili olaraq eyni tipli 50 hesab yaratmalıyıq. Aşağıdakı skripti yazaq:


$username=″tələbə″
$count=1..50
foreach ($i $count)
( Yeni-Reklam İstifadəçisi -Ad $username$i -Path $org -passThru )

Biz skripti işlədirik və Tələbələr bölməsində student1-student50 adlı 50 istifadəçi yaradılır. Varsayılan olaraq, hesablar qeyri-aktiv yaradılmışdır və istifadəçilər onları aktivləşdirmək üçün hələ də sizinlə əlaqə saxlamağa məcbur olacaqlar. Bunun qarşısını almağa çalışaq:

$org=″OU=Tələbələr,DC=contoso,DC=com″
$username=″tələbə″
$count=1..50
foreach ($i $count)

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

Burada artıq aktiv və təyin edilmiş hesablar yaradırıq p@$$w0rd defolt parol kimi və həmçinin sistemə ilk dəfə daxil olduğunuz zaman onu dəyişdirməyinizi göstərin. Parolun aydın mətnlə ötürülməməsi üçün biz cmdletdən istifadə edirik ConvertTo-SecureString, mətn sətirini qorunan formata çevirən

İndi skriptimizi bir az daha çevik edək. Cmdlet istifadə edərək Oxu-Host skriptimizdən istifadəçilərin adını və sayını tələb edək:

$org=″OU=Tələbələr,DC=contoso,DC=com″


$count=1..$nömrə
foreach ($i $count)
( Yeni-Reklam İstifadəçisi -Ad $username$i -Path $org -Aktivdir $True -ChangePasswordAtLogon $true `

Hesablar yaradılıb və istifadəçilər daxil olub işləyə bilərlər. İndi onları konfiqurasiya etmək lazımdır - təhlükəsizlik qruplarına əlavə edildi, ev kataloqunda qeydiyyatdan keçdi, giriş skriptləri və s. Bunu bir şablondan istifadə edərək edə bilərsiniz. Sadəcə olaraq, biz bir şablon hesabı yaradırıq, onu tamamilə fərdiləşdiririk və sonra parametrdən istifadə edərək ondan lazımi sayda nüsxə çıxarırıq. -Nümunə :

$template = Get-AdUser -Şəxsiyyət ″tələbə″

$username=Oxu-Host ″Ad daxil edin″
$number=Oxu-Host ″Nömrə daxil edin″

$count=1..$nömrə
foreach ($i $count)
( New-AdUser -Name $username$i -UserPrincipalName $username$i -Path $org -Instance `
$template -Aktivdir $True -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString ″p@$$w0rd″ -AsPlainText -force) -passThru )

Hesab yaratmağı avtomatlaşdırmağın başqa bir yolu onları CSV faylından idxal etməkdir. Bu üsul sizə istifadəçilərin siyahısı verilmişsə və onlar bu siyahıya uyğun hesablar yaratmalıdırlarsa uyğundur. Bir qayda olaraq, bu cür siyahılar Excel-də Ad, Vəzifə, Şöbə və s. sütunları olan bir cədvəl şəklində yaradılır, buna bənzər bir şey:

Bizim vəzifəmiz onu CSV formatında saxlamaq və sonra cmdletdən istifadə edərək skriptdə qeyd etməkdir İdxal-CSV. CSV faylınız bütün tələb olunan sütunları ehtiva edirsə, o zaman Yeni-ADUser onları avtomatik olaraq düzgün istifadəçi atributları ilə əlaqələndirəcək:

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

Bu yolla bir neçə saniyə ərzində yüzlərlə yeni istifadəçi idxal edə bilərsiniz, lakin bu üsulda tələlər var:

  • Sütun adları olmalıdır tam istifadəçi atributlarının adlarını uyğunlaşdırın, məsələn Ad, Təşkilat, Başlıq, əks halda heç nə işləməyəcək. Atributların tam siyahısına baxmaq olar.
  • Cədvəldə Mütləq siz SamAccountName-i göstərməlisiniz, əks halda hesabın artıq mövcud olduğunu bildirən xəta alacaqsınız.
  • Atributlar bizim nümunəmizdə olduğu kimi rus tərtibatında quraşdırılıbsa, kodlaşdırma ilə bağlı problemlər yarana bilər. Mənə bu problemi həll etməyə kömək edən bir cmdlet istifadə edərək CSV faylının məzmununu çıxarmaq idi Məzmun əldə edin və onu başqa CSV faylında saxlamaq: Get-Content users.csv >> users1.csv. Bundan sonra bütün rusdilli atributlar normal şəkildə göstərilməyə başladı.

Sonda bir neçə vacib məqam:

Cmdlet-i işə salmaq üçün Yeni-ADUserƏvvəlcə PowerShell üçün Active Directory modulunu idxal etməlisiniz. Bu bir komanda tərəfindən edilir Import-Module ActiveDirectory, sadəcə bu xətti skriptə yapışdıra bilərsiniz . İstisna, skripti Windows PowerShell snap-in üçün xüsusi Active Directory Modulundan işə saldığınız zamandır.

ActiveDirectory modulu aşağıdakı serverlərdə mövcuddur Windows nəzarəti Server 2008R2/2012, eləcə də işçilər üçün Windows stansiyaları 7/8 s quraşdırılmış paket RSAT rəhbərliyi.

ActiveDirectory modulu kataloq xidmətinə daxil olmaq üçün veb interfeysi təmin edən Active Directory Web Service (ADWS) tələb edir. Defolt olaraq, Windows Server 2008R2 və daha sonra işləyən serverlərdə AD DS və AD LDS server rollarını əlavə etdiyiniz zaman bu xidmət avtomatik quraşdırılır. Windows Server 2003\2008 üçün bu xidməti endirməklə ayrıca quraşdırmaq olar

Skript Active Directory-dən bütün serverlərdən keçir, tərkibə baxır yerli qrup Administratorlar və siyahını faylda saxlayır. İlə bir mühitdə təhlükəsizliyi qorumaq üçün faydalı olacaq böyük rəqəm serverlər.

Nümunə skript

Skript təsviri

1 - 4 Sonrakı istifadə üçün dəyişənləri müəyyənləşdiririk.
1 Nəticənin saxlanacağı fayla gedən yol.
2 Server kompüter hesablarını ehtiva edən Active Directory-də konteyner.
3 Biz həmçinin hash massivi yaradırıq. Powershell-də bunu istifadə etməzdən əvvəl etmək lazımdır.
4 Boş dəyişən yaradın. Onu Administratorlar qrupunun üzvü olan istifadəçilərin siyahısı ilə dolduracağıq.
6 - 21 Administrators qrupunda istifadəçilərin axtarışı funksiyası.
7 Server adı funksiyaya ötürüləcək. Biz onu $strcomputer dəyişənində saxlayacağıq
8 - 12 Biz icra olunan əməliyyat üçün bir istisna yaradırıq. Sorğu düzgün doldurulmazsa, server adı ekranda görünəcək.
9 Windows qruplarının siyahısı ilə WMI-də win32_groupuser obyektinə daxil oluruq.
11 WMI-ə zəng uğursuz olarsa (əksər hallarda RPC-nin olmaması səbəbindən), daxil olduğunuz serverin adı ekranda görünəcək. hal-hazırda apellyasiya şikayəti davam edir.
13 9-cu sətirdə alınan qrupların siyahısı ilə dəyişənin mövcudluğunun yoxlanıldığı şərt
14 Biz Administrators və ya Administrators qrupunun (İngilis versiyası olan serverlərdə) istifadəçilərinin siyahısını daxil edəcək dəyişən yaradırıq.
15 - 18 Biz istifadəçiləri inzibati qrupdan çıxarırıq və lazımsız xidmət məlumatlarını silirik.
19 Funksiya istifadəçilərin siyahısını qaytarır.
23 Biz dəyişən yaradırıq və ona idarəçiləri axtaracağımız kompüterlərin siyahısını yerləşdiririk. IN bu misalda, bunlar Active Directory-dən olan kompüterlərdir.
24 - 29 23-cü sətirdə əldə edilmiş serverləri bir-bir çıxarırıq.
25 Biz funksiyanı işə salırıq və ona server adını veririk. İşin nəticəsi $UserList dəyişəninə yazılır
26 Şərt $UserList dəyişənində dəyərin mövcudluğunu yoxlayır
27 İstifadəçilərin siyahısı varsa, onu $AdminList massivinə əlavə edin
31 - 35 Biz $AdminList massivindən keçirik və onlar üçün serverlər və idarəçilər siyahısına əlavə edirik.
32 Biz server adını yazdığımız dəyişən yaradırıq.
33 32-ci sətirdən server üçün istifadəçilərin siyahısını yerləşdirəcəyimiz dəyişən yaradırıq.
34 $ToCSV dəyişəni gələcək fayl üçün xətləri ehtiva edir. Hər bir sətir nöqtəli vergüllə ayrılmış server adı və idarəçilərin siyahısıdır.
37 - 39 Skriptin nəticəsini yerləşdirmək istədiyimiz sistemdə faylın mövcudluğunu yoxlayırıq. Fayl varsa, onu silin.
41 Yükləmə faylı yaradırıq və orada idarəçilərin siyahısını yerləşdiririk.