- ベストアンサー
WMIを利用してWindowsのWSHでパスワードを無期限にする方法
- 現在、WindowsのWSHのWMIを利用して、パスワードが無期限ではないユーザーを無期限にしようと思っています。
- ソースコードが正しく走るのは確認が取れているが、こちら側の環境で走らないことが問題となっています。
- 逆にスタンドアロンの環境でもいいので、どのようにして走らせることができるのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ローカルの全ユーザーのパスワードを無期限にします。 --- Option Explicit Const UF_DONT_EXPIRE_PASSWD = &H10000 Dim WshShell Dim strEnvDomain, strInfo Dim objContainer, adsObject Dim intUserFlags, intNewFlags Set WshShell = CreateObject("WScript.Shell") strEnvDomain = WshShell.ExpandEnvironmentStrings("%USERDOMAIN%") On Error Resume Next Set objContainer = GetObject("WinNT://" & strEnvDomain ) If Err.Number <> 0 Then WScript.Echo "USERDOMAIN: " & vbTab & "接続できません" WScript.Quit End If On Error Goto 0 objContainer.GetInfo For Each adsObject In objContainer If adsObject.Class = "User" Then intUserFlags = adsObject.Get("userFlags") If Not intUserFlags And UF_DONT_EXPIRE_PASSWD Then intNewFlags = intUserFlags Or UF_DONT_EXPIRE_PASSWD adsObject.Put "userFlags", intNewFlags adsObject.SetInfo ' WScript.Echo adsObject.Name End If End If Next WScript.Echo "End" ---
その他の回答 (1)
- junkUser
- ベストアンサー率56% (218/384)
また来ました。 ipconfig /all でDCのDNSサーバを参照していますか? これが正しくない場合は、LDAPで接続できないので別の方法で接続する必要があります。 このコードはローカルユーザー列挙するスクリプトです。 以下のコードでつながりますか? 最初の30ユーザーを表示するようにしていますが、この中にパスワードを無期限にしたいユーザーは含まれますか? --- Option Explicit Const LIST_LIMIT = 30 Dim WshShell Dim strEnvDomain, strInfo, counter Dim objContainer, adsObject Set WshShell = CreateObject("WScript.Shell") strEnvDomain = WshShell.ExpandEnvironmentStrings("%USERDOMAIN%") On Error Resume Next Set objContainer = GetObject("WinNT://" & strEnvDomain ) If Err.Number <> 0 Then WScript.Echo "USERDOMAIN: " & vbTab & "接続できません" WScript.Quit End If On Error Goto 0 strInfo = "" counter = 0 objContainer.GetInfo For Each adsObject In objContainer If adsObject.Class = "User" Then strInfo = strInfo & vbNewLine & adsObject.Name counter = counter + 1 If counter >= LIST_LIMIT Then Exit For End If Next WScript.Echo strInfo ---
お礼
↑間違いました。ドメインではなくユーザーの追加です。 何度も申し訳ありません。
補足
回答ありがとうございます。 細かなお話をするのを忘れていました。 話をまとめますと サーバーを立てようとしてWIN2000サーバーをインストールしてそのときに WINにドメインを追加するのですが、そのときドメイン数が10~20ぐらいあって初期設定で無期限にチェックが入っていないため、手間がかかるのでWSHのWMIを使いたいということです。 そのため、ActiveDirectoryなどは利用していなく、スタンドアロン環境で、ただ、無期限チェックボックスにチェックをしたいということです。 途中でお話すればよかったのですが、すぐできると思っていたのでお話できませんでした。どうもすみません。 ↑のようにスタンドアロン環境のADに参加しないWin2000サーバーです。 以上よろしくお願いします。
お礼
無事解決しました。 何度も丁寧に回答いただきました。 これでめどが立ちそうです。 ありがとうございました。
補足
返答ありがとうございます。 ↑スクリプトで無事走りました。 何度もすみません。詳細を話さなかったため手間取って申し訳ありませんでした。 本当に何度もありがとうございました。