Automatikkan penciptaan akaun menggunakan PowerShell. Apa yang anda perlukan untuk bermula?

2 Julai 2012 jam 11:09 malam

Bagaimana untuk "membuang" 100,500 pengguna baharu dengan cepat Direktori Aktif(dibangkitkan pada MS Pelayan Windows 2003) atau Skrip untuk menambah akaun pengguna ke Active Directory

  • Pengaturcaraan Sistem

Kebetulan saya memilih profesion pentadbir sistem. Dan saya telah melakukan tugas yang kadang-kadang tidak berterima kasih ini selama hampir 6 tahun sekarang.
Pernah, beberapa tahun yang lalu, saya berhadapan dengan satu soalan, yang kemudiannya berkembang menjadi satu tugas, iaitu bagaimana untuk secara relatif cepat mencipta akaun pengguna baharu dalam AD di bawah MS Windows Server 2003?

Saya rasa semua orang tahu cara untuk menambahkan pengguna pada domain, boleh dikatakan, "dengan tangan." Iaitu, untuk menambah akaun pengguna AD baharu, anda perlu melakukan kira-kira perkara berikut: buka snap-in "Pengguna dan Komputer" OS yang disebutkan di atas, buka OU (Organization Unite) yang sepadan, mulakan mana-mana kaedah yang diketahui mencipta pengguna, dan kemudian dalam tetingkap yang terbuka, buat pengguna satu demi satu. Setuju, ini agak panjang dan membosankan, terutamanya jika akaun pengguna yang diperlukan bukan 10, tetapi, katakan, 300, 500 atau lebih. Ini terutamanya akan menjadi tugas rutin apabila anda perlu mengisi bukan sahaja medan "log masuk" dan "kata laluan", tetapi juga medan "Nama Akhir", "Nama Pertama Patronymic", "Jawatan", "Jabatan", "Organisasi ” terletak dalam pelbagai tab " dsb. Sudah tentu, anda akan mengatakan bahawa belum ada sesiapa yang membatalkan kaedah "copy-paste" dan "menaip buta", tetapi cubalah, dan anda akan merasakan bilangan pengguna yang anda bosan, dan jika anda tidak jemu , kemudian kira bilangan kesilapan yang dilakukan semasa memasukkan data.
Secara umum, menyedari bahawa saya perlu melakukan sesuatu tentang perkara ini dan kerana saya mempunyai masa yang terhad, saya beralih kepada sumber Internet untuk mencari skrip yang sepatutnya wujud dan menyelesaikan masalah ini, seperti yang diberitahu oleh naluri saya. Malangnya, saya hampir kecewa dengan apa yang saya lihat. Internet penuh dengan semua jenis skrip automasi pelbagai tugas dalam persekitaran AD, tetapi apa yang saya perlukan hilang sepenuhnya. Saya terpaksa beralih kepada sumber bahasa Inggeris, salah satunya (sayangnya, saya telah kehilangan pautan tapak semasa menulis artikel ini, saya mempunyai idea di mana hendak mencari, dan jika saya menemuinya, saya akan menerbitkannya) terdapat skrip "ikan" tertentu pada VBS dalam bentuk yang sangat "mentah". ternyata apabila cuba menerapkannya pada sistem ujian yang tidak membawa kepada apa-apa - ia hanya, a priori, tidak berfungsi, kerana kehadiran banyak kekurangan dan kesilapan cetek di dalamnya, seperti yang saya ketahui kemudian. Saya terpaksa membetulkan, menambah kod dan, selain itu, menjadi sedikit pengaturcara VBS :)
Untuk ini, izinkan saya membentangkan kepada orang ramai yang dihormati skrip untuk menambah akaun pengguna dalam AD pada OU yang telah dibuat sebelumnya (peringkat pertama). Sekiranya timbul persoalan mengapa OU tidak dibuat secara automatik, maka saya akan menjawab terlebih dahulu bahawa saya tidak menemui cara untuk melakukan ini, dan kawalan ke atas perubahan yang dibuat dalam AD adalah lebih ketat - anda masih perlu tidak bermain di kotak pasir, tetapi membuat perubahan ketara kepada sistem masa nyata yang berkuasa dan berfungsi, yang dipanggil "Direktori Aktif".

