ローカルadminの一括パスワード変更方法について

Server側からバッチやスクリプトを使いパスワードを一括変更したいと思っています。
環境は
WindowsServer2003(AD環境)
クライアントOSはXP PRO
クライアント台数は200台前後

スクリプト等(WSH)で、外部テキスト(TXT)からホスト名を読み込み抽出し対象ホスト
に設定したいと思っております。

400ptずつ配分しますので、ソース付で回答願います。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/05/17 15:16:17
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:memo77 No.1

回答回数238ベストアンサー獲得回数20

ポイント500pt

こんな感じですかね。

すべての端末の電源が入っているとは限らないので、ログを取れるようにしてあります。

失敗しているものだけ再度リストにして流す必要があります。

また、パスワードを直接記述している以上、このスクリプトを見られることは深刻な脆弱性に繋がるのを理解して使ってください。

'【書換必須】コンピュータを列挙したファイルパス。ユーザーごとに改行。
strListPath = "C:\Documents and Settings\Administrator\デスクトップ\List.txt"
'【書換必須】結果を出力するログファイルパス。
stLogPath = "C:\Documents and Settings\Administrator\デスクトップ\Log.txt"
'【書換必須】指定したい管理者パスワード
strPWD  = "czBnkbe+47i"

Set fso = CreateObject( "Scripting.FileSystemObject" )
Set ts = fso.OpenTextFile( strListPath, 1 )
    lines = Split( ts.ReadAll, vbCrLf )
    ts.Close

set tsLog = fso.CreateTextFile(strLogPath,True)

On Error Resume Next
For i = 0 to Ubound(lines) - 1
    strComputer = lines(i)
    Set objUser = GetObject("WinNT://" & strComputer & "/Administrator, user")
    objUser.SetPassword strPWD
    objUser.SetInfo

    tsLog.WriteLine(strComputer & "," & Err.Number & ":" & Err.Description)
Next

tsLog.Close

Msgbox "Finish!"

疑問などありましたら、下記サイトで質問してくださっても結構です。

http://www31.atwiki.jp/memo77/

id:anim130M

成功はしてるのですが、結果表示の「Log.txt」には、

Err.Number:424

Err.Description:オブジェクトがありません。

っとすべてのホストに表示されてしまいます。

2008/05/14 12:39:44

その他の回答1件)

id:memo77 No.1

回答回数238ベストアンサー獲得回数20ここでベストアンサー

ポイント500pt

こんな感じですかね。

すべての端末の電源が入っているとは限らないので、ログを取れるようにしてあります。

失敗しているものだけ再度リストにして流す必要があります。

また、パスワードを直接記述している以上、このスクリプトを見られることは深刻な脆弱性に繋がるのを理解して使ってください。

'【書換必須】コンピュータを列挙したファイルパス。ユーザーごとに改行。
strListPath = "C:\Documents and Settings\Administrator\デスクトップ\List.txt"
'【書換必須】結果を出力するログファイルパス。
stLogPath = "C:\Documents and Settings\Administrator\デスクトップ\Log.txt"
'【書換必須】指定したい管理者パスワード
strPWD  = "czBnkbe+47i"

Set fso = CreateObject( "Scripting.FileSystemObject" )
Set ts = fso.OpenTextFile( strListPath, 1 )
    lines = Split( ts.ReadAll, vbCrLf )
    ts.Close

set tsLog = fso.CreateTextFile(strLogPath,True)

On Error Resume Next
For i = 0 to Ubound(lines) - 1
    strComputer = lines(i)
    Set objUser = GetObject("WinNT://" & strComputer & "/Administrator, user")
    objUser.SetPassword strPWD
    objUser.SetInfo

    tsLog.WriteLine(strComputer & "," & Err.Number & ":" & Err.Description)
Next

tsLog.Close

Msgbox "Finish!"

疑問などありましたら、下記サイトで質問してくださっても結構です。

http://www31.atwiki.jp/memo77/

id:anim130M

成功はしてるのですが、結果表示の「Log.txt」には、

Err.Number:424

Err.Description:オブジェクトがありません。

っとすべてのホストに表示されてしまいます。

2008/05/14 12:39:44
id:memo77 No.2

回答回数238ベストアンサー獲得回数20

ポイント10pt

コメント欄が空いていないので回答で。

エラーのクリアがコードから抜けてました。Nextの前の行に

    Err.Clear

と入れてください。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません