Menghasilkan kata sandi acak dengan PowerShell

Saat membuat akun pengguna di Direktori Aktif, administrator biasanya menetapkan kata sandi awal unik untuk setiap akun, yang kemudian dikomunikasikan kepada pengguna (biasanya saat pertama kali pengguna log on, mereka perlu mengubah kata sandi ini menggunakan opsi "Pengguna harus mengubah kata sandi pada log masuk berikutnya" dari atribut AD userAccountControl AD). Karena Anda tidak ingin membuat kata sandi acak baru untuk pengguna setiap kali, atau Anda menggunakan skrip PowerShell untuk membuat akun pengguna dalam AD, Anda dapat mengotomatiskan pembuatan kata sandi pengguna unik menggunakan PowerShell.

Untuk menghasilkan kata sandi, Anda dapat menggunakan metode ini Buat kata sandi dari kelas .Net dari System.Web.Security.Membership. Kami menghasilkan kata sandi yang kompleks dengan perintah:

Add-Type -AssemblyName System.Web
[System.Web.Security.Membership] :: GeneratePassword (10.2)

Metode GeneratePassword memungkinkan menghasilkan kata sandi hingga 128 karakter. Metode ini mengambil dua parameter sebagai input - panjang kata sandi (dalam kasus saya 10 karakter) dan jumlah minimum karakter khusus non-alfanumerik, seperti !, -, $, &, @, #,%, dll. (2 karakter khusus). Seperti yang Anda lihat, dalam kasus saya kata sandi dibuat tm-qZl! uQv sesuai dengan argumen yang diberikan.

Tidak diinginkan untuk menggunakan lebih dari satu atau dua karakter khusus dalam kata sandi, jika tidak ketikkan kata sandi tersebut _ ! $. R% 2 * [ pengguna tidak realistis.

Oleh karena itu, saat membuat pengguna baru menggunakan cmdlet PowerShell, New-ADUser dengan kata sandi unik dapat digunakan dengan perintah berikut:

Add-Type -AssemblyName System.Web
Baru-ADUser -Nama "Anton Semenov" -GivenName "Semenov" -Nama "Anton" -SamAccountName "asemenov" -UserPrincipalName "[email protected]" -Path "OU = Pengguna, OU = MSK, DC = winitpro, DC = com "-AccountPassword ([System.Web.Security.Membership] :: GeneratePassword (10,2)) -Diaktifkan $ true

Anda juga dapat menggunakan metode GeneratePassword saat mengatur ulang kata sandi pengguna Active Directory..

Jika organisasi Anda menggunakan kebijakan kata sandi yang kuat, dalam beberapa kasus kata sandi yang dihasilkan oleh metode GeneratePassword mungkin tidak memenuhi persyaratan kebijakan kata sandi domain Anda. Sebelum Anda memberikan kata sandi kepada pengguna, Anda dapat memverifikasi bahwa kata sandi tersebut mematuhi kebijakan kompleksitas kata sandi. Tentu saja, tidak masuk akal untuk memeriksanya untuk panjang dan tidak adanya pengguna yang masuk dalam kata sandi. Anda dapat memverifikasi bahwa kompleksitas kata sandi memenuhi setidaknya 3 persyaratan kebijakan. Kata sandi harus memenuhi persyaratan kompleksitas (kata sandi harus mengandung 3 jenis karakter dari daftar: angka, karakter huruf kecil, karakter huruf besar dan karakter khusus). Jika kata sandi tidak lulus verifikasi, Anda harus membuatnya lagi.

Saya mendapatkan fungsi PowerShell yang menghasilkan kata sandi baru dan memeriksa kepatuhan dengan persyaratan kompleksitas:

Fungsi Menghasilkan-Kompleks-Domain-Kata Sandi ([Parameter (Wajib = $ true)] [int] $ PassLenght

Add-Type -AssemblyName System.Web
$ requirementPassed = $ false
lakukan
$ newPassword = [System.Web.Security.Membership] :: GeneratePassword ($ PassLenght, 1)
If (($ newPassword -cmatch "[A-Z \ p Lu \ s]") '
-dan ($ newPassword -cmatch "[a-z \ p Ll \ s]") '
-dan ($ newPassword -match "[\ d]") '
-dan ($ newPassword -match "[^ \ w]")
)

$ requirementPassed = $ Benar

While ($ requirementPassed -eq $ false)
kembalikan $ newPassword

Untuk menghasilkan kata sandi 4 karakter dengan setidaknya satu karakter khusus, jalankan perintah:

Generate-Complex-Domain-Password (4)

Skrip ini akan selalu menghasilkan kata sandi yang cocok dengan kriteria kompleksitas domain..