Nota PENTING!
Anda perlu mencipta fail terlebih dahulu yang mengandungi, dipisahkan dengan ";" parameter yang diperlukan:
Log masuk; Kata laluan; Nama Nama Patronymic; Nama keluarga; Tajuk kerja; Jabatan; Organisasi;
Pembatas mengekor ";" diperlukan. pada setiap baris, contohnya:
sirin-burung1; kata laluan1; Nama pertama Patronymic1; Nama Akhir1; Jawatan1; Jabatan1; Organisasi1;
sirin-burung2; kata laluan2; Nama pertama Patronymic2; Nama Akhir2; Jawatan2; Jabatan2; Organisasi2;
sirin-burung4; kata laluan3; Nama pertama2 Nama tengah3; Nama keluarga3; Jawatan3; Jabatan3; Organisasi3;
sirin-burung3; kata laluan4; Nama pertama Patronymic4; Nama keluarga4; Jawatan4; Jabatan4; Organisasi4;
sirin-burung5; kata laluan5; Nama pertama2 Nama tengah5; Nama keluarga5; Jawatan5; Jabatan5; Organisasi5;
… … … … … … …
Penciptaan fail sedemikian juga boleh diamanahkan kepada kakitangan yang tidak berkelayakan yang tahu cara menggunakan editor teks asas. Dan kemudian periksa ketepatan penaipan dan penempatan pemisah, seperti yang dilakukan oleh hambamu yang rendah hati.

Satu lagi Nota PENTING!
Parameter "Organisasi" ialah OU untuk pengguna yang sepadan dan tidak dicipta oleh skrip ini, jadi untuk semuanya berfungsi, mula-mula buat OU yang sesuai dalam akar domain (berhampiran folder OU "Pengguna"). Ini dijelaskan oleh fakta bahawa dalam domain saya terdapat beberapa organisasi pelanggan dengan pengguna pekerja mereka sendiri, maka bahagian ini.

Jadi, skrip itu sendiri:
Tetapkan objArgs = WScript.Arguments
jika objArgs.Count = 0 maka
WScript.Echo "Menambah pengguna pada domain."
WScript.Echo "add_to_ad.vbs [nama fail]"
WScript.Echo "[nama fail] - fail dengan senarai pengguna"
WScript.Echo "format fail: Log Masuk; Kata Laluan; Nama pertama-Patronymic; Nama keluarga; Jawatan; Jabatan; Organisasi;"
WScript.Berhenti
tamat jika
laluan = objArgs(0)

Set fso = CreateObject("Scripting.FileSystemObject")
Tetapkan objFile = fso.OpenTextFile(path, 1)
Lakukan Sehingga objFile.AtEndOfStream
str = objFile.ReadLine
untuk i = 1 hingga Len(str) langkah 1
strCh = Pertengahan(str, i, 1)
jika strCh = ";" kemudian
pilih kes Z
kes 0
Nama Pengguna = strRez " *** Log masuk
kes 1
UserPassword = strRez " *** Kata Laluan
kes 2
Nama Pertama = strRez " *** Nama Pertama - Patronymic
kes 3
Nama Akhir = strRez " *** Nama keluarga
kes 4
Tajuk = strRez " *** Jawatan
kes 5
Jabatan = strRez " *** Jabatan
kes 6
Syarikat = strRez " *** Organisasi
"kes 7
"Pengurus = strRez" *** Pengurus
"kes 8
"Bilik Pejabat = strRez " *** Bilik
akhir pilih
strRez = ""
strCh = ""
Z = Z + 1
lain
strRez = strRez + strCh
tamat jika
seterusnya
strRez = ""
strCh = ""
Z=0

