• ベストアンサー

VBScriptで、ローカルに存在するユーザをサーバに送る方法

---前提条件------- まず、下記の方法にて確認できる情報を、仮に【情報A】とします。 【情報A】 「マイコンピュータ右クリック ⇒ 管理 ⇒ (コンピュータの管理画面より)ローカル ユーザとグループ ⇒ ユーザ」 で確認できる、その時点でPCに存在するローカルのユーザアカウントの情報 ---ここまで------- 管理用ADサーバとクライアント約500台が存在するドメイン環境で、クライアントのログオン時にVBScript(いわゆるログオンスクリプト)を用いて、「端末名(ホスト名)+【情報A】」の形でにテキストファイル等のログ(下記の【ログの例】参照)として管理用ADサーバに送信します。 そしてサーバ側では、全クライアントに存在する全ユーザアカウントを端末別で一覧にて確認する。 このようなことは可能でしょうか?またどのようにすればよいでしょう? ※今回サーバに送信したい情報Aですが、有効になっているユーザアカウントだけでも、全てのアカウントでもOKです。 【ログの例】 ------------- PC001 Administrator Guest user01 user02 user03 PC002 Administrator Guest user01 PC003 Administrator Guest user03 user04 PC004 ・ ・ ・ -------------

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

質問文にあるログの例は全端末の情報が 1つのファイルにまとまっていますが、それだとスクリプトからの書き込みは失敗します。 他の PC が書き込み途中だったりするとね。 ですのでホストごとにファイルを作成するのが良いでしょう。 ローカルのユーザー取得については pcName = "." Set wmisrv = GetObject("WinMgmts://" & pcName & "/root/cimv2") Set accounts = wmisrv.ExecQuery("SELECT * FROM Win32_UserAccount WHERE localaccount = TRUE") For Each acc In accounts MsgBox acc.Name MsgBox acc.Disabled Next で取得できるので、出力の体裁を整えてファイルに書き出してください。 ちなみに Disabled プロパティは、アカウントが無効なら True、有効なら False です。 また、WMI の Win32_UserAccount クラスのその他のプロパティなどを調べたい場合はマイクロソフト製の Scriptmatic 2.0 を使うと簡単に調べられます。 http://www.microsoft.com/japan/technet/scriptcenter/tools/scripto2.mspx (ダウンロードは英語サイトで、途中で Windows 正規版のチェックが入ります) ダウンロードした exe ファイルを開いて適当なフォルダに解凍し、ScriptmaticV2.hta ファイルをダブルクリック。 [WMI Namespace] は「root/CIMV2」を選択。 [WMI Class] は「Win32_UserAccount」を選択。 [Language] は「VBScript」を選択。 これでサンプル スクリプトが表示されます。 サンプル スクリプト後半の WScript.Echo の部分にいろんなプロパティが書いてあります。

その他の回答 (2)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

とりあえず情報Aの取得部分だけならこんな感じでしょうか。 Option Explicit Dim Locator Dim Service Dim Os Dim OsSet Dim Usr Dim UsrSet Dim CompInfo Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator") Set Service = Locator.ConnectServer Set OsSet = Service.ExecQuery("Select * From Win32_OperatingSystem") For Each Os In OsSet CompInfo = CompInfo & vbCrLf & Os.CSName Next Set UsrSet = Service.ExecQuery ("Select * From Win32_UserAccount") For Each Usr In UsrSet CompInfo = CompInfo & vbCrLf & Usr.Name Next CompInfo = CompInfo & vbCrLf MsgBox CompInfo Set UsrSet = Nothing Set Usr = Nothing Set OsSet = Nothing Set Os = Nothing Set Locator = Nothing

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

ユーザの情報はWMIを使用すれば取得出来ます。またはnet userコマンドの出力を使用しても良いと思います。 サーバに出力したファイルを送るなら、サーバに共有フォルダを作ってそこにファイルをコピーするのが一番手っ取り早いですね。

関連するQ&A