6
votes

Comment écrire un script pour modifier les valeurs d'expiration du mot de passe des utilisateurs sur un serveur Windows?

Je dois créer plusieurs utilisateurs sur les serveurs Windows 2008 et modifier la valeur d'expiration du mot de passe sur " jamais ". Ce seront des utilisateurs locaux (non ad). Je peux les créer en utilisant " utilisateur net ", il modifie la presse d'expiration qui me tue. Si je fais un nom d'utilisateur " net utilisateur ", il répertorie le champ et sa valeur, mais il n'y a pas de commutateur (au moins pas un que les références de fichiers d'aide) pour le modifier et la plupart des solutions I SAID Online a suggéré d'installer des outils 3ème partie, mais cette solution doit être originaire de Windows (idéalement à l'aide de PowerShell). Toute aide est appréciée.

mise à jour

J'ai dit que si je pensais comment faire cela dans PowerShell, je le posterais ici, et je suis un homme de la Parole.

get-wmiobject -class win32_useraccount -filter "nom = 'steve'" | Set-WMIInstance -Argument @ {PasswordExpires = 0}

Ceci est une valeur booléenne, donc si vous souhaitez définir un mot de passe pour expirer, changez de 0 à 1. Ceci est beau pour moi dans sa simplicité et j'ai testé cette méthode mettant à jour les autres objets WMI et cela fonctionne à chaque fois.


2 commentaires

Avez-vous besoin d'un script pour le faire ou avez-vous juste besoin de le faire une fois?


Ceci est une question parfaitement valable et vous envisagez de le faire avec un script, serait absurde de migrer vers Super User. J'ai modifié un peu le titre pour vous aider à rendre votre question plus claire. +1 de moi.


6 Réponses :


6
votes

La solution simple consiste à créer un fichier de commandes qui émet la commande suivante: xxx

Cependant, ce qui définira l'âge de mot de passe maximum pour tous les comptes sur le Machine locale à illimitée, pas seulement les nouveaux comptes que vous avez créés.


Si vous avez besoin d'un niveau de contrôle plus fin (c'est-à-dire la possibilité de définir les valeurs d'expiration du mot de passe pour les utilisateurs individuels), vous aurez besoin de quelque chose d'un peu plus compliqué. Les gars de script Partager un exemple d'un VBScript qui sera Modifier un compte d'utilisateur local de sorte que son mot de passe n'expire jamais: xxx

Il serait facile de modifier cela pour fonctionner pour tout utilisateur de votre choix, ou même pour créer un nouvel utilisateur. .


Enfin, Voici un exemple en C # , que vous devriez être capable de porter à PowerShell. Je ne suis pas une grande partie d'un expert en PS, mais envisagez-le d'utiliser le document .NET, le code ci-dessus devrait vous donner quelques idées.


1 commentaires

Thx, je vais regarder ces solutions. Ceci est pour un script, j'essaie d'automatiser complètement la configuration du serveur d'applications pour une webfarm, et il y a quelques morceaux que je n'ai pas été en mesure de déterminer comment facilement script (comme celui-ci) ... Si je figure Comment convertir le C # en PowerShell, je posterai ici aussi (ces scripts sont tous écrits dans PowerShell). Thx encore, fyi j'aime les gars de script ...



1
votes

de Ce fil de la technique .

$computer = $env:Computername
$account = ([adsi]"WinNT://$computer/TestAccount")
$account.PasswordExpired = 1
$account.psbase.commitchanges()


2 commentaires

Agréable. Je n'utilise pas WMI tout cela beaucoup, alors je ne pensais pas à regarder là-bas.


Vous avez oublié de mentionner ... votre script ci-dessus définit le drapeau expiré actuel, pas le drapeau WiLLEXPIRE. Mais thx pour l'aide quand même ...



0
votes

Les autres solutions ne fonctionnaient pas pour moi, donc j'ai modifié la solution de Jason à:

$svrname = $env:computername
$user = ([adsi]"WinNT://$svrname/Administrator")
$user.userflags = 66049
$user.psbase.commitchanges()


0 commentaires

0
votes

J'ai pris la solution de Bagel mortel et cela n'a pas fonctionné, jusqu'à ce que je fasse un petit changement. Voir ci-dessous: XXX


0 commentaires

1
votes

SET Mot de passe n'expire jamais pour l'utilisateur local. Ne changez pas d'autres indicateurs: xxx

Ads_user_flag_enum Enumération


0 commentaires

1
votes

fonctionne pour moi:

wmic userAccount où "nom =" ftpuser "" Set PasswordExpireses = False

remplacez ftpuser avec nom d'utilisateur correct


0 commentaires