Tetapkan objRoot = GetObject("LDAP://RootDSE")
Tetapkan objADSystemInfo = CreateObject("ADSystemInfo")
DomainDNSNName = objADSystemInfo.DomainDNSNName
DomainDN = objRoot.Get("DefaultNamingContext")
ContainerDN = "ou="&Syarikat & "," & DomainDN

PName = Nama Pengguna & "@" & Nama DomainDNSN ""@snb.local"

"!!! PENTING!!!***Kami menunjukkan OU YANG SEBELUMNYA DIBUAT SEBELUMNYA di mana pengguna baharu tergesa-gesa *******

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

"************************ Buat akaun pengguna domain ****************** * ****
Tetapkan objUser = objOU.Create("Pengguna", "cn=" + Nama Pengguna)
" **** Log masuk *****
objUser.Letakkan "sAMAccountName", Nama Pengguna
objUser.SetInfo

" ****** kata laluan *******
Tetapkan objUser = GetObject("LDAP://cn=" + UserName + "," + ContainerDN)
objUser.SetPassword UserPassword

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

"****** penyahaktifan akaun *******
objUser.AccountDisabled = BENAR

" ******** Nama *********
objUser.Letakkan "givenName", FirstName

" ***** Nama keluarga *********
objUser.Letakkan "sn", Nama Akhir

" ***** Nama paparan ******
objUser.Letakkan "displayName", LastName & " " & FirstName

"Inisial
objUser.Letakkan "initials", kiri(FirstName,1) & "." "& kiri(Nama Akhir,1)

" ***** Jawatan kerja ******
objUser.Letakkan "tajuk", Tajuk

" ***** Jabatan ******
objUser.Letakkan "jabatan", Jabatan

"Pertubuhan
objUser.Put "Syarikat", Syarikat

"Penyelia
"objUser.Put"manager", Pengurus

"bilik
"objUser.Put "physicalDeliveryOfficeName", OfficeRoom

" ***** Tetapkan untuk meminta penukaran kata laluan pada kali seterusnya anda log masuk ***
objUser.Put "pwdLastSet", CLng(0)

ObjUser.SetInfo

"WScript.Echo "Pengguna - " + Nama Pengguna + " ditambahkan pada AD"

gelung
WScript.Echo "Pengguna ditambahkan pada AD"
objFile.Tutup

kod tambahan untuk dimasukkan ke dalam skrip:

" Direktori rumah
"objUser.Put "HomeDirectory", strHomeDirPath

"Peti surat
"objUser.Put "mailNickname", strName

"Beberapa lagi contoh:
"ObjUser.Put "Penerangan", "Tahun 2"
"objUser.Put "physicalDeliveryOfficeName", sOfficeName
"objUser.Put "ProfilePath", sScPath
"sHDrive objUser.Put "HomeDrive", "Z"
"objUser.Put "TerminalServicesProfilePath", sTermProf
"objUser.Put "TerminalServicesHomeDirectory", sTermHDir

Kod daripada penyunting teks anda perlu menyimpannya dengan sambungan .vbs
Skrip dilancarkan dengan menghantar parameter daripada fail.
Contohnya: script.vbs users.txt
, Di mana
script.vbs - skrip itu sendiri
users.txt - fail dengan data input.

Melaksanakan skrip mengambil masa beberapa saat dengan hasil segera.
Seperti yang anda boleh lihat daripada kod, jika anda menyahkomen beberapa baris lagi dan membuat penambahan pada fail dengan parameter input, maka anda boleh "secara automatik" memasukkan Pengurus dan Nombor Bilik. Skrip boleh dibangunkan tanpa had. Sebagai contoh, tambahkan keupayaan untuk memasukkan medan seperti "Telefon" dengan cara yang sama.
Sebagai editor teks untuk Windows, saya boleh mengesyorkan Notepad++ yang percuma dan sangat berfungsi.
Satu daripada pautan yang berguna, di mana terdapat skrip dalam VBS.

