Saya bekerja dengan skrip Powershell yang menambahkan tugas terjadwal ke sistem di domain kami. Ketika saya menjalankan skrip ini, saya akan diminta kata sandi. Saya terkadang lupa kata sandi dan proses dimulai, yang mengunci akun saya. Apakah ada cara untuk memverifikasi kredensial saya untuk memastikan bahwa apa yang saya ketikkan akan divalidasi dengan Domain?
Saya ingin mencari cara untuk menanyakan pengontrol Domain. Saya telah melakukan beberapa pencarian Google dan saya harus dapat melakukan query dan trap WMI untuk kesalahan. Saya ingin menghindari gaya validasi itu jika memungkinkan.
Ada ide? Terima kasih sebelumnya.
domain
powershell
password
Doltknuckle
sumber
sumber
AccountManagement.PrincipalContext.ValidateCredentials()
tidak (jika Anda memberikan kata sandi untuk keamanan)?ActiveDirectory
modul untuk melakukan permintaan LDAP Anda?Inilah yang saya gunakan di masa lalu; seharusnya berfungsi untuk akun mesin lokal dan 'direktori aplikasi', tetapi sejauh ini saya hanya menggunakannya dengan kredensial AD:
sumber
$context
sebagai argumen kepada konstruktor. PowerShell akan secara otomatis mengonversi string menjadi enum. Lebih baik lagi, buat saja[System.DirectoryServices.AccountManagement.ContextType]
jenisnya$context
. Juga, mengapa Anda menggunakanbegin
dan diprocess
sini? Pipa sepertinya cara aneh untuk menggunakan fungsi ini.$context
parameter[System.DirectoryServices.AccountManagement.ContextType]
bukanlah suatu pilihan, karena rakitan yang berisi tidak dimuat sampai badan fungsi dijalankan; menggunakan pipa sangat membantu jika Anda ingin memvalidasi banyak kredensial.Add-Type
panggilan tidak dapat dipindahkan di luar fungsi, sebelum definisi dijalankan. Saya ragu untuk memilikiAdd-Type
panggilan tanpa syarat berjalan berulang kali di dalam fungsi meskipun sudah dimuat, sih. Memvalidasi banyak kredensial secara bersamaan tampaknya merupakan situasi aneh di tempat pertama. Dalam kasus langka itu yang Anda inginkan, Anda dapat dengan mudah membungkus panggilanForEach-Object
, jadi saya tidak melihat alasan untuk menyulitkan fungsi dengannya.Saya menemukan posting ini bermanfaat namun tidak menyelesaikan masalah saya karena saya mencoba menjalankannya dari skrip dengan akun admin lokal yang masuk. Tampaknya tidak berfungsi sebagai admin lokal (hanya ketika masuk sebagai pengguna domain).
Namun akhirnya saya berhasil mendapatkan solusi yang berhasil dan karena begitu banyak masalah, saya pikir saya akan membagikannya di sini sehingga orang lain yang memiliki masalah ini akan memiliki jawabannya di sini. Keduanya menjawab pada satu halaman tergantung pada kebutuhan Anda.
Perhatikan bahwa lebih tinggi di scipt (tidak termasuk di sini karena ini hanya bagian get-kredensial) powergui diinstal dan merupakan persyaratan untuk kode ini di bawah ini (serta baris "Tambahkan-PSSnapin Quest.ActiveRoles.ADManagement"). Tidak yakin apa yang dilakukan powergui itu berbeda tetapi tidak ada orang lain yang bisa memberi tahu saya dan itu berfungsi.
Ganti nama domain Anda sendiri di bagian "domain_name".
sumber
(belum) Versi lain:
dan
sumber