3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(WSH)ユーザ名のSIDを取得

WSH(VBScript)を使って、WindowsユーザアカウントのSIDを取得する方法です。

WMIを使ってやる方法のサンプルがあってので、それを使ったらすんなりできました。

(なお、WMIクエリはWMI Code Creator を使うとわりと簡単に作成できます。)

↓はコマンドライン引数に、ユーザ名を付けてスクリプトを実行すると、そのユーザのSIDを表示するというコードです。

Dim UsrSet 

Dim Usr

Dim Locator

Dim Service

Dim MesStr

Dim args

Dim query

 

'WMIサービスへの接続

Set Locator = CreateObject("WbemScripting.SWbemLocator")

Set Service = Locator.ConnectServer

 

'コマンドライン引数取得

Set args = WScript.Arguments

'WMIクエリ生成(引数1番目にユーザ名が入っていることとする)

query = "Select * From Win32_UserAccount WHERE Name = '" _

& args(0) & "'"

'WMIクエリを実行

Set UsrSet = Service.ExecQuery( query )

'クエリから結果取得し文字列生成(Usr.SIDにSIDが入ってる)

For Each Usr In UsrSet

MesStr = MesStr + "名前:" + Usr.Name + vbTab + "SID:" _

+ Usr.SID + vbCrLf

Next

 

'出力

WScript.Echo MesStr

 

'MsgBox "登録されているユーザーアカウントは、" + _

'vbCrLf + vbCrLf + MesStr + vbCrLf + "ですよ。"

実行すると下記のようになります。

D:\>cscript sid.vbs hoge100

Microsoft (R) Windows Script Host Version 5.7

Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

名前:hoge100 SID:S-1-5-21-xxxxxxxx-xxxxxxxx-xxxxxxxx-7292

参考:

VBSでのコマンドライン引数の取得

vbsによるユーザ情報の取得について | OKWave