Kicekpicek's online place » Komputery i Internet, Windows Server 2008 » Dodawanie użytkowników z odpowiednimi parametrami przez PowerShell
Dodawanie użytkowników z odpowiednimi parametrami przez PowerShell
Ostatnio przyszło mi postawić stronę internetową, która udostępnia interfejs do tego, aby dodać użytkownika do Active Directory, wrzucić do odpowiedniego (wcześniej ustalonego) kontenera OU, włączyć konto i uniemożliwić zmianę hasła użytkownikowi.
Skrypt, jaki to umożliwia (bazujący na cmdletach Quest):
Add-PSSnapin Quest.ActiveRoles.ADManagement
New-QADUser -name NAZWAUSERA -ParentContainer ‘CN=Users,DC=moja,DC=domena,DC=pl’ -samAccountName NAZWAUSERA -UserPrincipalName NAZWAUSERA -UserPassword ‘HASŁOUSERA’ | Enable-QADUser | Set-QADUser -PasswordNeverExpires $true -UserMustChangePassword $false | Add-QADPermission -Account SELF,Everyone -ExtendedRight "User-Change-Password" -Deny -ApplyTo ThisObjectOnly
Takie wpisy tworzą użytkownika NAZWAUSERA z hasłem HASŁOUSERA, włączają to konto oraz wyłączają możliwość zmiany hasła, ustawiając hasło na trwałe (niewygasające).
Do zmiany hasła użytkownik dostaje inny interfejs, gdzie wpisuje tylko swój login i nowe hasło. Skrypt “z tyłu”:
Add-PSSnapin Quest.ActiveRoles.ADManagement
Get-QADUser -sAMAccountName ‘NAZWAUSERA‘ | Set-QADUser -userPassword ‘HASŁOUSERA‘
W moim przypadku inny mechanizm chroni dostęp do tej witryny (wcześniej) – dla użytkownika pojawia się tylko miejsce na wpisanie nowego hasła.
Co, jeśli potrzeba zresetować hasła wszystkim w ramach danego OU? Zresetować – ustawić to samo dla wszystkich i wymusić zmianę przy najbliższym logowaniu albo tylko wymusić zmianę przy najbliższej okazji?
Wykorzystując cmdlety Quest:
Add-PSSnapin Quest.ActiveRoles.ADManagement
$OU = "DOMENA.COM/OUZmianyHasla"
get-QADUser -SearchRoot $OU | set-QADUser -userpassword "tYmcz4sow3Has!0"
ForEach-Object { get-QADUser -searchroot $OU | Set-QADUser -UserMustChangePassword $true}
Powyższe linie w PowerShell: aktywują cmdlety Quest, ustawiają zmienną OU, wszystkim użytkownikom z OU zmieniają hasło a następnie wymuszają zmianę hasła przy najbliższym logowaniu.
Jeśli z jakichś powodów musimy wymusić tylko zmianę haseł, z powyższego usuwamy linię trzecią.
Bez wykorzystania cmdletów Quest, za to w CMD a nie w powershell:
dsquery user OU=OUZmianyHasla,DC=DOMENA,DC=COM | dsmod user -pwd tYmcz4sow3Has!0 -mustchpwd yes
Na podstawie:
http://wss.pl/frmThread.aspx?tid=111070&pid=616149#616149
+ Własna walka (zakładanie i zmiana hasła pojedynczej osoby)
Filed under: Komputery i Internet, Windows Server 2008 · Tags: Active Directory, PowerShell
warto zanaczyc, ze samAccountName i UPN nie musza byc takie same ;) szczegolnie w srodowiskach wielodomeowych :P
dodatkowo – dsget/dsquery z pipem do dsmod user zrobia to samo bez PS :)
Jest napisane “Bez wykorzystania cmdletów Quest, za to w CMD a nie w powershell:” ;)