Dalam sangat versi mudah Membuat akaun pengguna baharu mengambil masa kira-kira beberapa minit. Buka snap-in "Direktori Aktif - Pengguna dan Komputer", pergi ke unit organisasi (OU) yang dikehendaki, pilih Baharu - Pengguna dari menu, masukkan nama pengguna dan kata laluan. Itu sahaja, akaun sudah siap, anda boleh bekerja.
Sekarang bayangkan bahawa dengan cara ini anda tidak perlu membuat satu, tetapi, katakan, 50 akaun, dan lakukan ini dengan kerap.

Memandangkan tidak mungkin sesiapa suka menghabiskan masa menaip kelayakan pengguna secara bodoh, kami membuat kesimpulan mudah - proses mencipta pengguna adalah perlu mengautomasikan. Dan PowerShell akan membantu kami dengan ini.

Jadi, bayangkan kita perlu membuat 50 akaun dengan jenis yang sama dengan segera. Mari tulis skrip berikut:


$username=″pelajar″
$count=1..50
foreach ($i dalam $count)
( New-AdUser -Name $username$i -Path $org -passThru )

Kami menjalankan skrip, dan 50 pengguna dengan nama student1-student50 dicipta dalam bahagian Students. Secara lalai, akaun dibuat dilumpuhkan, dan pengguna masih akan dipaksa untuk menghubungi anda untuk mengaktifkannya. Mari cuba elakkan perkara ini:


$username=″pelajar″
$count=1..50
foreach ($i dalam $count)

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

Di sini kita buat Akaun sudah aktif dan ditetapkan p@$$w0rd sebagai kata laluan lalai, dan juga menunjukkan untuk menukarnya pada kali pertama anda log masuk ke sistem. Untuk mengelakkan penghantaran kata laluan kepada borang terbuka, gunakan cmdlet ConvertTo-SecureString, yang menterjemah rentetan teks ke dalam format yang selamat

Sekarang mari kita jadikan skrip kita sedikit lebih fleksibel. Menggunakan cmdlet Baca-Hos mari buat skrip kami meminta nama dan bilangan pengguna:

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


