Selamat siang! Dalam artikel ini, saya ingin menjelaskan solusi praktis yang telah saya terapkan untuk mengotomatiskan satu tugas rutin baris kedua dukungan teknis dari satu perusahaan besar.
Kami memiliki dua domain AD yang tersebar secara geografis untuk 10.000 orang, sebuah solusi terapan untuk mengatur akses Web ke desktop jarak jauh melalui aplikasi RemoteApp dengan beberapa sistem informasi terintegrasi dan database yang tumbuh secara aktif, hingga 500 orang per bulan. Untuk ~ 24 per hari kerja, untuk ~ 3 orang per jam.
Kesimpulan pertama yang jelas dari data masukan adalah bahwa satu admin tidak dapat menangani pengguna sebanyak itu, ia harus memiliki hak untuk sakit / pergi berlibur tanpa melumpuhkan perusahaan. Dan latihan menunjukkan bahwa bahkan dua orang pun tidak dapat mengatasi.
Masalah kedua adalah identifikasi pribadi, misalnya, pada sumber daya file perusahaan, seperti yang sering terjadi, ada informasi yang tidak dimaksudkan untuk mengintip, dan karenanya, perlu untuk memeriksa setiap orang yang meminta akses untuk ditambahkan ke Active Directory dan memberikan grup akses tertentu. Sayangnya, tidak mungkin dilakukan tanpa birokrasi dalam menyelesaikan masalah ini. Prosedurnya bermuara pada pengajuan aplikasi kertas dalam bentuk yang paling standar, ditandatangani (lebih disukai elektronik) oleh kepala pemohon dan persetujuan dokumen ini oleh orang yang akrab dengan penandatangan secara pribadi.
Setelah persetujuan dari aplikasi standar, tetap melakukan sedikit, menambahkan orang ke AD, menetapkan grup akses yang diperlukan, dan menambahkan pelat untuk unggul. Poin terakhir mungkin tampak agak kuno, karena AD sendiri cukup mendukung audit perubahan, tetapi praktik saya menunjukkan bahwa poin ini tidak berlebihan dalam pergantian seperti itu, dan bahkan menyederhanakan proses menemukan penggaruk dalam kasus pembekalan, yang mana sering terjadi, berikut dari kesimpulan pertama ...
Tetapi prosesnya bisa sedikit otomatis dengan menggunakan beberapa skrip sederhana. Logikanya bermuara pada proses kebalikannya:
- Menyetujui standar akuntansi AD di perusahaan
- Kami meminta data pengguna dalam format yang seragam.

- Kami memasukkan data dasar ke dalam tabel, misalnya:
- Kami mengekspor dari Excel ke file CSV, halaman yang dibuat secara otomatis sesuai untuk entri otomatis ke dalam AD menggunakan skrip
- Kami mengekspor dan voila! Tetap mentransfer nama pengguna dan kata sandi ke pengguna.
Mungkin metode yang saya jelaskan tidak bisa disebut praktik terbaik, tetapi mereka memungkinkan dalam praktik untuk memecahkan masalah yang ada tanpa menulis sistem informasi terpisah dan membuat sejumlah besar integrasi.
Selanjutnya, saya akan menjelaskan beberapa poin teknis dan mempublikasikan skrip yang saya gunakan:
Beginilah tabel yang cocok untuk diimpor ke AD terlihat seperti:
Bagi saya, tabel ini dihasilkan secara otomatis dari yang sebelumnya, saya lampirkan sebuah contoh .
Anda perlu menyimpan tabel yang sesuai untuk diimpor dalam format CSV (dibatasi koma)
Menurut Anda, apa pembatasnya jika Anda membuka file yang dibuat dengan notepad? Salah. Seperti - ";"
Secara terpisah, dalam implementasi saya, saya harus memikirkan kolom transliterasi. Dalam standar yang kami setujui, beberapa bidang diisi dengan transliterasi sesuai dengan sampel yang disetujui, dan agar tidak melakukan ini setiap kali saya menggunakan skrip vba, ini dia:
Function TranslitText(RusText As String) As String
Dim RusAlphabet As Variant '
RusAlphabet = Array("-", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
Dim EngAlphabet As Variant '
EngAlphabet = Array("-", "a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "y", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", "sh", "sch", "", "y", "", "e", "yu", "ya", "A", "B", "V", "G", "D", "E", "Yo", "Zh", "Z", "I", "Y", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "Kh", "Ts", "Ch", "Sh", "Sch", "", "Y", "", "E", "Yu", "Ya")
Dim EngText As String, Letter As String, Flag As Boolean
For i = 1 To Len(RusText) '
Letter = Mid(RusText, i, 1)
Flag = 0
For j = 0 To 67 '
If RusAlphabet(j) = Letter Then ' ...
Flag = 1
If RusAlphabet(j) = Letter Then ' ( )
EngText = EngText & EngAlphabet(j) '...
Exit For
Else
EngText = EngText & UCase(EngAlphabet(j))
Exit For
End If
End If
Next j
If Flag = 0 Then EngText = EngText & Letter ' (, ..),
Next i
TranslitText = EngText
End Function
Jangan lakukan seperti yang saya lakukan, harap gunakan salah satu standar transliterasi yang ada dari tautan .
Skrip berikutnya yang ditempatkan dalam sebuah file dengan ekstensi .ps1 akan memungkinkan Anda dalam beberapa klik untuk melepaskan semua akun dari file yang dibuat pada langkah sebelumnya ke dalam AD, tidak peduli berapa banyak jumlahnya. Dan pada saat yang sama untuk menggantungkan grup iklan pada semua UZ yang dibuat.
Import-Module activedirectory
Import-Csv "C:\generated.csv" -Encoding default -Delimiter ';'| ForEach-Object {
New-ADUser -Server DOMEN.RU -Name $_.FirstName `
-DisplayName $_.DisplayName `
-GivenName $_.GivenName `
-Surname $_.LastName `
-Initials $_.Initials `
-OfficePhone $_.Phone `
-Description $_.Description `
-UserPrincipalName $_.UserPrincipalName `
-SamAccountName $_.samAccountName `
-Email $_.mail `
-Path "OU=TEST_OU,OU=Guest,OU=Users,OU=DOMEN,DC=DOMEN,DC=RU" `
-AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -force) -Enabled $true
Set-ADuser $_.samAccountName -ChangePasswordAtLogon $True
Add-AdGroupMember -Identity ad-group -Members $_.samAccountName
}