Saya perlu mendapatkan perubahan kata sandi terakhir untuk sekelompok akun di grup keamanan Direktori Aktif, dan saya merasa ini adalah sesuatu yang harus dilakukan PowerShell dengan baik.
Saat ini, saya sudah terjebak pada cara membaca atribut pwdLastSet dari akun AD yang saya lihat. Bahkan menjalankan sesuatu yang sederhana seperti ini:
[adsi] "LDAP://cn=user1,ou=Staff,ou=User Accounts,dc=ramalamadingdong,dc=net" | Format-List *
memberikan hasil untuk pwdLastSet yang muncul seperti ini:
pwdLastSet : {System.__ComObject}
Saya merasa saya melakukan ini dengan cara yang salah, jadi apa cara terbaik untuk melakukan query dan kemudian memformat output (nilainya didasarkan pada Windows Epoch dan tidak dapat dibaca oleh manusia) dari atribut pwdLastSet?
Commandlets AD bawaan yang datang dengan Windows 7 / Windows Server 2008 R2 sekarang dapat melakukan ini cukup sederhana. Pada Windows 7 dari prompt Powershell:
Atribut "PasswordLastSet" tampaknya merupakan versi terjemahan dari atribut "pwdLastSet" yang sebenarnya.
sumber
Ada cara yang lebih mudah.
Objek ADSI memiliki metode yang disebut ConvertLargeIntegerToInt64. Perhatikan bahwa ini adalah metode objek ADSI dan bukan Sistem .__ Comobject yang dikembalikan dengan menanyakan nilai attibute timestamp, jadi $ user.pwdLastSet.value.ConvertLargeIntegerToInt64 () tidak akan berfungsi. Anda perlu menjalankannya sebagai berikut:
Itu akan memberi Anda cap waktu LDAP, yang perlu dikonversi ke tanggal yang dapat dibaca, seperti dijelaskan oleh Bratch di atas. Ini akan berfungsi untuk nilai atribut timestamp apa pun yang dikembalikan oleh penyedia ADSI, dan metode ConvertLargeIntegerToInt64 (saya percaya) diekspos oleh objek apa pun yang mewakili entri direktori.
Menyatukan semuanya, berikut adalah cara Anda mendapatkan tanggal saat kata sandi terakhir ditetapkan:
sumber
Berikut adalah cara mudah untuk menampilkan Komputer AD:
sumber
Instal: http://www.quest.com/powershell/activeroles-server.aspx
buka PowerShell
Jalankan perintah berikut:
add-PSSnapin quest.activeroles.admanagement
Get-QADUser | ft displayname, PasswordLastSet
Perintah pertama memuat snapin pencarian yang baru saja Anda unduh. Anda tidak perlu melakukan ini jika Anda menggunakan pintasan untuk mencari di startmenu Anda. Perintah kedua mendapatkan daftar semua dan pengguna dan waktu di sana kata sandi terakhir diubah.
sumber
Tambahkan fungsi ConvertADSLargeInteger ke skrip Anda, Anda bisa mendapatkannya di sini:
PowerShell: Konversi Active Directory IADSLargeInteger ke System.Int64
Begini cara Anda menggunakannya:
sumber
mungkin Anda harus melihat menggunakan properti passwordLastChanged. Lihat di sini untuk info lebih lanjut: http://www.microsoft.com/technet/scriptcenter/resources/qanda/aug06/hey0801.mspx
sumber