• 締切済み

アクティブディレクトリ登録ユーザーのパスワード失効日について

ADに登録されているユーザーアカウント一覧を取得し、その中から失効一ヶ月前のものだけをリストアップする方法はありませんか? net userコマンドで1アカウントずつ調べるには量が多すぎるためできそうにありません。 検索サイトで一通り調べてもみましたが、それらしい情報にたどり着けませんでした。 そこで、このサイトに投稿したのですが、何かよいアイディアがあれば教えていただけないでしょうか。 よろしくお願いします。

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

EXCEL等、表計算ソフトはお手元にありますか?以下、EXCELとして進めます。 第一段階で使用するのはEXCEL、メモ帳、エクスプローラです。 test1.txt をEXCELで開いてください。「ユーザ名だけ」が列Aに出る予定。うまく行きますね? おっと、ユーザ名は一行一件で改行、で良いでしょうか?例としては3ユーザとしますよ。 username1<改行> username2<改行> username3<改行> みたいな感じ。 次にセルB1に、式[="net user " & A1 & " >> C:\RESULT.txt"]を入力し確定。セルB1が[net user username1 >> C:\RESULT.txt]になります。 セルB1を囲む罫線の右下隅が■になってるので、■をマウスポインタでダブルクリック。これでユーザ名すべての行の列B(B1~B3)に式がコピーされます。 そのまま(セルB1~セルB<データ行数、ここではB3>が選択された状態)で、Ctrl+Cキーを押下。目には見えませんが「クリップボード」にコピーされます。 ここでメモ帳を開いてください。開いたらCtrl+Vで貼り付け。以下のような値になる筈。 net user username1 >> C:\RESULT.txt net user username2 >> C:\RESULT.txt net user username3 >> C:\RESULT.txt メモ帳の内容を、「名前を付けて保存」で保存。 名前を "C:\ExecBatch.cmd" とでもして、保存してください。必ず""で囲むこと。 保存したらメモ帳は閉じてください。 エクスプローラで、C:\に作成された ExecBatch.cmd をダブルクリックで起動。コマンドプロンプトが開き実行される筈。止まったら[×]で閉じてください。 結果は、C:\RESULT.txt にリダイレクトされている筈。メモ帳で開いて確認してください。 username1からusername3までの3アカウント情報が作成されていたら第一段階は成功。 EXCELも閉じてOKです。保存はしてもしなくても、適宜判断ください。 第二段階で FINDを使用 と書きましたが、RESULT.txtのまま、ACCESSなどのDBか、EXCELで一気に取り込んでもOKです。 EXCELでオートフィルタを利用した方が簡単かも。

sane53
質問者

お礼

連絡が遅くなり申し訳ありません・・・ 無事抽出することができましたのでご報告します。 いろいろアドバイスしていただき、ありがとうございました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> アイディアがあれば ということで。 > 量が多すぎるためできそうにありません。 が何万件なのか、にもよりますけどね。 【第一段階】 「net userコマンドで1アカウントごとの情報を取得し、リダイレクトでファイル化する」を、全ユーザ数繰り返すバッチ処理を作成する。 リダイレクトのファイルは同じものをAppendで使用。 【第二段階】 【第一段階】のリダイレクトで作成されたファイルはテキストファイルなので、FINDコマンドで、/nオプションを指定した上で「ユーザー名」を含む行と「パスワード有効期間」を含む行を抽出する。 (別々のファイルとすること) 【第三段階】 【第二段階】で抽出されたファイルをそれぞれDB化する。(EXCELでもOK) /nで取得した行番号順にソートされているが、(オートナンバー等で)連番を付与する。 (「ユーザー名」も「パスワード有効期間」もそれぞれ1~レコード数最大値までとなるように) パスワード有効期間の範囲を指定すれば「連番」が明らかになるので、「ユーザー名」の連番が一致するものをリスト化すれば、目的のデータが得られる。 ではいかがでしょうか?

sane53
質問者

補足

早速のご回答、ありがとうございます。 【第一段階】のとおり全ユーザーリストを出力するため  for /f %%a in (c:\test.txt) do net user %%a >> test1.txt を実行しているのですがまったく出力されませんでした。 そこで、echoをonにしたところ C:\net user sasaki 1>>test1.txt といった具合にコマンドプロンプトに表示されていました。 何が原因で出力されていないのか、私には見当がつきません・・・。 ですので、よろしければどこか間違っている部分があればご指摘いただけませんでしょうか。 ※test.txtにはnet userで出力したアカウント名が記載されています。  for /f %%a in (c:\test.txt) do net user %%aのコマンドのみを実行した場合は、正常にユーザー情報の詳細が表示されました。 以上、よろしくお願いいたします。

関連するQ&A