Kami mengotomatiskan pemeliharaan sejumlah besar pengguna di AD

Kami mengotomatiskan pemeliharaan sejumlah besar pengguna di AD:



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:



  1. Menyetujui standar akuntansi AD di perusahaan
  2. Kami meminta data pengguna dalam format yang seragam.



    gambar
  3. Kami memasukkan data dasar ke dalam tabel, misalnya:
  4. Kami mengekspor dari Excel ke file CSV, halaman yang dibuat secara otomatis sesuai untuk entri otomatis ke dalam AD menggunakan skrip
  5. 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:



gambar



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)



gambar



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
} 
      
      






All Articles