6

Windows 2008 サーバーで複数のユーザーを作成し、パスワードの有効期限の値を「なし」に変更する必要があります。これらはローカル (AD ではない) ユーザーになります。「ネットユーザー」を使用してそれらを作成できます。パスの有効期限を変更すると、私が殺されます。「net user username」を実行すると、フィールドとその値がリストされますが、それを変更するためのスイッチ (少なくともヘルプ ファイルが参照するスイッチはありません) はありません。 、ただし、このソリューションは Windows にネイティブである必要があります (Powershell を使用するのが理想的です)。どんな助けでも大歓迎です。

アップデート

Powershell でこれを行う方法がわかったら、ここに投稿します。私は約束を守ります。

Get-WmiObject -Class Win32_UserAccount -Filter "name = 'steve'" | Set-WmiInstance -Argument @{PasswordExpires = 0}

これはブール値なので、パスワードを期限切れにするように設定したい場合は、0 を 1 に変更するだけです。これは単純な点で私には美しく、他の WMI オブジェクトを更新するこのメソッドをテストしましたが、毎回動作します。

4

6 に答える 6

6

簡単な解決策は、次のコマンドを発行するバッチファイルを作成することです。

net accounts /maxpwage:unlimited

ただし、これにより、作成した新しいアカウントだけでなく、ローカルマシン上のすべてのアカウントの最大パスワード有効期間が無制限に設定されます。


より細かいレベルの制御(つまり、個々のユーザーのパスワード有効期限値を設定する機能)が必要な場合は、もう少し複雑なものが必要になります。Scripting Guysは、パスワードが期限切れにならないようにローカルユーザーアカウントを変更するVBScriptの例を共有しています。

Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 

strDomainOrWorkgroup = "Fabrikam" 
strComputer = "atl-win2k-01" 
strUser = "KenMeyer" 

Set objUser = GetObject("WinNT://" & strDomainOrWorkgroup & "/" & _ 
    strComputer & "/" & strUser & ",User") 

objUserFlags = objUser.Get("UserFlags") 
objPasswordExpirationFlag = objUserFlags OR ADS_UF_DONT_EXPIRE_PASSWD 
objUser.Put "userFlags", objPasswordExpirationFlag  
objUser.SetInfo 

これを変更して、選択した任意のユーザーで機能するようにしたり、新しいユーザーを作成したりするのは簡単です。


最後に、PowerShellに移植できるはずのC#の例を示します。私はPSの専門家ではありませんが、.NET Frameworkを使用していることを考えると、上記のコードからいくつかのアイデアが得られるはずです。

于 2011-01-28T04:41:56.673 に答える
1

このテクネットスレッドから。

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

必要に応じて、コンピュータ名の前にドメインを追加できます。

于 2011-01-28T22:09:52.570 に答える
1

ローカル ユーザーの設定パスワードは無期限です。他のフラグは変更しないでください:

$ADS_UF_DONT_EXPIRE_PASSWD = 0x10000

$username = 'user'
$user = [adsi] "WinNT://./$username"
$user.UserFlags = $user.UserFlags[0] -bor $ADS_UF_DONT_EXPIRE_PASSWD
$user.SetInfo()

ADS_USER_FLAG_ENUM 列挙

于 2016-12-07T11:52:20.020 に答える
0

他の解決策はうまくいかなかったので、ジェイソンの解決策を次のように調整しました。

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

userflags 値は、ユーザーに対してチェックされるチェックボックスを決定します。これは、基本的な「パスワードは期限切れにならない」値です。数値がどのように組み合わされるかを理解できないようです。以下は役立つかもしれませんが、それによると、意味をなさない予約値が有効になっています。

http://www.selfadsi.org/ads-attributes/user-userAccountControl.htm

代わりに、テスト ボックスで必要なオプションを有効にして、値を取得しました。私が推測する必要なものを決定する最も信頼できる手段です。

于 2015-01-22T15:25:31.657 に答える