$bilangan=1..$nombor
foreach ($i dalam $count)
( New-AdUser -Name $username$i -Path $org

Akaun telah dibuat dan pengguna boleh log masuk dan bekerja. Kini mereka perlu dikonfigurasikan - ditambah kepada kumpulan keselamatan, didaftarkan direktori rumah, skrip log masuk, dsb. Anda boleh melakukan ini menggunakan templat. Ringkasnya, kami mencipta akaun templat, menyesuaikannya sepenuhnya, dan kemudian membuat bilangan salinan yang diperlukan daripadanya menggunakan parameter -Contohnya :

$template = Get-AdUser -Identity ″pelajar″
$org=″OU=Pelajar,DC=contoso,DC=com″
$username=Read-Host ″Masukkan nama″
$number=Read-Host ″Masukkan nombor″

$bilangan=1..$nombor
foreach ($i dalam $count)
( New-AdUser -Name $username$i -UserPrincipalName $username$i -Path $org -Instance `
$template -Didayakan $True -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString ″p@$$w0rd″ -AsPlainText -force) -passThru )

Cara lain untuk mengautomasikan penciptaan akaun ialah mengimportnya daripada fail CSV. Kaedah ini sesuai jika anda telah diberikan senarai pengguna, dan mereka perlu membuat akaun mengikut senarai ini. Biasanya, senarai yang serupa dicipta dalam Excel dalam bentuk jadual dengan lajur Nama, Jawatan, Jabatan, dll., lebih kurang seperti ini:

Tugas kami adalah untuk menyimpannya dalam format CSV dan kemudian nyatakannya dalam skrip menggunakan cmdlet Import-CSV. Jika fail CSV anda mengandungi semua lajur yang diperlukan, maka Pengguna-ADU baharu akan mengaitkannya secara automatik dengan atribut pengguna yang betul:

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

Dengan cara ini anda boleh mengimport ratusan pengguna baharu dalam beberapa saat, tetapi terdapat masalah dalam kaedah ini:

  • Nama lajur sepatutnya sepenuhnya sepadan dengan nama atribut pengguna, contohnya Nama, Organisasi, Tajuk, jika tidak, tiada apa yang akan berfungsi. Senarai penuh atribut boleh dilihat.
  • Dalam jadual Semestinya anda mesti menyatakan SamAccountName, jika tidak, anda akan menerima ralat yang menyatakan bahawa akaun itu sudah wujud.
  • Jika atribut ditetapkan dalam susun atur Rusia, seperti dalam contoh kami, maka masalah dengan pengekodan mungkin timbul. Apa yang membantu saya menyelesaikan masalah ini ialah mengekstrak kandungan fail CSV menggunakan cmdlet Dapatkan-Kandungan dan menyimpannya ke fail CSV lain: Get-Content users.csv >> users1.csv. Selepas itu, semua atribut bahasa Rusia mula dipaparkan secara normal.

Dan satu lagi perkara penting: untuk menjalankan cmdlet Pengguna-ADU baharu Anda mesti mengimport modul Active Directory untuk PowerShell dahulu. Ini dilakukan oleh satu pasukan Import-Modul ActiveDirectory, anda hanya boleh menampal baris ini ke dalam skrip . Pengecualian adalah apabila anda menjalankan skrip daripada snap-in khas " Modul aktif Direktori untuk Windows PowerShell."

Kami mengautomasikan penciptaan akaun dengan menggunakan PowerShell

Dalam bentuk yang paling mudah, mencipta akaun pengguna baharu mengambil masa kira-kira beberapa minit. Buka snap-in "Direktori Aktif - Pengguna dan Komputer", pergi ke unit organisasi (OU) yang dikehendaki, pilih Baharu - Pengguna dari menu, masukkan nama pengguna dan kata laluan. Itu sahaja, akaun sudah siap, anda boleh bekerja.
Sekarang bayangkan bahawa dengan cara ini anda tidak perlu membuat satu, tetapi, katakan, 50 akaun, dan lakukan ini dengan kerap.

Memandangkan tidak mungkin ada sesiapa yang suka menghabiskan masa dengan bodoh menaip kelayakan pengguna, kami membuat kesimpulan mudah - proses mencipta pengguna mesti mengautomasikan. Dan PowerShell akan membantu kami dengan ini.

Jadi, bayangkan kita perlu membuat 50 akaun dengan jenis yang sama dengan segera. Mari tulis skrip berikut:


$username=″pelajar″
$count=1..50
foreach ($i dalam $count)
( New-AdUser -Name $username$i -Path $org -passThru )

Kami menjalankan skrip, dan 50 pengguna dengan nama student1-student50 dicipta dalam bahagian Students. Secara lalai, akaun dibuat dilumpuhkan, dan pengguna masih akan dipaksa untuk menghubungi anda untuk mengaktifkannya. Mari cuba elakkan perkara ini:

$org=″OU=Pelajar,DC=contoso,DC=com″
$username=″pelajar″
$count=1..50
foreach ($i dalam $count)

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

Di sini kami membuat akaun yang sudah aktif dan ditetapkan p@$$w0rd sebagai kata laluan lalai, dan juga menunjukkan untuk menukarnya pada kali pertama anda log masuk ke sistem. Untuk mengelakkan penghantaran kata laluan dalam teks yang jelas, kami menggunakan cmdlet ConvertTo-SecureString, yang menukar rentetan teks kepada format yang dilindungi

Sekarang mari kita jadikan skrip kita sedikit lebih fleksibel. Menggunakan cmdlet Baca-Hos mari buat skrip kami meminta nama dan bilangan pengguna:

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


$bilangan=1..$nombor
foreach ($i dalam $count)
( New-AdUser -Name $username$i -Path $org -Enabled $True -ChangePasswordAtLogon $true `

Akaun telah dibuat dan pengguna boleh log masuk dan bekerja. Kini mereka perlu dikonfigurasikan - ditambahkan pada kumpulan keselamatan, didaftarkan dalam direktori rumah, skrip log masuk, dsb. Anda boleh melakukan ini menggunakan templat. Ringkasnya, kami mencipta akaun templat, menyesuaikannya sepenuhnya, dan kemudian membuat bilangan salinan yang diperlukan daripadanya menggunakan parameter -Contohnya :

$template = Get-AdUser -Identity ″pelajar″

$username=Read-Host ″Masukkan nama″
$number=Read-Host ″Masukkan nombor″

$bilangan=1..$nombor
foreach ($i dalam $count)
( New-AdUser -Name $username$i -UserPrincipalName $username$i -Path $org -Instance `
$template -Enabled $True -ChangePasswordAtLogon $true `
-AccountPassword (ConvertTo-SecureString ″p@$$w0rd″ -AsPlainText -force) -passThru )

Cara lain untuk mengautomasikan penciptaan akaun ialah mengimportnya daripada fail CSV. Kaedah ini sesuai jika anda telah diberikan senarai pengguna, dan mereka perlu membuat akaun mengikut senarai ini. Sebagai peraturan, senarai sedemikian dibuat dalam Excel dalam bentuk jadual dengan lajur Nama, Jawatan, Jabatan, dll., sesuatu seperti ini:

Tugas kami adalah untuk menyimpannya dalam format CSV dan kemudian nyatakannya dalam skrip menggunakan cmdlet Import-CSV. Jika fail CSV anda mengandungi semua lajur yang diperlukan, maka Pengguna-ADU baharu akan mengaitkannya secara automatik dengan atribut pengguna yang betul:

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

Dengan cara ini anda boleh mengimport ratusan pengguna baharu dalam beberapa saat, tetapi terdapat masalah dalam kaedah ini:

  • Nama lajur sepatutnya sepenuhnya sepadan dengan nama atribut pengguna, contohnya Nama, Organisasi, Tajuk, jika tidak, tiada apa yang akan berfungsi. Senarai penuh atribut boleh dilihat.
  • Dalam jadual Semestinya anda mesti menyatakan SamAccountName, jika tidak, anda akan menerima ralat yang menyatakan bahawa akaun itu sudah wujud.
  • Jika atribut ditetapkan dalam susun atur Rusia, seperti dalam contoh kami, maka masalah dengan pengekodan mungkin timbul. Apa yang membantu saya menyelesaikan masalah ini ialah mengekstrak kandungan fail CSV menggunakan cmdlet Dapatkan-Kandungan dan menyimpannya ke fail CSV lain: Get-Content users.csv >> users1.csv. Selepas itu, semua atribut bahasa Rusia mula dipaparkan secara normal.

Kesimpulannya, beberapa perkara penting:

Untuk menjalankan cmdlet Pengguna-ADU baharu Anda mesti mengimport modul Active Directory untuk PowerShell dahulu. Ini dilakukan oleh satu pasukan Import-Modul ActiveDirectory, anda hanya boleh menampal baris ini ke dalam skrip . Pengecualian adalah apabila anda menjalankan skrip daripada Modul Direktori Aktif khas untuk snap-in Windows PowerShell.

Modul ActiveDirectory tersedia pada pelayan di bawah Kawalan Windows Pelayan 2008R2/2012, serta pada pekerja stesen Windows 7/8 s pakej yang dipasang pentadbiran RSAT.

Modul ActiveDirectory memerlukan Active Directory Web Service (ADWS), yang menyediakan antara muka web untuk mengakses perkhidmatan direktori. Secara lalai, perkhidmatan ini dipasang secara automatik apabila anda menambah peranan pelayan AD DS dan AD LDS pada pelayan yang menjalankan Windows Server 2008R2 dan yang lebih baru. Untuk Windows Server 2003\2008, perkhidmatan ini boleh dipasang secara berasingan dengan memuat turun

Skrip melalui semua pelayan dari Active Directory, melihat komposisi kumpulan tempatan Pentadbir dan menyimpan senarai ke fail. Akan berguna untuk mengekalkan keselamatan dalam persekitaran dengan jumlah yang besar pelayan.

Contoh skrip

Penerangan skrip

1 - 4 Kami mentakrifkan pembolehubah untuk kegunaan selanjutnya.
1 Laluan ke fail di mana hasilnya akan disimpan.
2 Bekas dalam Active Directory yang mengandungi akaun komputer pelayan.
3 Kami juga mencipta tatasusunan cincang. Dalam Powershell ini mesti dilakukan sebelum menggunakannya.
4 Buat pembolehubah kosong. Kami akan mengisinya dengan senarai pengguna yang menjadi ahli kumpulan Pentadbir.
6 - 21 Fungsi untuk mencari pengguna dalam kumpulan Pentadbir.
7 Nama pelayan akan dihantar ke fungsi. Kami akan menyimpannya dalam pembolehubah $strcomputer
8 - 12 Kami mencipta pengecualian untuk operasi yang dijalankan. Jika permintaan tidak dilengkapkan dengan betul, nama pelayan akan dipaparkan pada skrin.
9 Kami mengakses objek win32_groupuser dalam WMI dengan senarai kumpulan Windows.
11 Jika panggilan ke WMI gagal (paling kerap disebabkan RPC tidak tersedia), nama pelayan yang anda akses akan dipaparkan. masa ini rayuan sedang dijalankan.
13 Keadaan di mana kewujudan pembolehubah dengan senarai kumpulan yang diperolehi dalam baris 9 disemak
14 Kami mencipta pembolehubah yang akan menyertakan senarai pengguna kumpulan Pentadbir atau Pentadbir (pada pelayan dengan versi Bahasa Inggeris).
15 - 18 Kami mengalih keluar pengguna daripada kumpulan pentadbiran dan memadam maklumat perkhidmatan yang tidak diperlukan.
19 Fungsi ini mengembalikan senarai pengguna.
23 Kami mencipta pembolehubah dan meletakkan di dalamnya senarai komputer di mana kami akan mencari pentadbir. DALAM dalam contoh ini, ini adalah komputer daripada Active Directory.
24 - 29 Kami mengekstrak pelayan satu demi satu yang diperolehi dalam baris 23.
25 Kami menjalankan fungsi dan memberikannya nama pelayan. Hasil kerja ditulis kepada pembolehubah $UserList
26 Syarat menyemak kehadiran nilai dalam pembolehubah $UserList
27 Jika terdapat senarai pengguna, tambahkannya pada tatasusunan $AdminList
31 - 35 Kami pergi melalui tatasusunan $AdminList dan menambah pada senarai pelayan dan pentadbir untuk mereka.
32 Kami mencipta pembolehubah di mana kami menulis nama pelayan.
33 Kami mencipta pembolehubah di mana kami akan meletakkan senarai pengguna untuk pelayan dari baris 32.
34 Pembolehubah $ToCSV mengandungi baris untuk fail masa hadapan. Setiap baris ialah nama pelayan dan senarai pentadbir, dipisahkan oleh koma bertitik.
37 - 39 Kami menyemak kehadiran fail dalam sistem di mana kami ingin meletakkan hasil skrip. Jika fail itu wujud, padamkannya.
41 Kami mencipta fail muat naik dan meletakkan senarai pentadbir di dalamnya.