J'ai un script qui crée un utilisateur et attribue le mot de passe et l'utilisateur à un groupe, mais j'ai besoin d'obtenir 2 cases à cocher cochées - "L'utilisateur ne peut pas changer de mot de passe" et "mot de passe n'expire jamais" mais pour la vie de moi i Impossible de savoir comment faire cela.
Mon script jusqu'à présent, c'est ceci: - p> qui fonctionne et fait ce qu'il devrait faire, mais que quelqu'un sache, mais que quelqu'un sache comment je peux définir ces 2 cocher les cases?
Différents threads suggèrent quelque chose de similaire à Votre conseil apprécié P> Paul p> p> set-aduser -cannotchangePassword: $ true code> mais je n'utilise pas Active Directory et cela ne fonctionne pas. P>
3 Réponses :
Utilisez WMI pour obtenir le compte d'utilisateur:
# Use this filter so WMI doesn't spend forever talking to domain controllers.
$user = Get-WmiObject Win32_UserAccount -Filter ("Domain='{0}' and Name='{1}'" -f $env:ComputerName,$Username)
$user.PasswordChangeable = $false
$user.PasswordExpires = $false
$user.Put()
Je reçois les erreurs suivantes lors de l'ajout de ce ... Propriété 'PasswordBangableable' ne peut pas être trouvé sur cet objet; Assurez-vous qu'il existe et est réglable. Le «mot de passe» de la propriété est introuvable sur cet objet; Assurez-vous qu'il existe et est réglable. Vous ne pouvez pas appeler une méthode sur une expression de valeur nulle. + $ utilisateur.put <<<< ()
Pass $ utilisateur code> à Get-Member code> et voir quelles propriétés il a, par exemple. $ utilisateur | Get-Member Code>.
Je reçois "Aucun objet n'a été spécifié à la cmdlet Get-Member". Comme vous pouvez probablement dire que je suis très nouveau à PowerShell alors allez facilement :)
Ensuite, il ressemble à get-wmiobject code> ne renvoie pas d'utilisateur. Est-ce que l'utilisateur existe? Est-ce local? Que définissez-vous le nom d'utilisateur $ code> variable aussi?
Définissez la propriété Ajoutez les valeurs des drapeaux que vous voulez (normal_account = 512, passwd_cant_change = 64, dont_expire_password = 65536) Pour un total de 66112) et définissez la propriété sur ce numéro: P> $obUser.useraccountcontrol = 66112
J'obtiens l'erreur suivante: E: \ domaines \ ignite.flinthosts.co.uk \ wwwroot \ domaines \ processus \ domaines> powershell.e xe -noexit e: \ processus \ domain \ createuser.ps1 ne peut pas définir la propriété de valeur Pour objet psmemberinfo objet de type "system.management.automation.psmethod". À E: \ Processes \ Domaine \ CreateUser.ps1: 24 Char: 10 + $ OBJUSER. <<<< userAccountControl = 66112 + CatégorieInfo: InvalidOperation: (:) [], RunTimeException + PullaliedErrorId: PropertyAsInmentException
J'ai compris ce matin - $ objuser.userflags = 64 + 65536 # ads_uf_passwd_cant_change + ads_uf_dont_expire_passwd
Je l'ai compris ce matin: -
$objUser.UserFlags = 64 + 65536 # ADS_UF_PASSWD_CANT_CHANGE + ADS_UF_DONT_EXPIRE_PASSWD
Pas exactement évident, c'est ça!