システムエンジニアの技術メモ

VBScript (Microsoft Visual Basic Scripting Edition)

001. テキストファイル切り出し

'// 切り出したいテキストファイルをドラッグ&ドロップ
'// Arguments : (0)Imput File
Set objArgs = WScript.Arguments

Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

'// Change current directory
WshShell.CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName)

'// Input read file
If objArgs.Count > 0 Then
    strReadFile = objArgs(0)
Else
    strReadFile = InputBox("ファイル名を入力して下さい", strTitle & " 1/3")
    If strReadFile = "" Then WScript.Quit
End If

intStart = InputBox("先頭行を入力して下さい", strTitle & " 2/3", 1) + 0
If intStart = "" Then WScript.Quit

intLines = InputBox("切り出す行数を入力して下さい", strTitle & " 3/3", 100) + 0
If intLines = "" Then WScript.Quit

strWriteFile = strReadFile & "+" & intStart & "~" & intLines & "行.txt"

Set objReadFile = fso.OpenTextFile(strReadFile, 1, False)
Set objWriteFile = fso.CreateTextFile(strWriteFile, True)

a = 1

Do While a < intStart
    strLine = objReadFile.ReadLine
    a = a + 1
Loop

a = 0

Do Until a = intLines Or objReadFile.AtEndOfStream
    objWriteFile.WriteLine (objReadFile.ReadLine)
    a = a + 1
Loop

objReadFile.Close
objWriteFile.Close

x = MsgBox("処理が終わりました。", 64, strTitle)

002. HTML を読む

Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate ("http://www.yahoo.co.jp/index.html")

Do While objIE.Busy
    WScript.Sleep 100
Loop

MsgBox (objIE.document.body.innerText)

Set objIE = Nothing

003. ASP を読む

On Error Resume Next

strURL = "http://192.168.0.1/read.asp?parm1=123&parm2=abc"

Set objXML = WScript.CreateObject("MSXML2.ServerXMLHTTP")
objXML.Open "POST", strURL, False
objXML.Send
strText = objXML.ResponseText
intStat = objXML.Status
strStat = objXML.StatusText
Set objXML = Nothing

MsgBox strText
MsgBox intStat
MsgBox strStat

004. RSS(XML) を読む

Set objXML = CreateObject("MSXML2.DOMDocument")
objXML.async = False

rtResult = objXML.Load("http://dailynews.yahoo.co.jp/fc/rss.xml")

If rtResult = True Then
    subSetData objXML.childNodes
End If

Set objXML = Nothing

WScript.Quit

Sub subSetData(objNode)

    For Each Item In objNode

        If Item.nodeType = 3 Then
            a = ""
            a = a & "Name(4) = " & Item.parentNode.parentNode.parentNode.parentNode.nodeName & vbCrLf
            a = a & "Name(3) = " & Item.parentNode.parentNode.parentNode.nodeName & vbCrLf
            a = a & "Name(2) = " & Item.parentNode.parentNode.nodeName & vbCrLf
            a = a & "Name(1) = " & Item.parentNode.nodeName & vbCrLf
            a = a & "Value = " & Item.nodeValue & vbCrLf
            MsgBox a
        End If

        If Item.hasChildNodes Then
            subSetData Item.childNodes
        End If

    Next

End Sub

005. WMIクラス/プロセス情報の取得

Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}")

'// 特定のプロセスを指定する場合
'For Each Process In objWMI.ExecQuery("select * from Win32_Process where name='wscript.exe'")

For Each Process In objWMI.InstancesOf("Win32_Process")

    With Process
        Call .GetOwner(strOwner, strDomain)
        WScript.Echo "Name                       : " & .Name & _
            vbCrLf & "Caption                    : " & .Caption & _
            vbCrLf & "CreationClassName          : " & .CreationClassName & _
            vbCrLf & "CreationDate               : " & .CreationDate & _
            vbCrLf & "CSCreationClassName        : " & .CSCreationClassName & _
            vbCrLf & "CSName                     : " & .CSName & _
            vbCrLf & "Description                : " & .Description & _
            vbCrLf & "ExecutablePath             : " & .ExecutablePath & _
            vbCrLf & "ExecutionState             : " & .ExecutionState & _
            vbCrLf & "Handle                     : " & .Handle & _
            vbCrLf & "HandleCount                : " & .HandleCount & _
            vbCrLf & "InstallDate                : " & .InstallDate & _
            vbCrLf & "KernelModeTime             : " & .KernelModeTime & _
            vbCrLf & "MaximumWorkingSetSize      : " & .MaximumWorkingSetSize & _
            vbCrLf & "MinimumWorkingSetSize      : " & .MinimumWorkingSetSize & _
            vbCrLf & "OSCreationClassName        : " & .OSCreationClassName & _
            vbCrLf & "OSName                     : " & .OSName & _
            vbCrLf & "OtherOperationCount        : " & .OtherOperationCount & _
            vbCrLf & "OtherTransferCount         : " & .OtherTransferCount & _
            vbCrLf & "PageFaults                 : " & .PageFaults & _
            vbCrLf & "PageFileUsage              : " & .PageFileUsage & _
            vbCrLf & "ParentProcessId            : " & .ParentProcessId & _
            vbCrLf & "PeakPageFileUsage          : " & .PeakPageFileUsage & _
            vbCrLf & "PeakVirtualSize            : " & .PeakVirtualSize & _
            vbCrLf & "PeakWorkingSetSize         : " & .PeakWorkingSetSize & _
            vbCrLf & "Priority                   : " & .Priority & _
            vbCrLf & "PrivatePageCount           : " & .PrivatePageCount & _
            vbCrLf & "ProcessId                  : " & .ProcessId & _
            vbCrLf & "QuotaNonPagedPoolUsage     : " & .QuotaNonPagedPoolUsage & _
            vbCrLf & "QuotaPagedPoolUsage        : " & .QuotaPagedPoolUsage & _
            vbCrLf & "QuotaPeakNonPagedPoolUsage : " & .QuotaPeakNonPagedPoolUsage & _
            vbCrLf & "QuotaPeakPagedPoolUsage    : " & .QuotaPeakPagedPoolUsage & _
            vbCrLf & "ReadOperationCount         : " & .ReadOperationCount & _
            vbCrLf & "ReadTransferCount          : " & .ReadTransferCount & _
            vbCrLf & "Domain                     : " & strDomain & _
            vbCrLf & "Owner                      : " & strOwner
    End With

Next
Win32 Classes

006. Excel マクロ実行

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run ("excel.exe")

Set objXLS = CreateObject("Excel.Application")
objXLS.Visible = True
objXLS.Workbooks.Open "C:\エクセル.xls"
objXLS.Run objXLS.ActiveWorkbook.Name & "!" & "マクロ"
objXLS.Quit
Set objXLS = Nothing

007. Access マクロ実行

Set objAccess = GetObject("C:\アクセス.mdb")
objAccess.DoCmd.RunMacro "マクロ"
objAccess.Quit
Set objAccess = Nothing

008. CD ドライブ取り出し

On Error Resume Next

Set objShell = CreateObject("Shell.Application")
set objDrive = objShell.NameSpace("D:\")  '// D ドライブの場合
Set objItem = objDrive.Items.Item

objItem.InvokeVerb "取り出し(&J)"

009. 日付(YYYYMMDD) & 時刻(hhmmss)

'// Get execute time
strDate = Replace(Date, "/", "")
strTime = Right("0" & Replace(Time, ":", ""), 6)

MsgBox "strDate = " & strDate & vbCrLf & "strTime = " & strTime

010. VBScript から JScript を実行 + URI エンコード

'// Get URI encode value
Set objSC = CreateObject("ScriptControl")
objSC.Language = "JScript"
Set objCO = objSC.CodeObject

strURI = "http://maps.google.co.jp/maps?q=新宿区西新宿6丁目9"
a = "【エンコード前】" & vbCrLf & strURI & vbCrLf

strURI = objCO.encodeURI(strURI)  '// 「:」、「/」、「;」、「?」はコード化されない。
a = a & "【URI エンコード】" & vbCrLf & strURI & vbCrLf

strURI = objCO.encodeURIComponent(strURI)
a = a & "【URI 完全エンコード】" & vbCrLf & strURI & vbCrLf

strDecode = objCO.decodeURIComponent(strURI)
a = a & "【デコード】" & vbCrLf & strDecode & vbCrLf

Set objSC = Nothing
Set objCO = Nothing

MsgBox a

011. WMIクラス/BIOS情報の取得

Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}")

For Each objBIOS In objWMI.ExecQuery("select * from Win32_BIOS")
    a = a & vbCrLf & "Build Number          : " & objBIOS.BuildNumber
    a = a & vbCrLf & "Current Language      : " & objBIOS.CurrentLanguage
    a = a & vbCrLf & "Installable Languages : " & objBIOS.InstallableLanguages
    a = a & vbCrLf & "Manufacturer          : " & objBIOS.Manufacturer
    a = a & vbCrLf & "Name                  : " & objBIOS.Name
    a = a & vbCrLf & "Primary BIOS          : " & objBIOS.PrimaryBIOS
    a = a & vbCrLf & "Release Date          : " & objBIOS.ReleaseDate
    a = a & vbCrLf & "Serial Number         : " & objBIOS.SerialNumber
    a = a & vbCrLf & "SMBIOS Version        : " & objBIOS.SMBIOSBIOSVersion
    a = a & vbCrLf & "SMBIOS Major Version  : " & objBIOS.SMBIOSMajorVersion
    a = a & vbCrLf & "SMBIOS Minor Version  : " & objBIOS.SMBIOSMinorVersion
    a = a & vbCrLf & "SMBIOS Present        : " & objBIOS.SMBIOSPresent
    a = a & vbCrLf & "Status                : " & objBIOS.Status
    a = a & vbCrLf & "Version               : " & objBIOS.Version
    For i = 0 to Ubound(objBIOS.BiosCharacteristics)
        a = a & vbCrLf &  "BIOS Characteristics: " & objBIOS.BiosCharacteristics(i)
    Next
Next

WScript.Echo a

012. WMIクラス/Win32_ComputerSystem

On Error Resume Next

Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}")

For Each objItem In objWMI.InstancesOf("Win32_ComputerSystem")
    With objItem
        a = ""
        a = a & vbCrLf & "AdminPasswordStatus       : " & .AdminPasswordStatus
        a = a & vbCrLf & "AutomaticResetBootOption  : " & .AutomaticResetBootOption
        a = a & vbCrLf & "AutomaticResetCapability  : " & .AutomaticResetCapability
        a = a & vbCrLf & "BootOptionOnLimit         : " & .BootOptionOnLimit
        a = a & vbCrLf & "BootOptionOnWatchDog      : " & .BootOptionOnWatchDog
        a = a & vbCrLf & "BootROMSupported          : " & .BootROMSupported
        a = a & vbCrLf & "BootupState               : " & .BootupState
        a = a & vbCrLf & "Caption                   : " & .Caption
        a = a & vbCrLf & "ChassisBootupState        : " & .ChassisBootupState
        a = a & vbCrLf & "CreationClassName         : " & .CreationClassName
        a = a & vbCrLf & "CurrentTimeZone           : " & .CurrentTimeZone
        a = a & vbCrLf & "DaylightInEffect          : " & .DaylightInEffect
        a = a & vbCrLf & "Description               : " & .Description
        a = a & vbCrLf & "DNSHostName               : " & .DNSHostName
        a = a & vbCrLf & "Domain                    : " & .Domain
        a = a & vbCrLf & "DomainRole                : " & .DomainRole
        a = a & vbCrLf & "EnableDaylightSavingsTime : " & .EnableDaylightSavingsTime
        a = a & vbCrLf & "FrontPanelResetStatus     : " & .FrontPanelResetStatus
        a = a & vbCrLf & "InfraredSupported         : " & .InfraredSupported
        a = a & vbCrLf & "InitialLoadInfo           : " & .InitialLoadInfo
        a = a & vbCrLf & "InstallDate               : " & .InstallDate
        a = a & vbCrLf & "KeyboardPasswordStatus    : " & .KeyboardPasswordStatus
        a = a & vbCrLf & "LastLoadInfo              : " & .LastLoadInfo
        a = a & vbCrLf & "Manufacturer              : " & .Manufacturer
        a = a & vbCrLf & "Model                     : " & .Model
        a = a & vbCrLf & "Name                      : " & .Name
        a = a & vbCrLf & "NameFormat                : " & .NameFormat
        a = a & vbCrLf & "NetworkServerModeEnabled  : " & .NetworkServerModeEnabled
        a = a & vbCrLf & "NumberOfProcessors        : " & .NumberOfProcessors
        a = a & vbCrLf & "PartOfDomain              : " & .PartOfDomain
        a = a & vbCrLf & "PauseAfterReset           : " & .PauseAfterReset
        a = a & vbCrLf & "PowerManagementSupported  : " & .PowerManagementSupported
        a = a & vbCrLf & "PowerOnPasswordStatus     : " & .PowerOnPasswordStatus
        a = a & vbCrLf & "PowerState                : " & .PowerState
        a = a & vbCrLf & "PowerSupplyState          : " & .PowerSupplyState
        a = a & vbCrLf & "PrimaryOwnerContact       : " & .PrimaryOwnerContact
        a = a & vbCrLf & "PrimaryOwnerName          : " & .PrimaryOwnerName
        a = a & vbCrLf & "ResetCapability           : " & .ResetCapability
        a = a & vbCrLf & "ResetCount                : " & .ResetCount
        a = a & vbCrLf & "ResetLimit                : " & .ResetLimit
        a = a & vbCrLf & "Status                    : " & .Status
        a = a & vbCrLf & "SystemStartupDelay        : " & .SystemStartupDelay
        a = a & vbCrLf & "SystemStartupSetting      : " & .SystemStartupSetting
        a = a & vbCrLf & "SystemType                : " & .SystemType
        a = a & vbCrLf & "ThermalState              : " & .ThermalState
        a = a & vbCrLf & "TotalPhysicalMemory       : " & .TotalPhysicalMemory
        a = a & vbCrLf & "UserName                  : " & .UserName
        a = a & vbCrLf & "WakeUpType                : " & .WakeUpType
        a = a & vbCrLf & "Workgroup                 : " & .Workgroup
        If .Caption <> "" Then WScript.Echo a
    End With
Next

013. WMIクラス/VRAM(ビデオメモリ)容量

On Error Resume Next

Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}")

For Each objVC In objWMI.InstancesOf("Win32_VideoController")
    If objVC.VideoModeDescription <> "" Then
        a = a & vbCrLf & "AcceleratorCapabilities      : " & objVC.AcceleratorCapabilities
        a = a & vbCrLf & "AdapterCompatibility         : " & objVC.AdapterCompatibility
        a = a & vbCrLf & "AdapterDACType               : " & objVC.AdapterDACType
        a = a & vbCrLf & "AdapterRAM                   : " & objVC.AdapterRAM
        a = a & vbCrLf & "AdapterRAM [MB]              : " & objVC.AdapterRAM / 1024 / 1024 & " [MB]"
        a = a & vbCrLf & "Availability                 : " & objVC.Availability
        a = a & vbCrLf & "CapabilityDescriptions       : " & objVC.CapabilityDescriptions
        a = a & vbCrLf & "Caption                      : " & objVC.Caption
        a = a & vbCrLf & "ColorTableEntries            : " & objVC.ColorTableEntries
        a = a & vbCrLf & "ConfigManagerErrorCode       : " & objVC.ConfigManagerErrorCode
        a = a & vbCrLf & "ConfigManagerUserConfig      : " & objVC.ConfigManagerUserConfig
        a = a & vbCrLf & "CreationClassName            : " & objVC.CreationClassName
        a = a & vbCrLf & "CurrentBitsPerPixel          : " & objVC.CurrentBitsPerPixel
        a = a & vbCrLf & "CurrentHorizontalResolution  : " & objVC.CurrentHorizontalResolution
        a = a & vbCrLf & "CurrentNumberOfColors        : " & objVC.CurrentNumberOfColors
        a = a & vbCrLf & "CurrentNumberOfColumns       : " & objVC.CurrentNumberOfColumns
        a = a & vbCrLf & "CurrentNumberOfRows          : " & objVC.CurrentNumberOfRows
        a = a & vbCrLf & "CurrentRefreshRate           : " & objVC.CurrentRefreshRate
        a = a & vbCrLf & "CurrentScanMode              : " & objVC.CurrentScanMode
        a = a & vbCrLf & "CurrentVerticalResolution    : " & objVC.CurrentVerticalResolution
        a = a & vbCrLf & "Description                  : " & objVC.Description
        a = a & vbCrLf & "DeviceID                     : " & objVC.DeviceID
        a = a & vbCrLf & "DeviceSpecificPens           : " & objVC.DeviceSpecificPens
        a = a & vbCrLf & "DitherType                   : " & objVC.DitherType
        a = a & vbCrLf & "DriverDate                   : " & objVC.DriverDate
        a = a & vbCrLf & "DriverVersion                : " & objVC.DriverVersion
        a = a & vbCrLf & "ErrorCleared                 : " & objVC.ErrorCleared
        a = a & vbCrLf & "ErrorDescription             : " & objVC.ErrorDescription
        a = a & vbCrLf & "ICMIntent                    : " & objVC.ICMIntent
        a = a & vbCrLf & "ICMMethod                    : " & objVC.ICMMethod
        a = a & vbCrLf & "InfFilename                  : " & objVC.InfFilename
        a = a & vbCrLf & "InfSection                   : " & objVC.InfSection
        a = a & vbCrLf & "InstallDate                  : " & objVC.InstallDate
        a = a & vbCrLf & "InstalledDisplayDrivers      : " & objVC.InstalledDisplayDrivers
        a = a & vbCrLf & "LastErrorCode                : " & objVC.LastErrorCode
        a = a & vbCrLf & "MaxMemorySupported           : " & objVC.MaxMemorySupported
        a = a & vbCrLf & "MaxNumberControlled          : " & objVC.MaxNumberControlled
        a = a & vbCrLf & "MaxRefreshRate               : " & objVC.MaxRefreshRate
        a = a & vbCrLf & "MinRefreshRate               : " & objVC.MinRefreshRate
        a = a & vbCrLf & "Monochrome                   : " & objVC.Monochrome
        a = a & vbCrLf & "Name                         : " & objVC.Name
        a = a & vbCrLf & "NumberOfColorPlanes          : " & objVC.NumberOfColorPlanes
        a = a & vbCrLf & "NumberOfVideoPages           : " & objVC.NumberOfVideoPages
        a = a & vbCrLf & "PNPDeviceID                  : " & objVC.PNPDeviceID
        a = a & vbCrLf & "PowerManagementCapabilities  : " & objVC.PowerManagementCapabilities
        a = a & vbCrLf & "PowerManagementSupported     : " & objVC.PowerManagementSupported
        a = a & vbCrLf & "ProtocolSupported            : " & objVC.ProtocolSupported
        a = a & vbCrLf & "ReservedSystemPaletteEntries : " & objVC.ReservedSystemPaletteEntries
        a = a & vbCrLf & "SpecificationVersion         : " & objVC.SpecificationVersion
        a = a & vbCrLf & "Status                       : " & objVC.Status
        a = a & vbCrLf & "StatusInfo                   : " & objVC.StatusInfo
        a = a & vbCrLf & "SystemCreationClassName      : " & objVC.SystemCreationClassName
        a = a & vbCrLf & "SystemName                   : " & objVC.SystemName
        a = a & vbCrLf & "SystemPaletteEntries         : " & objVC.SystemPaletteEntries
        a = a & vbCrLf & "TimeOfLastReset              : " & objVC.TimeOfLastReset
        a = a & vbCrLf & "VideoArchitecture            : " & objVC.VideoArchitecture
        a = a & vbCrLf & "VideoMemoryType              : " & objVC.VideoMemoryType
        a = a & vbCrLf & "VideoMode                    : " & objVC.VideoMode
        a = a & vbCrLf & "VideoModeDescription         : " & objVC.VideoModeDescription
        a = a & vbCrLf & "VideoProcessor               : " & objVC.VideoProcessor
    End If
Next

WScript.Echo a

014. ODBCデータソース名(DSN)の取得

'// &H80000001 : -2147483647
'// &H80000002 : -2147483646
'// HKEY : Hive Key

On Error Resume Next

Set fso = CreateObject("Scripting.FileSystemObject")

'// Initial definition
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_CURRENT_USER = &H80000001
strTitle = fso.GetBaseName(Wscript.ScriptFullName)
strPath = "Software\ODBC\ODBC.INI\ODBC Data Sources"
a = ""

strComputer = "."
Set objReg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

'// System DSN
Call read_registry(HKEY_LOCAL_MACHINE, strPath)
'// User DSN
Call read_registry(HKEY_CURRENT_USER, strPath)

If a = "" Then a = "DNS が登録されていません。"
x = MsgBox(a, , strTitle)

Wscript.Quit

Function read_registry(strHKEY, strPath)
    objReg.EnumValues strHKEY, strPath, aryNames, aryTypes
    If Not IsArray(aryNames) Then Exit Function
    If strHKEY = &H80000002 Then a = a & "-- System DSN --" & vbCrLf
    If strHKEY = &H80000001 Then a = a & "-- User DSN --" & vbCrLf
    For Each strName In aryNames
        objReg.GetStringValue strHKEY, strPath, strName, strValue
        a = a & strName & "  [" & strValue & "]" & vbCrLf
    Next
End Function

015. ドメインユーザ パスワード変更

▽その1(ドメコン省略)

Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
objUser.ChangePassword "変更前パスワード", "変更後パスワード"

▽その2

Set objUser = GetObject("LDAP://[ドメイン or ドメインコントローラ]/CN=xxx,OU=xxx,OU=xxx,DC=xxx,DC=xxx")
objUser.ChangePassword "変更前パスワード", "変更後パスワード"

016. ローカルユーザ パスワード変更

'// 予めパスワードを変更する権限を持ったアカウントで接続しておく
'// 【接続例】
'//   Set WshShell = CreateObject("WScript.Shell")
'//   x = WshShell.Run("net use \\[コンピュータ名] /user:[ドメイン名]\[ユーザ名] [パスワード]", 0, 0)
'//   ・・・ パスワード変更 ・・・
'//   x = WshShell.Run("net use /d \\[コンピュータ名]", 0, True)

On Error Resume Next

strServer = "localhost"
strUser = "administrator"
strPass = "password"

'// Connect to target computer
Set objUser = GetObject("WinNT://" & strServer & "/" & strUser)
If Err.Number <> 0 Then Call error_msg("接続に失敗しました。")

'// Change password
objUser.SetPassword strPass
If Err.Number <> 0 Then Call error_msg("パスワードの変更に失敗しました。")

objUser.SetInfo

Set objUser = Nothing

MsgBox "パスワードを変更しました。"

'/*----------------------------------------------------------*
' * Sub-Routine (Error Message)
' *----------------------------------------------------------*/
Sub error_msg(strMsg)
    strMsg = strMsg & vbCrLf & "Err.Number : " & CStr(Err.Number)
    strMsg = strMsg & vbCrLf & "Description : " & Err.Description
    MsgBox strMsg
    WScript.Quit
End Sub

017. ドメインユーザ情報をテキストファイルに出力

On Error Resume Next

Set fso = CreateObject("Scripting.FileSystemObject")

strDomain = InputBox("Please enter a domainname", "Input")
If strDomain = "" Then WScript.Quit

'// Create output file
Set objFile = fso.CreateTextFile(strDomain & ".txt", True)

'// Header
a = "Name"
a = a & vbTab & "AccountDisabled"
a = a & vbTab & "AccountExpirationDate"
a = a & vbTab & "BadLoginAddress"
a = a & vbTab & "BadLoginCount"
a = a & vbTab & "Department"
a = a & vbTab & "Description"
a = a & vbTab & "Division"
a = a & vbTab & "EmailAddress"
a = a & vbTab & "EmployeeID"
a = a & vbTab & "FaxNumber"
a = a & vbTab & "FirstName"
a = a & vbTab & "FullName"
a = a & vbTab & "GraceLoginsAllowed"
a = a & vbTab & "GraceLoginsRemaining"
a = a & vbTab & "HomeDirectory"
a = a & vbTab & "HomePage"
a = a & vbTab & "IsAccountLocked"
a = a & vbTab & "Languages"
a = a & vbTab & "LastFailedLogin"
a = a & vbTab & "LastLogin"
a = a & vbTab & "LastLogoff"
a = a & vbTab & "LastName"
a = a & vbTab & "LoginHours"
a = a & vbTab & "LoginScript"
a = a & vbTab & "LoginWorkstations"
a = a & vbTab & "Manager"
a = a & vbTab & "MaxLogins"
a = a & vbTab & "MaxStorage"
a = a & vbTab & "NamePrefix"
a = a & vbTab & "NameSuffix"
a = a & vbTab & "OfficeLocations"
a = a & vbTab & "OtherName"
a = a & vbTab & "PasswordExpirationDate"
a = a & vbTab & "PasswordLastChanged"
a = a & vbTab & "PasswordMinimumLength"
a = a & vbTab & "PasswordRequired"
a = a & vbTab & "Picture"
a = a & vbTab & "PostalAddresses"
a = a & vbTab & "PostalCodes"
a = a & vbTab & "Profile"
a = a & vbTab & "RequireUniquePassword"
a = a & vbTab & "SeeAlso"
a = a & vbTab & "TelephoneHome"
a = a & vbTab & "TelephoneMobile"
a = a & vbTab & "TelephoneNumber"
a = a & vbTab & "TelephonePager"
a = a & vbTab & "Title"
objFile.WriteLine a

Set objComputer = GetObject("WinNT://" & strDomain)
objComputer.Filter = Array("User")
For Each usr In objComputer
    a = usr.Name
    a = a & vbTab: a = a & usr.AccountDisabled
    a = a & vbTab: a = a & usr.AccountExpirationDate
    a = a & vbTab: a = a & usr.BadLoginAddress
    a = a & vbTab: a = a & usr.BadLoginCount
    a = a & vbTab: a = a & usr.Department
    a = a & vbTab: a = a & usr.Description
    a = a & vbTab: a = a & usr.Division
    a = a & vbTab: a = a & usr.EmailAddress
    a = a & vbTab: a = a & usr.EmployeeID
    a = a & vbTab: a = a & usr.FaxNumber
    a = a & vbTab: a = a & usr.FirstName
    a = a & vbTab: a = a & usr.FullName
    a = a & vbTab: a = a & usr.GraceLoginsAllowed
    a = a & vbTab: a = a & usr.GraceLoginsRemaining
    a = a & vbTab: a = a & usr.HomeDirectory
    a = a & vbTab: a = a & usr.HomePage
    a = a & vbTab: a = a & usr.IsAccountLocked
    a = a & vbTab: a = a & usr.Languages
    a = a & vbTab: a = a & usr.LastFailedLogin
    a = a & vbTab: a = a & usr.LastLogin
    a = a & vbTab: a = a & usr.LastLogoff
    a = a & vbTab: a = a & usr.LastName
    a = a & vbTab: a = a & usr.LoginHours
    a = a & vbTab: a = a & usr.LoginScript
    a = a & vbTab: a = a & usr.LoginWorkstations
    a = a & vbTab: a = a & usr.Manager
    a = a & vbTab: a = a & usr.MaxLogins
    a = a & vbTab: a = a & usr.MaxStorage
    a = a & vbTab: a = a & usr.NamePrefix
    a = a & vbTab: a = a & usr.NameSuffix
    a = a & vbTab: a = a & usr.OfficeLocations
    a = a & vbTab: a = a & usr.OtherName
    a = a & vbTab: a = a & usr.PasswordExpirationDate
    a = a & vbTab: a = a & usr.PasswordLastChanged
    a = a & vbTab: a = a & usr.PasswordMinimumLength
    a = a & vbTab: a = a & usr.PasswordRequired
    a = a & vbTab: a = a & usr.Picture
    a = a & vbTab: a = a & usr.PostalAddresses
    a = a & vbTab: a = a & usr.PostalCodes
    a = a & vbTab: a = a & usr.Profile
    a = a & vbTab: a = a & usr.RequireUniquePassword
    a = a & vbTab: a = a & usr.SeeAlso
    a = a & vbTab: a = a & usr.TelephoneHome
    a = a & vbTab: a = a & usr.TelephoneMobile
    a = a & vbTab: a = a & usr.TelephoneNumber
    a = a & vbTab: a = a & usr.TelephonePager
    a = a & vbTab: a = a & usr.Title
    objFile.WriteLine a
Next

objFile.Close

MsgBox "終わったよ!"

018. VBScript のインクルード

Set fso = CreateObject("Scripting.FileSystemObject")
Execute fso.OpenTextFile("xxx.vbs", 1, False).ReadAll()

019. IP アドレスの取得

Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}")

For Each nic In objWMI.ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=true")
    If nic.IPAddress(0) <> "" Then WScript.Echo nic.IPAddress(0)
Next

020. Windows シャットダウン/再起動

x = MsgBox("Windows をシャットダウンします。よろしいですか?", 1)
If x <> 1 Then WScript.Quit

'// Windows 2000 シャットダウン
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}")
For Each objOS In objWMI.InstancesOf("Win32_OperatingSystem")
'// Log Off
'    objOS.Win32Shutdown 0
'// Shutdown
'    objOS.Win32Shutdown 1
'// Reboot
'    objOS.Win32Shutdown 2
'// Forced Log Off
'    objOS.Win32Shutdown 4
'// Forced Shutdown
'    objOS.Win32Shutdown 5
'// Forced Reboot
'    objOS.Win32Shutdown 6
'// Power Off
'    objOS.Win32Shutdown 8
'// Forced Power Off
    objOS.Win32Shutdown 12
Next

021. 「最近使ったファイル」のクリア

Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

fso.DeleteFile fso.BuildPath(WshShell.SpecialFolders("Recent"), "*.*")

022. タイマー (sleep)

t = InputBox("Wait する時間(分)を入力して下さい", "タイマー")
If t = "" Then WScript.Quit

WScript.Sleep (t * 60000)

023. サービスの起動/停止/削除

strComputer = "."
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objService = objWMI.ExecQuery("select * from Win32_Service where name = 'MSSQLSERVER'")

For Each objService In objService
'// Start service
    objService.StartService() 
'// Stop service
'    objService.StopService()
'// Delte service
'    objService.Delete()
Next

024. 環境変数の取得

Set WshShell = CreateObject("WScript.Shell")

WScript.Echo _
    vbCrLf & "USERNAME : " & WshShell.ExpandEnvironmentStrings("%USERNAME%") & _
    vbCrLf & "USERDOMAIN : " & WshShell.ExpandEnvironmentStrings("%USERDOMAIN%") & _
    vbCrLf & "COMPUTERNAME : " & WshShell.ExpandEnvironmentStrings("%COMPUTERNAME%") & _
    vbCrLf & "APPDATA : " & WshShell.ExpandEnvironmentStrings("%APPDATA%") & _
    vbCrLf & "windir : " & WshShell.ExpandEnvironmentStrings("%windir%") & _
    vbCrLf

Set objEnv = WshShell.Environment("SYSTEM")

WScript.Echo _
    vbCrLf & "NUMBER_OF_PROCESSORS : " & objEnv("NUMBER_OF_PROCESSORS") & _
    vbCrLf & "PROCESSOR_ARCHITECTURE : " & objEnv("PROCESSOR_ARCHITECTURE") & _
    vbCrLf & "PROCESSOR_IDENTIFIER : " & objEnv("PROCESSOR_IDENTIFIER") & _
    vbCrLf & "PROCESSOR_LEVEL : " & objEnv("PROCESSOR_LEVEL") & _
    vbCrLf & "PROCESSOR_REVISION : " & objEnv("PROCESSOR_REVISION") & _
    vbCrLf & "OS : " & objEnv("OS") & _
    vbCrLf & "COMSPEC : " & objEnv("COMSPEC") & _
    vbCrLf & "HOMEDRIVE : " & objEnv("HOMEDRIVE") & _
    vbCrLf

025. 実行パスの取得

Set fso = CreateObject("Scripting.FileSystemObject")
MsgBox fso.GetAbsolutePathName("")

026. ODBC接続/SQL(SELECT)結果をテキストファイルに出力

'// 実行するSQLファイルをドラッグ&ドロップ
'// Arguments : (0)SQL File
Set objArgs = WScript.Arguments

Set WshShell = CreateObject("WScript.Shell")
Set objADO = CreateObject("ADODB.Connection")
Set fso = CreateObject("Scripting.FileSystemObject")

'// Change current directory
WshShell.CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName)

'// Initial definition
strTitle = fso.GetBaseName(WScript.ScriptFullName)
dsn = "MSSQL"
strUID = "sa"

'// SQL File
If objArgs.Count > 0 Then
    strSqlFile = objArgs(0)
Else
    strSqlFile = InputBox("SQLファイル名を入力して下さい", strTitle & "  1/4")
    strSqlFile = Trim(strSqlFile)
    If strSqlFile = "" Then WScript.Quit
End If

'// Output File
strOutFile = fso.GetBaseName(strSqlFile) & ".txt"
strOutFile = InputBox("出力ファイル名を入力して下さい", strTitle & "  2/4", strOutFile)
strOutFile = Trim(strOutFile)
If strOutFile = "" Then WScript.Quit

'// Input User ID
uid = InputBox("ユーザーIDを入力して下さい", strTitle & "  3/4", strUID)
uid = Trim(uid)
If uid = "" Then WScript.Quit

'// Input Password
pwd = InputBox("パスワードを入力して下さい", strTitle & "  4/4")
pwd = Trim(pwd)
If pwd = "" Then WScript.Quit

'// Start timer
StartTime = Now

'// Setup of connection definition
strCon = "DSN=" & dsn & "; UID=" & uid & "; PWD=" & pwd

'// Create execution SQL
Set objReadFile = fso.OpenTextFile(strSqlFile, 1, False)
strSQL = objReadFile.ReadAll()
objReadFile.Close

'// Unrestricted connection timeout
objADO.CommandTimeout = 0

'// Connect to database
objADO.Open strCon

'// Record count
rc = 0

'// Execute SQL
Set rs = objADO.Execute(strSQL)

'// Output to text file
If rs.EOF Then
    x = MsgBox("該当データがありません。" & vbCrLf & vbCrLf & strSqlFile, 64, strTitle)
    WScript.Quit
Else

    '// Create output file
    Set objWriteFile = fso.CreateTextFile(strOutFile, True)

    '// Get number of fields
    fc = rs.Fields.Count - 1

    '// Output column name
    a = ""
    For i = 0 To fc
        a = a & rs.Fields(i).Name
        If i < fc Then a = a & Chr(9)
    Next
    objWriteFile.WriteLine (a)

    '// Output data
    Do Until rs.EOF
        a = ""
        For i = 0 To fc
            a = a & Trim(rs.Fields(i).Value)
            If i < fc Then a = a & Chr(9)
        Next
        a = Replace(a, Chr(0), "")
        objWriteFile.WriteLine (a)
        rc = rc + 1
        rs.Movenext
    Loop

    objWriteFile.Close

End If

'// Disconnect from database
objADO.Close

'// End timer
TimeIt = FormatDateTime((Now - StartTime), 3)

'// Message
strMSG = "検索処理が終了しました。"
strMSG = strMSG & vbCrLf & vbCrLf
strMSG = strMSG & rc & " 件"
strMSG = strMSG & vbCrLf & vbCrLf
strMSG = strMSG & "処理時間は、( " & TimeIt & " 秒) だったよ~ん。"
strMSG = strMSG & vbCrLf & vbCrLf
strMSG = strMSG & "THANK YOU! ┐(´◇`)┌"
strMSG = strMSG & vbCrLf & vbCrLf & vbCrLf & ">> " & strOutFile

'// Show message
x = MsgBox(strMSG, 64, strTitle)

WScript.Quit

027. ODBC接続/SQL(DELETE/UPDAETE等)実行

'// 実行するSQLファイルをドラッグ&ドロップ
'// Arguments : (0)SQL File
Set objArgs = WScript.Arguments

Set WshShell = CreateObject("WScript.Shell")
Set objADO = CreateObject("ADODB.Connection")
Set fso = CreateObject("Scripting.FileSystemObject")

'// Initial definition
strTitle = fso.GetBaseName(WScript.ScriptFullName)
dsn = "MSSQL"
strUID = "sa"

'// SQL File
If objArgs.Count > 0 Then
    strSqlFile = objArgs(0)
Else
    strSqlFile = InputBox("SQLファイル名を入力して下さい", strTitle & "  1/3")
    strSqlFile = Trim(strSqlFile)
    If strSqlFile = "" Then WScript.Quit
End If

'// Input User ID
uid = InputBox("ユーザーIDを入力して下さい", strTitle & "  2/3", strUID)
uid = Trim(uid)
If uid = "" Then WScript.Quit

'// Input Password
pwd = InputBox("パスワードを入力して下さい", strTitle & "  3/3")
pwd = Trim(pwd)
If pwd = "" Then WScript.Quit

'// Start timer
StartTime = Now

'// Setup of connection definition
strCon = "DSN=" & dsn & "; UID=" & uid & "; PWD=" & pwd

'// Create execution SQL
Set objReadFile = fso.OpenTextFile(strSqlFile, 1, False)
strSQL = objReadFile.ReadAll()
objReadFile.Close

'// Unrestricted connection timeout
objADO.CommandTimeout = 0

'// Connect to database
objADO.Open strCon

'// Execute SQL
Set rs = objADO.Execute(strSQL)

'// ADO properties [オマケ]
a = "-- ADO properties --"
a = a & vbCrLf & "ConnectionString : " & objADO.ConnectionString
a = a & vbCrLf & "Attributes : " & objADO.Attributes
a = a & vbCrLf & "CommandTimeout : " & objADO.CommandTimeout
a = a & vbCrLf & "ConnectionTimeout : " & objADO.ConnectionTimeout
a = a & vbCrLf & "CursorLocation : " & objADO.CursorLocation
a = a & vbCrLf & "DefaultDatabase : " & objADO.DefaultDatabase
a = a & vbCrLf & "IsolationLevel : " & objADO.IsolationLevel
a = a & vbCrLf & "Mode : " & objADO.Mode
a = a & vbCrLf & "Provider : " & objADO.Provider
a = a & vbCrLf & "State : " & objADO.State
a = a & vbCrLf & "Version : " & objADO.Version
MsgBox a

'// Recordset properties [オマケ]
On Error Resume Next
a = "-- Recordset properties --"
a = a & vbCrLf & "AbsolutePage : " & rs.AbsolutePage
a = a & vbCrLf & "AbsolutePosition : " & rs.AbsolutePosition
a = a & vbCrLf & "ActiveCommand : " & rs.ActiveCommand
a = a & vbCrLf & "ActiveConnection : " & rs.ActiveConnection
a = a & vbCrLf & "BOF : " & rs.BOF
a = a & vbCrLf & "Bookmark : " & rs.Bookmark
a = a & vbCrLf & "CacheSize : " & rs.CacheSize
a = a & vbCrLf & "CursorLocation : " & rs.CursorLocation
a = a & vbCrLf & "CursorType : " & rs.CursorType
a = a & vbCrLf & "DataMember : " & rs.DataMember
a = a & vbCrLf & "DataSource : " & rs.DataSource
a = a & vbCrLf & "EditMode : " & rs.EditMode
a = a & vbCrLf & "EOF : " & rs.EOF
a = a & vbCrLf & "Filter : " & rs.Filter
a = a & vbCrLf & "Index : " & rs.Index
a = a & vbCrLf & "LockType : " & rs.LockType
a = a & vbCrLf & "MarshalOptions : " & rs.MarshalOptions
a = a & vbCrLf & "MaxRecords : " & rs.MaxRecords
a = a & vbCrLf & "PageCount : " & rs.PageCount
a = a & vbCrLf & "PageSize : " & rs.PageSize
a = a & vbCrLf & "RecordCount : " & rs.RecordCount
a = a & vbCrLf & "Sort : " & rs.Sort
a = a & vbCrLf & "Source : " & rs.Source
a = a & vbCrLf & "State : " & rs.State
a = a & vbCrLf & "Status : " & rs.Status
a = a & vbCrLf & "StayInSync : " & rs.StayInSync
On Error GoTo 0
MsgBox a

'// Disconnect from database
objADO.Close

'// End timer
TimeIt = FormatDateTime((Now - StartTime), 3)

'// Message
strMSG = "処理が終了しました。"
strMSG = strMSG & vbCrLf & vbCrLf
strMSG = strMSG & "処理時間は、( " & TimeIt & " 秒) だったよ~ん。"
strMSG = strMSG & vbCrLf & vbCrLf
strMSG = strMSG & "THANK YOU!  (`へ´)v"
strMSG = strMSG & vbCrLf & vbCrLf & vbCrLf & ">> " & strSqlFile

'// Show message
x = MsgBox(strMSG, 64, strTitle)

WScript.Quit

028. LDAP情報の取得

'// Initial definition
Set fso = CreateObject("Scripting.FileSystemObject")
strTitle = fso.GetBaseName(WScript.ScriptFullName)

str00 = "[アカウント]を入力して下さい"
str00 = str00 & vbCrLf
str00 = str00 & vbCrLf & "0:ログインアカウント情報"
str00 = str00 & vbCrLf & "1:クライアント情報"
str00 = str00 & vbCrLf & "※何も入力しないとログインアカウント情報を表示します。"

strUser = InputBox(str00, strTitle, 0)
strUser = Trim(strUser)

If strUser = "" Or strUser = "0" Or strUser = "1" Then

    Set objSysInfo = CreateObject("ADSystemInfo")

    str00 = "-- ログイン情報 --"
    str00 = str00 & vbCrLf & "User name : " & objSysInfo.UserName
    str00 = str00 & vbCrLf & "Computer name : " & objSysInfo.ComputerName
    str00 = str00 & vbCrLf & "Site name : " & objSysInfo.SiteName
    str00 = str00 & vbCrLf & "Domain short name : " & objSysInfo.DomainShortName
    str00 = str00 & vbCrLf & "Domain DNS name : " & objSysInfo.DomainDNSName
    str00 = str00 & vbCrLf & "Forest DNS name : " & objSysInfo.ForestDNSName
    str00 = str00 & vbCrLf & "PDC role owner : " & objSysInfo.PDCRoleOwner
    str00 = str00 & vbCrLf & "Schema role owner : " & objSysInfo.SchemaRoleOwner
    str00 = str00 & vbCrLf & "Domain is in native mode : " & objSysInfo.IsNativeMode
    MsgBox str00

    If strUser = "1" Then
        strUser = "LDAP://" & objSysInfo.ComputerName
    Else
        strUser = "LDAP://" & objSysInfo.UserName
    End If

Else

    strADsPath = GetObject("GC://RootDSE").Get("defaultNamingContext")

    flg_ok = "NG"
    strDC = strADsPath: Call get_adspath(strDC)
    strDC = "[追加ドメイン]": If flg_ok = "NG" Then Call get_adspath(strDC)
    strDC = "[追加ドメコン]": If flg_ok = "NG" Then Call get_adspath(strDC)

    If flg_ok = "NG" Then
        MsgBox strUser & " は存在しません。", 64, strTitle
        WScript.Quit
    End If

End If

Call get_information(strUser)

WScript.Quit


Function get_adspath(strDC)

    Set objCon = CreateObject("ADODB.Connection")
    objCon.provider = "ADsDSOObject"
    objCon.Open "Active Directory Provider"
    Set objCmd = CreateObject("ADODB.Command")
    Set objCmd.ActiveConnection = objCon

    strSQL = "select * from 'LDAP://" & strDC & "' where cn='" & strUser & "'"

    objCmd.CommandText = strSQL
    Set objRs = objCmd.Execute

    If objRs.EOF Then Exit Function

    str00 = "-- ADsPath 情報 --"
    str00 = str00 & vbCrLf & "Fields.Count = " & objRs.Fields.Count
    str00 = str00 & vbCrLf & "Fields(0).Name = " & objRs.Fields(0).Name
    str00 = str00 & vbCrLf & "Fields(0).Value = " & objRs.Fields(0).Value
    MsgBox str00

    strUser = objRs(0)
    flg_ok = "OK"

    objRs.Close
    objCon.Close

End Function

Function get_information(strUser)

    On Error Resume Next

    Set objUser = GetObject(strUser)
    a = "-- AD情報 --"
    str00 = str00 & vbCrLf & "cn : " & objUser.Get("cn")
    str00 = str00 & vbCrLf & "PasswordLastChanged : " & objUser.PasswordLastChanged
    str00 = str00 & vbCrLf & "aCSPolicyName : " & objUser.Get("aCSPolicyName")
    str00 = str00 & vbCrLf & "maxStorage : " & objUser.Get("maxStorage")
    str00 = str00 & vbCrLf & "memberOf : " & objUser.Get("memberOf")
    str00 = str00 & vbCrLf & "mhsORAddress : " & objUser.Get("mhsORAddress")
    str00 = str00 & vbCrLf & "middleName : " & objUser.Get("middleName")
    str00 = str00 & vbCrLf & "mobile : " & objUser.Get("mobile")
    str00 = str00 & vbCrLf & "modifyTimeStamp : " & objUser.Get("modifyTimeStamp")
    str00 = str00 & vbCrLf & "mS-DS-ConsistencyChildCount : " & objUser.Get("mS-DS-ConsistencyChildCount")
    str00 = str00 & vbCrLf & "mS-DS-ConsistencyGuid : " & objUser.Get("mS-DS-ConsistencyGuid")
    str00 = str00 & vbCrLf & "mS-DS-CreatorSID : " & objUser.Get("mS-DS-CreatorSID")
    str00 = str00 & vbCrLf & "msCOM-PartitionSetLink : " & objUser.Get("msCOM-PartitionSetLink")
    str00 = str00 & vbCrLf & "adminCount : " & objUser.Get("adminCount")
    str00 = str00 & vbCrLf & "msCOM-UserLink : " & objUser.Get("msCOM-UserLink")
    str00 = str00 & vbCrLf & "msCOM-UserPartitionSetLink : " & objUser.Get("msCOM-UserPartitionSetLink")
    str00 = str00 & vbCrLf & "msDFSR-ComputerReferenceBL : " & objUser.Get("msDFSR-ComputerReferenceBL")
    str00 = str00 & vbCrLf & "msDFSR-MemberReferenceBL : " & objUser.Get("msDFSR-MemberReferenceBL")
    str00 = str00 & vbCrLf & "msDRM-IdentityCertificate : " & objUser.Get("msDRM-IdentityCertificate")
    str00 = str00 & vbCrLf & "msDS-AllowedToDelegateTo : " & objUser.Get("msDS-AllowedToDelegateTo")
    str00 = str00 & vbCrLf & "msDS-Approx-Immed-Subordinates : " & objUser.Get("msDS-Approx-Immed-Subordinates")
    str00 = str00 & vbCrLf & "msDS-Cached-Membership : " & objUser.Get("msDS-Cached-Membership")
    str00 = str00 & vbCrLf & "msDS-Cached-Membership-Time-Stamp : " & objUser.Get("msDS-Cached-Membership-Time-Stamp")
    str00 = str00 & vbCrLf & "msDS-KeyVersionNumber : " & objUser.Get("msDS-KeyVersionNumber")
    str00 = str00 & vbCrLf & "adminDescription : " & objUser.Get("adminDescription")
    str00 = str00 & vbCrLf & "msDs-masteredBy : " & objUser.Get("msDs-masteredBy")
    str00 = str00 & vbCrLf & "msDS-MembersForAzRoleBL : " & objUser.Get("msDS-MembersForAzRoleBL")
    str00 = str00 & vbCrLf & "msDS-NCReplCursors : " & objUser.Get("msDS-NCReplCursors")
    str00 = str00 & vbCrLf & "msDS-NCReplInboundNeighbors : " & objUser.Get("msDS-NCReplInboundNeighbors")
    str00 = str00 & vbCrLf & "msDS-NCReplOutboundNeighbors : " & objUser.Get("msDS-NCReplOutboundNeighbors")
    str00 = str00 & vbCrLf & "msDS-NonMembersBL : " & objUser.Get("msDS-NonMembersBL")
    str00 = str00 & vbCrLf & "msDS-ObjectReferenceBL : " & objUser.Get("msDS-ObjectReferenceBL")
    str00 = str00 & vbCrLf & "msDS-OperationsForAzRoleBL : " & objUser.Get("msDS-OperationsForAzRoleBL")
    str00 = str00 & vbCrLf & "msDS-OperationsForAzTaskBL : " & objUser.Get("msDS-OperationsForAzTaskBL")
    str00 = str00 & vbCrLf & "msDS-ReplAttributeMetaData : " & objUser.Get("msDS-ReplAttributeMetaData")
    str00 = str00 & vbCrLf & "adminDisplayName : " & objUser.Get("adminDisplayName")
    str00 = str00 & vbCrLf & "msDS-ReplValueMetaData : " & objUser.Get("msDS-ReplValueMetaData")
    str00 = str00 & vbCrLf & "msDS-Site-Affinity : " & objUser.Get("msDS-Site-Affinity")
    str00 = str00 & vbCrLf & "msDS-SourceObjectDN : " & objUser.Get("msDS-SourceObjectDN")
    str00 = str00 & vbCrLf & "msDS-TasksForAzRoleBL : " & objUser.Get("msDS-TasksForAzRoleBL")
    str00 = str00 & vbCrLf & "msDS-TasksForAzTaskBL : " & objUser.Get("msDS-TasksForAzTaskBL")
    str00 = str00 & vbCrLf & "msDS-User-Account-Control-Computed : " & objUser.Get("msDS-User-Account-Control-Computed")
    str00 = str00 & vbCrLf & "msExchAssistantName : " & objUser.Get("msExchAssistantName")
    str00 = str00 & vbCrLf & "msExchHouseIdentifier : " & objUser.Get("msExchHouseIdentifier")
    str00 = str00 & vbCrLf & "msExchLabeledURI : " & objUser.Get("msExchLabeledURI")
    str00 = str00 & vbCrLf & "msIIS-FTPDir : " & objUser.Get("msIIS-FTPDir")
    str00 = str00 & vbCrLf & "allowedAttributes : " & objUser.Get("allowedAttributes")
    str00 = str00 & vbCrLf & "msIIS-FTPRoot : " & objUser.Get("msIIS-FTPRoot")
    str00 = str00 & vbCrLf & "mSMQDigests : " & objUser.Get("mSMQDigests")
    str00 = str00 & vbCrLf & "mSMQDigestsMig : " & objUser.Get("mSMQDigestsMig")
    str00 = str00 & vbCrLf & "mSMQSignCertificates : " & objUser.Get("mSMQSignCertificates")
    str00 = str00 & vbCrLf & "mSMQSignCertificatesMig : " & objUser.Get("mSMQSignCertificatesMig")
    str00 = str00 & vbCrLf & "msNPAllowDialin : " & objUser.Get("msNPAllowDialin")
    str00 = str00 & vbCrLf & "msNPCallingStationID : " & objUser.Get("msNPCallingStationID")
    str00 = str00 & vbCrLf & "msNPSavedCallingStationID : " & objUser.Get("msNPSavedCallingStationID")
    str00 = str00 & vbCrLf & "msRADIUSCallbackNumber : " & objUser.Get("msRADIUSCallbackNumber")
    str00 = str00 & vbCrLf & "msRADIUSFramedIPAddress : " & objUser.Get("msRADIUSFramedIPAddress")
    str00 = str00 & vbCrLf & "allowedAttributesEffective : " & objUser.Get("allowedAttributesEffective")
    str00 = str00 & vbCrLf & "msRADIUSFramedRoute : " & objUser.Get("msRADIUSFramedRoute")
    str00 = str00 & vbCrLf & "msRADIUSServiceType : " & objUser.Get("msRADIUSServiceType")
    str00 = str00 & vbCrLf & "msRASSavedCallbackNumber : " & objUser.Get("msRASSavedCallbackNumber")
    str00 = str00 & vbCrLf & "msRASSavedFramedIPAddress : " & objUser.Get("msRASSavedFramedIPAddress")
    str00 = str00 & vbCrLf & "msRASSavedFramedRoute : " & objUser.Get("msRASSavedFramedRoute")
    str00 = str00 & vbCrLf & "msSFU30Name : " & objUser.Get("msSFU30Name")
    str00 = str00 & vbCrLf & "msSFU30NisDomain : " & objUser.Get("msSFU30NisDomain")
    str00 = str00 & vbCrLf & "msSFU30PosixMemberOf : " & objUser.Get("msSFU30PosixMemberOf")
    str00 = str00 & vbCrLf & "name : " & objUser.Get("name")
    str00 = str00 & vbCrLf & "netbootSCPBL : " & objUser.Get("netbootSCPBL")
    str00 = str00 & vbCrLf & "allowedChildClasses : " & objUser.Get("allowedChildClasses")
    str00 = str00 & vbCrLf & "networkAddress : " & objUser.Get("networkAddress")
    str00 = str00 & vbCrLf & "nonSecurityMemberBL : " & objUser.Get("nonSecurityMemberBL")
    str00 = str00 & vbCrLf & "ntPwdHistory : " & objUser.Get("ntPwdHistory")
    str00 = str00 & vbCrLf & "o : " & objUser.Get("o")
    str00 = str00 & vbCrLf & "objectGUID : " & objUser.Get("objectGUID")
    str00 = str00 & vbCrLf & "objectVersion : " & objUser.Get("objectVersion")
    str00 = str00 & vbCrLf & "operatorCount : " & objUser.Get("operatorCount")
    str00 = str00 & vbCrLf & "otherFacsimileTelephoneNumber : " & objUser.Get("otherFacsimileTelephoneNumber")
    str00 = str00 & vbCrLf & "otherHomePhone : " & objUser.Get("otherHomePhone")
    str00 = str00 & vbCrLf & "otherIpPhone : " & objUser.Get("otherIpPhone")
    str00 = str00 & vbCrLf & "allowedChildClassesEffective : " & objUser.Get("allowedChildClassesEffective")
    str00 = str00 & vbCrLf & "otherLoginWorkstations : " & objUser.Get("otherLoginWorkstations")
    str00 = str00 & vbCrLf & "otherMailbox : " & objUser.Get("otherMailbox")
    str00 = str00 & vbCrLf & "otherMobile : " & objUser.Get("otherMobile")
    str00 = str00 & vbCrLf & "otherPager : " & objUser.Get("otherPager")
    str00 = str00 & vbCrLf & "otherTelephone : " & objUser.Get("otherTelephone")
    str00 = str00 & vbCrLf & "otherWellKnownObjects : " & objUser.Get("otherWellKnownObjects")
    str00 = str00 & vbCrLf & "ou : " & objUser.Get("ou")
    str00 = str00 & vbCrLf & "ownerBL : " & objUser.Get("ownerBL")
    str00 = str00 & vbCrLf & "pager : " & objUser.Get("pager")
    str00 = str00 & vbCrLf & "partialAttributeDeletionList : " & objUser.Get("partialAttributeDeletionList")
    str00 = str00 & vbCrLf & "altSecurityIdentities : " & objUser.Get("altSecurityIdentities")
    str00 = str00 & vbCrLf & "partialAttributeSet : " & objUser.Get("partialAttributeSet")
    str00 = str00 & vbCrLf & "personalTitle : " & objUser.Get("personalTitle")
    str00 = str00 & vbCrLf & "photo : " & objUser.Get("photo")
    str00 = str00 & vbCrLf & "physicalDeliveryOfficeName : " & objUser.Get("physicalDeliveryOfficeName")
    str00 = str00 & vbCrLf & "possibleInferiors : " & objUser.Get("possibleInferiors")
    str00 = str00 & vbCrLf & "postalAddress : " & objUser.Get("postalAddress")
    str00 = str00 & vbCrLf & "postalCode : " & objUser.Get("postalCode")
    str00 = str00 & vbCrLf & "postOfficeBox : " & objUser.Get("postOfficeBox")
    str00 = str00 & vbCrLf & "preferredDeliveryMethod : " & objUser.Get("preferredDeliveryMethod")
    str00 = str00 & vbCrLf & "preferredLanguage : " & objUser.Get("preferredLanguage")
    str00 = str00 & vbCrLf & "assistant : " & objUser.Get("assistant")
    str00 = str00 & vbCrLf & "preferredOU : " & objUser.Get("preferredOU")
    str00 = str00 & vbCrLf & "primaryGroupID : " & objUser.Get("primaryGroupID")
    str00 = str00 & vbCrLf & "primaryInternationalISDNNumber : " & objUser.Get("primaryInternationalISDNNumber")
    str00 = str00 & vbCrLf & "primaryTelexNumber : " & objUser.Get("primaryTelexNumber")
    str00 = str00 & vbCrLf & "profilePath : " & objUser.Get("profilePath")
    str00 = str00 & vbCrLf & "proxiedObjectName : " & objUser.Get("proxiedObjectName")
    str00 = str00 & vbCrLf & "proxyAddresses : " & objUser.Get("proxyAddresses")
    str00 = str00 & vbCrLf & "pwdLastSet : " & objUser.Get("pwdLastSet")
    str00 = str00 & vbCrLf & "queryPolicyBL : " & objUser.Get("queryPolicyBL")
    str00 = str00 & vbCrLf & "registeredAddress : " & objUser.Get("registeredAddress")
    str00 = str00 & vbCrLf & "instanceType : " & objUser.Get("instanceType")
    str00 = str00 & vbCrLf & "attributeCertificateAttribute : " & objUser.Get("attributeCertificateAttribute")
    str00 = str00 & vbCrLf & "replPropertyMetaData : " & objUser.Get("replPropertyMetaData")
    str00 = str00 & vbCrLf & "replUpToDateVector : " & objUser.Get("replUpToDateVector")
    str00 = str00 & vbCrLf & "repsFrom : " & objUser.Get("repsFrom")
    str00 = str00 & vbCrLf & "repsTo : " & objUser.Get("repsTo")
    str00 = str00 & vbCrLf & "revision : " & objUser.Get("revision")
    str00 = str00 & vbCrLf & "rid : " & objUser.Get("rid")
    str00 = str00 & vbCrLf & "roomNumber : " & objUser.Get("roomNumber")
    str00 = str00 & vbCrLf & "sAMAccountType : " & objUser.Get("sAMAccountType")
    str00 = str00 & vbCrLf & "scriptPath : " & objUser.Get("scriptPath")
    str00 = str00 & vbCrLf & "sDRightsEffective : " & objUser.Get("sDRightsEffective")
    str00 = str00 & vbCrLf & "audio : " & objUser.Get("audio")
    str00 = str00 & vbCrLf & "secretary : " & objUser.Get("secretary")
    str00 = str00 & vbCrLf & "securityIdentifier : " & objUser.Get("securityIdentifier")
    str00 = str00 & vbCrLf & "seeAlso : " & objUser.Get("seeAlso")
    str00 = str00 & vbCrLf & "serialNumber : " & objUser.Get("serialNumber")
    str00 = str00 & vbCrLf & "serverReferenceBL : " & objUser.Get("serverReferenceBL")
    str00 = str00 & vbCrLf & "servicePrincipalName : " & objUser.Get("servicePrincipalName")
    str00 = str00 & vbCrLf & "shadowExpire : " & objUser.Get("shadowExpire")
    str00 = str00 & vbCrLf & "shadowFlag : " & objUser.Get("shadowFlag")
    str00 = str00 & vbCrLf & "shadowInactive : " & objUser.Get("shadowInactive")
    str00 = str00 & vbCrLf & "shadowLastChange : " & objUser.Get("shadowLastChange")
    str00 = str00 & vbCrLf & "badPasswordTime : " & objUser.Get("badPasswordTime")
    str00 = str00 & vbCrLf & "shadowMax : " & objUser.Get("shadowMax")
    str00 = str00 & vbCrLf & "shadowMin : " & objUser.Get("shadowMin")
    str00 = str00 & vbCrLf & "shadowWarning : " & objUser.Get("shadowWarning")
    str00 = str00 & vbCrLf & "showInAddressBook : " & objUser.Get("showInAddressBook")
    str00 = str00 & vbCrLf & "showInAdvancedViewOnly : " & objUser.Get("showInAdvancedViewOnly")
    str00 = str00 & vbCrLf & "sIDHistory : " & objUser.Get("sIDHistory")
    str00 = str00 & vbCrLf & "siteObjectBL : " & objUser.Get("siteObjectBL")
    str00 = str00 & vbCrLf & "sn : " & objUser.Get("sn")  'ラスト ネーム (Last Name)
    str00 = str00 & vbCrLf & "st : " & objUser.Get("st")
    str00 = str00 & vbCrLf & "street : " & objUser.Get("street")
    str00 = str00 & vbCrLf & "badPwdCount : " & objUser.Get("badPwdCount")
    str00 = str00 & vbCrLf & "streetAddress : " & objUser.Get("streetAddress")
    str00 = str00 & vbCrLf & "structuralObjectClass : " & objUser.Get("structuralObjectClass")
    str00 = str00 & vbCrLf & "subRefs : " & objUser.Get("subRefs")
    str00 = str00 & vbCrLf & "subSchemaSubEntry : " & objUser.Get("subSchemaSubEntry")
    str00 = str00 & vbCrLf & "supplementalCredentials : " & objUser.Get("supplementalCredentials")
    str00 = str00 & vbCrLf & "systemFlags : " & objUser.Get("systemFlags")
    str00 = str00 & vbCrLf & "telephoneNumber : " & objUser.Get("telephoneNumber")
    str00 = str00 & vbCrLf & "teletexTerminalIdentifier : " & objUser.Get("teletexTerminalIdentifier")
    str00 = str00 & vbCrLf & "telexNumber : " & objUser.Get("telexNumber")
    str00 = str00 & vbCrLf & "terminalServer : " & objUser.Get("terminalServer")
    str00 = str00 & vbCrLf & "bridgeheadServerListBL : " & objUser.Get("bridgeheadServerListBL")
    str00 = str00 & vbCrLf & "textEncodedORAddress : " & objUser.Get("textEncodedORAddress")
    str00 = str00 & vbCrLf & "thumbnailLogo : " & objUser.Get("thumbnailLogo")
    str00 = str00 & vbCrLf & "thumbnailPhoto : " & objUser.Get("thumbnailPhoto")
    str00 = str00 & vbCrLf & "title : " & objUser.Get("title")
    str00 = str00 & vbCrLf & "tokenGroups : " & objUser.Get("tokenGroups")
    str00 = str00 & vbCrLf & "tokenGroupsGlobalAndUniversal : " & objUser.Get("tokenGroupsGlobalAndUniversal")
    str00 = str00 & vbCrLf & "tokenGroupsNoGCAcceptable : " & objUser.Get("tokenGroupsNoGCAcceptable")
    str00 = str00 & vbCrLf & "uid : " & objUser.Get("uid")
    str00 = str00 & vbCrLf & "uidNumber : " & objUser.Get("uidNumber")
    str00 = str00 & vbCrLf & "unicodePwd : " & objUser.Get("unicodePwd")
    str00 = str00 & vbCrLf & "businessCategory : " & objUser.Get("businessCategory")
    str00 = str00 & vbCrLf & "unixHomeDirectory : " & objUser.Get("unixHomeDirectory")
    str00 = str00 & vbCrLf & "unixUserPassword : " & objUser.Get("unixUserPassword")
    str00 = str00 & vbCrLf & "url : " & objUser.Get("url")
    str00 = str00 & vbCrLf & "userAccountControl : " & objUser.Get("userAccountControl")
    str00 = str00 & vbCrLf & "userCert : " & objUser.Get("userCert")
    str00 = str00 & vbCrLf & "userCertificate : " & objUser.Get("userCertificate")
'    str00 = str00 & vbCrLf & "userParameters : " & objUser.Get("userParameters")
    str00 = str00 & vbCrLf & "userPassword : " & objUser.userPassword
    str00 = str00 & vbCrLf & "userPKCS12 : " & objUser.Get("userPKCS12")
    str00 = str00 & vbCrLf & "userPrincipalName : " & objUser.Get("userPrincipalName")
    str00 = str00 & vbCrLf & "c : " & objUser.Get("c")
    str00 = str00 & vbCrLf & "userSharedFolder : " & objUser.Get("userSharedFolder")
    str00 = str00 & vbCrLf & "userSharedFolderOther : " & objUser.Get("userSharedFolderOther")
    str00 = str00 & vbCrLf & "userSMIMECertificate : " & objUser.Get("userSMIMECertificate")
    str00 = str00 & vbCrLf & "userWorkstations : " & objUser.Get("userWorkstations")
    str00 = str00 & vbCrLf & "uSNChanged : " & objUser.Get("uSNChanged")
    str00 = str00 & vbCrLf & "uSNCreated : " & objUser.Get("uSNCreated")
    str00 = str00 & vbCrLf & "uSNDSALastObjRemoved : " & objUser.Get("uSNDSALastObjRemoved")
    str00 = str00 & vbCrLf & "USNIntersite : " & objUser.Get("USNIntersite")
    str00 = str00 & vbCrLf & "uSNLastObjRem : " & objUser.Get("uSNLastObjRem")
    str00 = str00 & vbCrLf & "uSNSource : " & objUser.Get("uSNSource")
    str00 = str00 & vbCrLf & "canonicalName : " & objUser.Get("canonicalName")
    str00 = str00 & vbCrLf & "wbemPath : " & objUser.Get("wbemPath")
    str00 = str00 & vbCrLf & "wellKnownObjects : " & objUser.Get("wellKnownObjects")
    str00 = str00 & vbCrLf & "whenChanged : " & objUser.Get("whenChanged")
    str00 = str00 & vbCrLf & "whenCreated : " & objUser.Get("whenCreated")
    str00 = str00 & vbCrLf & "wWWHomePage : " & objUser.Get("wWWHomePage")
    str00 = str00 & vbCrLf & "x121Address : " & objUser.Get("x121Address")
    str00 = str00 & vbCrLf & "x500uniqueIdentifier : " & objUser.Get("x500uniqueIdentifier")
    str00 = str00 & vbCrLf & "carLicense : " & objUser.Get("carLicense")
    str00 = str00 & vbCrLf & "co : " & objUser.Get("co")
    str00 = str00 & vbCrLf & "nTSecurityDescriptor : " & objUser.Get("nTSecurityDescriptor")
    str00 = str00 & vbCrLf & "codePage : " & objUser.Get("codePage")
    str00 = str00 & vbCrLf & "comment : " & objUser.Get("comment")
    str00 = str00 & vbCrLf & "company : " & objUser.Get("company")
    str00 = str00 & vbCrLf & "controlAccessRights : " & objUser.Get("controlAccessRights")
    str00 = str00 & vbCrLf & "countryCode : " & objUser.Get("countryCode")
    str00 = str00 & vbCrLf & "createTimeStamp : " & objUser.Get("createTimeStamp")
    str00 = str00 & vbCrLf & "dBCSPwd : " & objUser.Get("dBCSPwd")
    str00 = str00 & vbCrLf & "defaultClassStore : " & objUser.Get("defaultClassStore")
    str00 = str00 & vbCrLf & "department : " & objUser.Get("department")
    str00 = str00 & vbCrLf & "departmentNumber : " & objUser.Get("departmentNumber")
    str00 = str00 & vbCrLf & "objectCategory : " & objUser.Get("objectCategory")
    str00 = str00 & vbCrLf & "description : " & objUser.Get("description")
    str00 = str00 & vbCrLf & "desktopProfile : " & objUser.Get("desktopProfile")
    str00 = str00 & vbCrLf & "destinationIndicator : " & objUser.Get("destinationIndicator")
    str00 = str00 & vbCrLf & "directReports : " & objUser.Get("directReports")
    str00 = str00 & vbCrLf & "displayName : " & objUser.Get("displayName")  '表示名 (Display Name)
    str00 = str00 & vbCrLf & "displayNamePrintable : " & objUser.Get("displayNamePrintable")
    str00 = str00 & vbCrLf & "distinguishedName : " & objUser.Get("distinguishedName")  '識別名 (Distinguished Name)
    str00 = str00 & vbCrLf & "division : " & objUser.Get("division")
    str00 = str00 & vbCrLf & "dSASignature : " & objUser.Get("dSASignature")
    str00 = str00 & vbCrLf & "dSCorePropagationData : " & objUser.Get("dSCorePropagationData")
    str00 = str00 & vbCrLf & "objectClass : " & objUser.Get("objectClass")
    str00 = str00 & vbCrLf & "dynamicLDAPServer : " & objUser.Get("dynamicLDAPServer")
    str00 = str00 & vbCrLf & "employeeID : " & objUser.Get("employeeID")
    str00 = str00 & vbCrLf & "employeeNumber : " & objUser.Get("employeeNumber")
    str00 = str00 & vbCrLf & "employeeType : " & objUser.Get("employeeType")
    str00 = str00 & vbCrLf & "extensionName : " & objUser.Get("extensionName")
    str00 = str00 & vbCrLf & "facsimileTelephoneNumber : " & objUser.Get("facsimileTelephoneNumber")
    str00 = str00 & vbCrLf & "flags : " & objUser.Get("flags")
    str00 = str00 & vbCrLf & "fromEntry : " & objUser.Get("fromEntry")
    str00 = str00 & vbCrLf & "frsComputerReferenceBL : " & objUser.Get("frsComputerReferenceBL")
    str00 = str00 & vbCrLf & "fRSMemberReferenceBL : " & objUser.Get("fRSMemberReferenceBL")
    str00 = str00 & vbCrLf & "objectSid : " & objUser.Get("objectSid")
    str00 = str00 & vbCrLf & "fSMORoleOwner : " & objUser.Get("fSMORoleOwner")
    str00 = str00 & vbCrLf & "garbageCollPeriod : " & objUser.Get("garbageCollPeriod")
    str00 = str00 & vbCrLf & "gecos : " & objUser.Get("gecos")
    str00 = str00 & vbCrLf & "generationQualifier : " & objUser.Get("generationQualifier")
    str00 = str00 & vbCrLf & "gidNumber : " & objUser.Get("gidNumber")
    str00 = str00 & vbCrLf & "givenName : " & objUser.Get("givenName")
    str00 = str00 & vbCrLf & "groupMembershipSAM : " & objUser.Get("groupMembershipSAM")
    str00 = str00 & vbCrLf & "groupPriority : " & objUser.Get("groupPriority")
    str00 = str00 & vbCrLf & "groupsToIgnore : " & objUser.Get("groupsToIgnore")
    str00 = str00 & vbCrLf & "homeDirectory : " & objUser.Get("homeDirectory")
    str00 = str00 & vbCrLf & "sAMAccountName : " & objUser.Get("sAMAccountName")  'ログオン名 (SAM Account Name)
    str00 = str00 & vbCrLf & "homeDrive : " & objUser.Get("homeDrive")
    str00 = str00 & vbCrLf & "homePhone : " & objUser.Get("homePhone")
    str00 = str00 & vbCrLf & "homePostalAddress : " & objUser.Get("homePostalAddress")
    str00 = str00 & vbCrLf & "houseIdentifier : " & objUser.Get("houseIdentifier")
    str00 = str00 & vbCrLf & "info : " & objUser.Get("info")
    str00 = str00 & vbCrLf & "initials : " & objUser.Get("initials")
    str00 = str00 & vbCrLf & "internationalISDNNumber : " & objUser.Get("internationalISDNNumber")
    str00 = str00 & vbCrLf & "ipPhone : " & objUser.Get("ipPhone")
    str00 = str00 & vbCrLf & "isCriticalSystemObject : " & objUser.Get("isCriticalSystemObject")
    str00 = str00 & vbCrLf & "isDeleted : " & objUser.Get("isDeleted")
    str00 = str00 & vbCrLf & "accountExpires : " & objUser.Get("accountExpires")
    str00 = str00 & vbCrLf & "isPrivilegeHolder : " & objUser.Get("isPrivilegeHolder")
    str00 = str00 & vbCrLf & "jpegPhoto : " & objUser.Get("jpegPhoto")
    str00 = str00 & vbCrLf & "l : " & objUser.Get("l")
    str00 = str00 & vbCrLf & "labeledURI : " & objUser.Get("labeledURI")
    str00 = str00 & vbCrLf & "lastKnownParent : " & objUser.Get("lastKnownParent")
    str00 = str00 & vbCrLf & "lastLogoff : " & objUser.Get("lastLogoff")
    str00 = str00 & vbCrLf & "lastLogon : " & objUser.Get("lastLogon")
    str00 = str00 & vbCrLf & "lastLogonTimestamp : " & objUser.Get("lastLogonTimestamp")
    str00 = str00 & vbCrLf & "legacyExchangeDN : " & objUser.Get("legacyExchangeDN")
    str00 = str00 & vbCrLf & "lmPwdHistory : " & objUser.Get("lmPwdHistory")
    str00 = str00 & vbCrLf & "accountNameHistory : " & objUser.Get("accountNameHistory")
    str00 = str00 & vbCrLf & "localeID : " & objUser.Get("localeID")
    str00 = str00 & vbCrLf & "lockoutTime : " & objUser.Get("lockoutTime")
    str00 = str00 & vbCrLf & "loginShell : " & objUser.Get("loginShell")
    str00 = str00 & vbCrLf & "logonCount : " & objUser.Get("logonCount")
    str00 = str00 & vbCrLf & "logonHours : " & objUser.Get("logonHours")
    str00 = str00 & vbCrLf & "logonWorkstation : " & objUser.Get("logonWorkstation")
    str00 = str00 & vbCrLf & "mail : " & objUser.Get("mail")
    str00 = str00 & vbCrLf & "managedObjects : " & objUser.Get("managedObjects")
    str00 = str00 & vbCrLf & "manager : " & objUser.Get("manager")
    str00 = str00 & vbCrLf & "masteredBy : " & objUser.Get("masteredBy")
    On Error GoTo 0

    MsgBox str00

End Function

029. UTF8 文字列の MD5 ハッシュ値

レジストリ [HKEY_CLASSES_ROOT\System.Security.Cryptography.MD5CryptoServiceProvider] を参照している

レジストリ [HKEY_CLASSES_ROOT\System.Text.UTF8Encoding] を参照している

.NET Framework が入っていれば使えるらしい(バージョンは??)

BASP21 や Base64.dll を使えばラクなんですけどね・・・

Set objMD5 = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
Set objUTF8 = CreateObject("System.Text.UTF8Encoding")

'// 文字列を UTF8 にエンコードし、バイト配列に変換
bytes = objUTF8.GetBytes_4("テスト")

'// ハッシュ値を計算(バイナリ)
hash = objMD5.ComputeHash_2((bytes))

'// バイナリを16進数文字列に変換
For i = 1 To LenB(hash)
    a = a & Right("0" & Hex(AscB(MidB(hash, i, 1))), 2)
Next
strText = LCase(a)

'// 結果を返す
WScript.Echo strText

030. UTF8 文字列の SHA1 ハッシュ値

Set objSHA1 = CreateObject("System.Security.Cryptography.SHA1Managed")
Set objUTF8 = CreateObject("System.Text.UTF8Encoding")

'// 文字列を UTF8 にエンコードし、バイト配列に変換
bytes = objUTF8.GetBytes_4("テスト")

'// ハッシュ値を計算(バイナリ)
hash = objSHA1.ComputeHash_2((bytes))

'// バイナリを16進数文字列に変換
For i = 1 To LenB(hash)
    a = a & Right("0" & Hex(AscB(MidB(hash, i, 1))), 2)
Next
strText = LCase(a)

'// 結果を返す
WScript.Echo strText

031. UTF8 文字列の SHA256 ハッシュ値

Set objSHA256 = CreateObject("System.Security.Cryptography.SHA256Managed")
Set objUTF8 = CreateObject("System.Text.UTF8Encoding")

'// 文字列を UTF8 にエンコードし、バイト配列に変換
bytes = objUTF8.GetBytes_4("テスト")

'// ハッシュ値を計算(バイナリ)
hash = objSHA256.ComputeHash_2((bytes))

'// バイナリを16進数文字列に変換
For i = 1 To LenB(hash)
    a = a & Right("0" & Hex(AscB(MidB(hash, i, 1))), 2)
Next
strText = LCase(a)

'// 結果を返す
WScript.Echo strText

032. Shift_JIS 文字列の SHA1 ハッシュ値 & ファイルに書き込み

CAPICOM を使うには、マイクロソフトのサイトから "capicom.dll" をダウンロードし、

capicom.dll をパスの通ったフォルダ(C:\Windows\System32 など)に置き、

「ファイル名を指定して実行」から "regsvr32 capicom.dll" を実行する。

Set objSHA1 = CreateObject("System.Security.Cryptography.SHA1Managed")
Set objStrm = CreateObject("ADODB.Stream")
Set objUtil = CreateObject("CAPICOM.Utilities")

'// Shift_JIS 文字列をバイト配列に変換
objStrm.Open
objStrm.Type = 2  '2:Text
objStrm.Charset = "shift_jis"  'レジストリ [HKEY_CLASSES_ROOT\MIME\Database\Charset]
objStrm.WriteText "テスト"
' バイナリに変換
objStrm.Position = 0
objStrm.Type = 1  '1:Binary
' バイト配列に変換
bytes = objStrm.Read(objStrm.Size)  '(objStrm.Size) は、なくてもいい
objStrm.Close

'// ハッシュ値を計算(バイナリ)
hash = objSHA1.ComputeHash_2((bytes))

'// バイナリを16進数文字列に変換
strText = LCase(objUtil.BinaryToHex(hash))

'// ファイルに書き込み(バイナリ)
objStrm.Open
objStrm.Type = 1  '1:Binary
objStrm.Write hash
objStrm.SaveToFile "SHA1Managed.txt", 2
objStrm.Close

'// 結果を返す(16進数文字列)
WScript.Echo strText

033. ファイルの SHA1 ハッシュ値

ファイルをドラッグ&ドロップすると SHA1 ハッシュ値を返す

100MB を超えるような大きいファイルは無理? メモリによる?

こんなことせず素直に fciv.exe などを使えばよいのでは?

MD5, SHA256 にしたいときは objSHA1 の参照先を変更するだけ

 →レジストリ [HKEY_CLASSES_ROOT\System.Security.Cryptography.~] を見よ

Set objSHA1 = CreateObject("System.Security.Cryptography.SHA1Managed")
Set objUtil = CreateObject("CAPICOM.Utilities")
Set fso = CreateObject("Scripting.FileSystemObject")

'// Arguments : (0)Input file
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit

'// ファイルをバイト配列に変換
Set objStrm = CreateObject("ADODB.Stream")
objStrm.Open
objStrm.Type = 1  '1:Binary
objStrm.LoadFromFile(objArgs(0))
bytes = objStrm.Read
objStrm.Close

'// ハッシュ値を計算(バイナリ)
hash = objSHA1.ComputeHash_2((bytes))

'// バイナリを16進数文字列に変換
strText = LCase(objUtil.BinaryToHex(hash))

'// 結果を返す
WScript.Echo strText

034. Shift_JIS 文字列 → BASE64 エンコード

.NET Framework ToBase64Transform クラス

http://msdn.microsoft.com/ja-jp/library/system.security.cryptography.tobase64transform.aspx

Set objBase64 = CreateObject("System.Security.Cryptography.ToBase64Transform")
Set objStrm = CreateObject("ADODB.Stream")

i_size = objBase64.InputBlockSize
o_size = objBase64.OutputBlockSize

'//---------------------------------------------------------------------------//
'// CanTransformMultipleBlocks = False の場合、1ブロックずつしかエンコードできない(たぶん)
'//---------------------------------------------------------------------------//

MsgBox "CanTransformMultipleBlocks = " & objBase64.CanTransformMultipleBlocks

'//---------------------------------------------------------------------------//
'// Shift_JIS 文字列をバイト配列に変換
'//---------------------------------------------------------------------------//

objStrm.Open

' Shift_JIS 文字列をインプット
objStrm.Type = 2  '2:Text
objStrm.Charset = "shift_jis"  'レジストリ [HKEY_CLASSES_ROOT\MIME\Database\Charset]
objStrm.WriteText "テスト"

' バイナリに変換
objStrm.Position = 0
objStrm.Type = 1  '1:Binary

' バイト配列に変換
bytes = objStrm.Read

objStrm.Close

'//---------------------------------------------------------------------------//
'// BASE64 エンコード
'//---------------------------------------------------------------------------//

objStrm.Open
objStrm.Type = 1  '1:Binary

' n_block = ブロック数
If LenB(bytes) Mod i_size = 0 Then n_block = LenB(bytes) / i_size Else n_block = LenB(bytes) \ i_size + 1

' 1ブロックごとに処理
For i = 0 To n_block - 1
    ' b_len = 1ブロックのバイト数(基本は i_size = 3 bytes、最後だけ短くなる)
    If LenB(bytes) < (i + 1) * i_size Then b_len = LenB(bytes) - i * i_size Else b_len = i_size
    ' BASE64 エンコード(1ブロックずつ)
    data = objBase64.TransformFinalBlock((bytes), i * i_size, b_len)
    ' オブジェクト(ADODB.Stream)にバイナリを書き込む
    objStrm.Write data
Next

' ASCII 文字列に変換
objStrm.Position = 0
objStrm.Type = 2  '2:Text
objStrm.Charset = "ascii"  'レジストリ [HKEY_CLASSES_ROOT\MIME\Database\Charset]
strText = objStrm.ReadText

objStrm.Close

'//---------------------------------------------------------------------------//
'// 結果を返す
'//---------------------------------------------------------------------------//

WScript.Echo strText

▽その2 (2017.10.10 追記)

strText = "base64 エンコード・デコード"
WScript.Echo base64_encode(strText)

'//-------------------------------------------------------//
'// shift_jis -> base64 エンコード
'//-------------------------------------------------------//
Function base64_encode(strText)
    Set xmlDoc = CreateObject("Microsoft.XMLDOM")
    Set objStrm = CreateObject("ADODB.Stream")
    '// ADODB.StreamTypeEnum
    Const adTypeBinary = 1
    Const adTypeText = 2
    '// shift_jis 読み込み
    objStrm.Open
    objStrm.Type = adTypeText
    objStrm.Charset = "shift_jis"
    objStrm.WriteText strText
    objStrm.Position = 0
    objStrm.Type = adTypeBinary
    '// shift_jis -> base64
    Set objElement = xmlDoc.CreateElement("dummy")
    objElement.DataType = "bin.base64"
    objElement.NodeTypedValue = objStrm.Read
    strBase = objElement.Text
    '// Return
    base64_encode = strBase
End Function

035. Shift_JIS 文字列 ← BASE64 デコード

.NET Framework FromBase64Transform クラス

http://msdn.microsoft.com/ja-jp/library/system.security.cryptography.frombase64transform.aspx
Set objBase64 = CreateObject("System.Security.Cryptography.FromBase64Transform")
Set objStrm = CreateObject("ADODB.Stream")

'//---------------------------------------------------------------------------//
'// ASCII 文字列をバイト配列に変換
'//---------------------------------------------------------------------------//

objStrm.Open

' ASCII 文字列をインプット
objStrm.Type = 2  '2:Text
objStrm.Charset = "ascii"  'レジストリ [HKEY_CLASSES_ROOT\MIME\Database\Charset]
objStrm.WriteText "g2WDWINn"

' バイナリに変換
objStrm.Position = 0
objStrm.Type = 1  '1:Binary

' バイト配列に変換
bytes = objStrm.Read
b_len = objStrm.Size

objStrm.Close

'//---------------------------------------------------------------------------//
'// BASE64 デコード
'//---------------------------------------------------------------------------//

objStrm.Open

' バイト配列をインプット
objStrm.Type = 1  '1:Binary
objStrm.Write objBase64.TransformFinalBlock((bytes), 0, b_len)

' Shift_JIS 文字列に変換
objStrm.Position = 0
objStrm.Type = 2  '2:Text
objStrm.Charset = "shift_jis"  'レジストリ [HKEY_CLASSES_ROOT\MIME\Database\Charset]
strText = objStrm.ReadText

objStrm.Close

'//---------------------------------------------------------------------------//
'// 結果を返す
'//---------------------------------------------------------------------------//

WScript.Echo strText

▽その2 (2017.10.10 追記)

strBase = "YmFzZTY0IINHg5ODUoFbg2iBRYNmg1KBW4No"
WScript.Echo base64_decode(strBase)

'//-------------------------------------------------------//
'// base64 -> shift_jis デコード
'//-------------------------------------------------------//
Function base64_decode(strBase)
    Set xmlDoc = CreateObject("Microsoft.XMLDOM")
    Set objStrm = CreateObject("ADODB.Stream")
    '// ADODB.StreamTypeEnum
    Const adTypeBinary = 1
    Const adTypeText = 2
    '// base64 読み込み
    Set objElement = xmlDoc.CreateElement("dummy")
    objElement.DataType = "bin.base64"
    objElement.Text = strBase
    '// base64 -> shift_jis
    objStrm.Open
    objStrm.Type = adTypeBinary
    objStrm.Write objElement.NodeTypedValue
    objStrm.Position = 0
    objStrm.Type = adTypeText
    objStrm.Charset = "shift_jis"
    strText = objStrm.ReadText
    '// Return
    base64_decode = strText
End Function

036. [CAPICOM] Shift_JIS 文字列のハッシュ値

CAPICOM HashedData Object

http://msdn.microsoft.com/en-us/library/aa382440.aspx

CAPICOM Utilities Object

http://msdn.microsoft.com/en-us/library/aa388176.aspx

CAPICOM_HASH_ALGORITHM

http://msdn.microsoft.com/en-us/library/aa375694.aspx
'//---------------------------------------------//
'// CAPICOM_HASH_ALGORITHM
'//---------------------------------------------//
'   0 : SHA1
'   1 : MD2
'   2 : MD4
'   3 : MD5
'   4 : SHA-256
'   5 : SHA-384
'   6 : SHA-512
'//---------------------------------------------//

Set objHash = CreateObject("CAPICOM.HashedData")
Set objUtil = CreateObject("CAPICOM.Utilities")
Set objStrm = CreateObject("ADODB.Stream")

'// Shift_JIS 文字列をバイト配列に変換
objStrm.Open
' Shift_JIS 文字列をインプット
objStrm.Type = 2  '2:Text
objStrm.Charset = "shift_jis"
objStrm.WriteText "テスト"
' バイナリに変換
objStrm.Position = 0
objStrm.Type = 1  '1:Binary
' バイト配列に変換
bytes = objStrm.Read
objStrm.Close

'// バイト配列をバイナリ文字列に変換
bstr = objUtil.ByteArrayToBinaryString(bytes)

'// ハッシュ値
objHash.Algorithm = 0  '0:SHA1
objHash.Hash (bstr)
strText = LCase(objHash.Value)

'// 結果を返す
WScript.Echo strText

037. [CAPICOM] Shift_JIS 文字列の BASE64 デコード

Set objUtil = CreateObject("CAPICOM.Utilities")

'// BASE64 デコード
data = objUtil.Base64Decode("g2WDWINn")

'// 16進数文字列に変換
data = objUtil.BinaryToHex(data)

'// 16進数文字列を Shift_JIS 文字列に変換
For i = 1 To Len(data) / 2
    strHEX = Mid(data, i * 2 - 1, 2)
    intHEX = CInt("&H" & strHEX)
    '// Shift_JIS 2バイト文字の処理
    If (&H81 <= intHEX And intHEX <= &H9F) Or (&HE0 <= intHEX And intHEX <= &HFC) Then
        strHEX = strHEX & Mid(data, i * 2 + 1, 2)
        i = i + 1
    End If
    strText = strText & Chr("&H" & strHEX)
Next

'// 結果を返す
WScript.Echo strText

038. [CAPICOM] Shift_JIS 文字列の BASE64 デコード(その2)

Set objUtil = CreateObject("CAPICOM.Utilities")
Set objStrm = CreateObject("ADODB.Stream")

'//---------------------------------------------------------------------------//
'// BASE64 デコード
'//---------------------------------------------------------------------------//

data = objUtil.Base64Decode("g2WDWINn")

'//---------------------------------------------------------------------------//
'// 16進数文字列に変換
'//---------------------------------------------------------------------------//

data = objUtil.BinaryToHex(data)

'//---------------------------------------------------------------------------//
'// 16進数文字列を Shift_JIS 文字列に変換
'//---------------------------------------------------------------------------//

' 16進数文字列をインプット
objStrm.Open
objStrm.Type = 2  '2:Text
objStrm.Charset = "shift_jis"

For i = 1 To Len(data) / 2
    strHEX = Mid(data, i * 2 - 1, 2)
    intHEX = CInt("&H" & strHEX)
    ' Shift_JIS 2バイト文字の処理
    If (&H81 <= intHEX And intHEX <= &H9F) Or (&HE0 <= intHEX And intHEX <= &HFC) Then
        strHEX = strHEX & Mid(data, i * 2 + 1, 2)
        i = i + 1
    End If
    objStrm.WriteText Chr("&H" & strHEX)
Next

' Shift_JIS 文字列に変換
objStrm.Position = 0
objStrm.Type = 2  '2:Text
objStrm.Charset = "shift_jis"
strText = objStrm.ReadText
objStrm.Close

'//---------------------------------------------------------------------------//
'// 結果を返す
'//---------------------------------------------------------------------------//

WScript.Echo strText

039. IEで開いているアドレスを取得

Internet Explorer でアドレスバーが隠されているサイトに対して、アドレス(URL)を取得する。

Set objShell = CreateObject("Shell.Application")

For Each objWindow In objShell.Windows
    If TypeName(objWindow.Document) = "HTMLDocument" Then
        x = MsgBox(objWindow.FullName & vbCrLf & objWindow.LocationURL, , objWindow.Document.Title)
    End If
Next

040. ドメインユーザのパスワード有効期限

注)ドメインに参加しているときだけ使える。

Set objNT = CreateObject("WinNTSystemInfo")
'// http://msdn.microsoft.com/en-us/library/aa746345.aspx
'   objNT.UserName
'   objNT.ComputerName
'   objNT.DomainName
'   objNT.PDC

Set objAD = CreateObject("ADSystemInfo")
'// http://msdn.microsoft.com/en-us/library/aa705962.aspx
'   objAD.UserName
'   objAD.ComputerName
'   objAD.SiteName
'   objAD.DomainShortName
'   objAD.DomainDNSName
'   objAD.ForestDNSName
'   objAD.PDCRoleOwner
'   objAD.SchemaRoleOwner
'   objAD.IsNativeMode

Set objUserNT = GetObject("WinNT://" & objNT.DomainName & "/" & objNT.UserName)
Set objUserAD = GetObject("LDAP://" & objAD.UserName)

MsgBox objAD.UserName & vbCrLf & vbCrLf _
     & "アカウント有効期限:" & objUserAD.AccountExpirationDate & vbCrLf _
     & "パスワード最終更新:" & objUserAD.PasswordLastChanged & vbCrLf _
     & "パスワード有効期限:" & objUserNT.PasswordExpirationDate & vbCrLf _
     & "パスワード有効期間:" & Fix(objUserNT.PasswordExpirationDate - objUserAD.PasswordLastChanged) & "日"

Set objUserNT = Nothing
Set objUserAD = Nothing
Set objNT = Nothing
Set objAD = Nothing

041. UTF-8 ファイル読み取り ⇒ Shift_JIS ファイル書き出し

'// Library ADODB
'//     C:\Program Files\Common Files\System\ado\msado28.tlb
'//     Microsoft ActiveX Data Objects 2.8 Library

'// Arguments : (0)Input File, (2)Output File
Set objArgs = WScript.Arguments

Set objStrm = WScript.CreateObject("ADODB.Stream")

'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2

'// ADODB.SaveOptionsEnum
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2

'// UTF-8 ファイル読み取り
objStrm.Open
objStrm.Type = adTypeText
objStrm.Charset = "UTF-8"
objStrm.LoadFromFile objArgs(0)
strText = objStrm.ReadText
objStrm.Close

'// Shift_JIS ファイル書き出し
objStrm.Open
objStrm.Position = 0
objStrm.Charset = "Shift_JIS"
objStrm.WriteText strText
objStrm.SaveToFile objArgs(1), adSaveCreateOverWrite
objStrm.Close

Set objStrm = Nothing

042. エクセルのシート名、インデックス、オブジェクト名

'// Arguments : (0)Excel File
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit

Set objExcel = CreateObject("Excel.Application")

'// Excel File を開く
Set objWorkbook = objExcel.Workbooks.Open(objArgs(0)): objWorkbook.Saved = True

MsgBox "Worksheets.Count = " & objWorkbook.Worksheets.Count, , objWorkbook.Name

For Each objWorksheet In objWorkbook.Worksheets
    a = ""
    a = a & vbCrLf & "シート名 = " & objWorksheet.Name
    a = a & vbCrLf & "インデックス = " & objWorksheet.Index
    a = a & vbCrLf & "オブジェクト名 = " & objWorksheet.CodeName  'VBScript では取れないことも
    MsgBox a
Next

objWorkbook.Close
Set objExcel = Nothing

043. Jet, ACE データベースエンジンでエクセル読み書き

Microsoft Office をインストールしなくても Excel をデータベースとして扱うことで読み書きできる。

Web アプリなどサーバーサイドで実行する場合、マルチスレッドでエラーが出るようならシングルスレッドにする。


▽Microsoft Access 2010 を使用したデータ プログラミング

https://msdn.microsoft.com/ja-jp/library/office/ff965871(v=office.14).aspx

▽Microsoft Access 2010 Runtime

https://www.microsoft.com/ja-jp/download/details.aspx?id=10910

▽Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント

https://www.microsoft.com/ja-jp/download/details.aspx?id=13255

※使用制限あり

▽Microsoft.Jet.OLEDB.4.0

ODBCJT32.DLL / Microsoft Excel Driver (*.xls)

※Jet データベース エンジンはマルチスレッド非対応

▽Microsoft.ACE.OLEDB.12.0

ACEODBC.DLL / Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)

▽データ ソース (ODBC)

-- 32bit OS / 32bit版

%windir%\system32\odbcad32.exe

-- 64bit OS / 32bit版

%windir%\SysWOW64\odbcad32.exe


Jetサンプル.xls, ACEサンプル.xlsx.zip (11KB)

▽Microsoft.Jet.OLEDB.4.0 / SELECT

Set fso = CreateObject("Scripting.FileSystemObject")
Set objADO = CreateObject("ADODB.Connection")

'// Excel File
excel_path = fso.GetParentFolderName(WScript.ScriptFullName) & "\Jetサンプル.xls"

'// ConnectionString
strCon = "Provider=Microsoft.Jet.OLEDB.4.0; Extended Properties=""Excel 8.0;HDR=NO;""; Data Source=" & excel_path & ";"

'// 指定セルから読み取り
strSQL = "SELECT * FROM [Sheet1$A3:A3]"

'// Unrestricted connection timeout
objADO.CommandTimeout = 0

'// Connect to Database
objADO.Open strCon

'// Execute SQL
Set rs = objADO.Execute(strSQL)

'// Read from Excel File
If rs.EOF Then
    x = MsgBox("該当データがありません。" & vbCrLf & vbCrLf & sql_file, 64, strTitle)
    WScript.Quit
Else
    Do Until rs.EOF
        For i = 0 To rs.Fields.Count - 1
            MsgBox rs.Fields(i).Name & vbCrLf & rs.Fields(i).Value
        Next
        rs.Movenext
    Loop
End If

'// Disconnect from Database
objADO.Close

WScript.Quit

▽Microsoft.Jet.OLEDB.4.0 / UPDATE, INSERT

Set fso = CreateObject("Scripting.FileSystemObject")
Set objADO = CreateObject("ADODB.Connection")

'// Excel File
excel_path = fso.GetParentFolderName(WScript.ScriptFullName) & "\Jetサンプル.xls"

'// ConnectionString
strCon = "Provider=Microsoft.Jet.OLEDB.4.0; Extended Properties=""Excel 8.0;HDR=NO;""; Data Source=" & excel_path & ";"

'// 指定セルへ書き込み
strSQL = "UPDATE [Sheet1$A3:A3] SET F1 = Now"
'// 行追加
'strSQL = "INSERT INTO [Sheet1$A0:A0] VALUES (Now)"

'// Unrestricted connection timeout
objADO.CommandTimeout = 0

'// Connect to Database
objADO.Open strCon

'// Execute SQL
Set rs = objADO.Execute(strSQL)

'// ADO properties
a = "-- ADO properties --"
a = a & vbCrLf & "ConnectionString : " & objADO.ConnectionString
a = a & vbCrLf & "Attributes : " & objADO.Attributes
a = a & vbCrLf & "CommandTimeout : " & objADO.CommandTimeout
a = a & vbCrLf & "ConnectionTimeout : " & objADO.ConnectionTimeout
a = a & vbCrLf & "CursorLocation : " & objADO.CursorLocation
a = a & vbCrLf & "DefaultDatabase : " & objADO.DefaultDatabase
a = a & vbCrLf & "IsolationLevel : " & objADO.IsolationLevel
a = a & vbCrLf & "Mode : " & objADO.Mode
a = a & vbCrLf & "Provider : " & objADO.Provider
a = a & vbCrLf & "State : " & objADO.State
a = a & vbCrLf & "Version : " & objADO.Version
MsgBox a

'// Disconnect from Database
objADO.Close

WScript.Quit

▽Microsoft.ACE.OLEDB.12.0 / SELECT

Set fso = CreateObject("Scripting.FileSystemObject")
Set objADO = CreateObject("ADODB.Connection")

'// Excel File
excel_path = fso.GetParentFolderName(WScript.ScriptFullName) & "\ACEサンプル.xlsx"

'// ConnectionString
strCon = "Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties=""Excel 12.0 Xml;HDR=NO;""; Data Source=" & excel_path & ";"

'// 指定セルから読み取り
strSQL = "SELECT * FROM [Sheet1$A3:A3]"

'// Unrestricted connection timeout
objADO.CommandTimeout = 0

'// Connect to Database
objADO.Open strCon

'// Execute SQL
Set rs = objADO.Execute(strSQL)

'// Read from Excel File
If rs.EOF Then
    x = MsgBox("該当データがありません。" & vbCrLf & vbCrLf & sql_file, 64, strTitle)
    WScript.Quit
Else
    Do Until rs.EOF
        For i = 0 To rs.Fields.Count - 1
            MsgBox rs.Fields(i).Name & vbCrLf & rs.Fields(i).Value
        Next
        rs.Movenext
    Loop
End If

'// Disconnect from Database
objADO.Close

WScript.Quit

▽Microsoft.ACE.OLEDB.12.0 / UPDATE, INSERT

Set fso = CreateObject("Scripting.FileSystemObject")
Set objADO = CreateObject("ADODB.Connection")

'// Excel File
excel_path = fso.GetParentFolderName(WScript.ScriptFullName) & "\ACEサンプル.xlsx"

'// ConnectionString
strCon = "Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties=""Excel 12.0 Xml;HDR=NO;""; Data Source=" & excel_path & ";"

'// 指定セルへ書き込み
strSQL = "UPDATE [Sheet1$A3:A3] SET F1 = Now"
'// 行追加
'strSQL = "INSERT INTO [Sheet1$A:C] VALUES (""123"", Now, ""さかた"")"
'// WHERE 指定
'strSQL = "UPDATE [Sheet1$] SET F3 = ""やまもと"" WHERE F1 = ""123"""

'// Unrestricted connection timeout
objADO.CommandTimeout = 0

'// Connect to Database
objADO.Open strCon

'// Execute SQL
Set rs = objADO.Execute(strSQL)

'// ADO properties
a = "-- ADO properties --"
a = a & vbCrLf & "ConnectionString : " & objADO.ConnectionString
a = a & vbCrLf & "Attributes : " & objADO.Attributes
a = a & vbCrLf & "CommandTimeout : " & objADO.CommandTimeout
a = a & vbCrLf & "ConnectionTimeout : " & objADO.ConnectionTimeout
a = a & vbCrLf & "CursorLocation : " & objADO.CursorLocation
a = a & vbCrLf & "DefaultDatabase : " & objADO.DefaultDatabase
a = a & vbCrLf & "IsolationLevel : " & objADO.IsolationLevel
a = a & vbCrLf & "Mode : " & objADO.Mode
a = a & vbCrLf & "Provider : " & objADO.Provider
a = a & vbCrLf & "State : " & objADO.State
a = a & vbCrLf & "Version : " & objADO.Version
MsgBox a

'// Disconnect from Database
objADO.Close

WScript.Quit

044. Shift_JIS 文字列 → HEX(16進数)エンコード

▽その1

strText = "hex(16進数)エンコード・デコード"
WScript.Echo hex_encode(strText)

'//-------------------------------------------------------//
'// shift_jis -> hex エンコード
'//-------------------------------------------------------//
Function hex_encode(strText)
    '// shift_jis -> hex
    For i = 1 To Len(strText)
        aaa = Hex(Asc(Mid(strText, i, 1)))
        If Len(aaa) Mod 2 = 1 Then aaa = "0" & aaa
        strHEX = strHEX & aaa
    Next
    '// Return
    hex_encode = strHEX
End Function

▽その2

strText = "hex(16進数)エンコード・デコード"
WScript.Echo hex_encode(strText)

'//-------------------------------------------------------//
'// shift_jis -> hex エンコード
'//-------------------------------------------------------//
Function hex_encode(strText)
    Set objStrm = CreateObject("ADODB.Stream")
    Set objUtil = CreateObject("CAPICOM.Utilities")
    '// ADODB.StreamTypeEnum
    Const adTypeBinary = 1
    Const adTypeText = 2
    '// shift_jis -> binary
    objStrm.Open
    objStrm.Type = adTypeText
    objStrm.Charset = "shift_jis"
    objStrm.WriteText strText
    objStrm.Position = 0
    objStrm.Type = adTypeBinary
    binary = objStrm.Read
    '// binary -> hex
    strHEX = objUtil.BinaryToHex(binary)
    '// Return
    hex_encode = strHEX
End Function

▽その3

strText = "hex(16進数)エンコード・デコード"
WScript.Echo hex_encode(strText)

'//-------------------------------------------------------//
'// shift_jis -> hex エンコード
'//-------------------------------------------------------//
Function hex_encode(strText)
    Set objStrm = CreateObject("ADODB.Stream")
    '// ADODB.StreamTypeEnum
    Const adTypeBinary = 1
    Const adTypeText = 2
    '// shift_jis -> binary
    objStrm.Open
    objStrm.Type = adTypeText
    objStrm.Charset = "shift_jis"
    objStrm.WriteText strText
    objStrm.Position = 0
    objStrm.Type = adTypeBinary
    binary = objStrm.Read
    '// binary -> hex
    For i = 1 To LenB(binary)
        strHEX = strHEX & Right("0" & Hex(AscB(MidB(binary, i, 1))), 2)
    Next
    '// Return
    hex_encode = strHEX
End Function

045. Shift_JIS 文字列 ← HEX(16進数)デコード

▽その1

strHEX = "6865788169313690699094816A834783938352815B8368814583668352815B8368"
WScript.Echo hex_decode(strHEX)

'//-------------------------------------------------------//
'// hex -> shift_jis デコード
'//-------------------------------------------------------//
Function hex_decode(strHEX)
    '// hex -> shift_jis
    For i = 1 To Len(strHEX) / 2
        aaa = Mid(strHEX, i * 2 - 1, 2)
        '// 2バイト文字
        If Left(aaa, 1) = "8" Or Left(aaa, 1) = "9" Or Left(aaa, 1) = "E" Or Left(aaa, 1) = "F" Then
            aaa = Mid(strHEX, i * 2 - 1, 4)
            i = i + 1
        End If
        strText = strText & Chr("&H" & aaa)
    Next
    '// Return
    hex_decode = strText
End Function

▽その2

strHEX = "6865788169313690699094816A834783938352815B8368814583668352815B8368"
WScript.Echo hex_decode(strHEX)

'//-------------------------------------------------------//
'// hex -> shift_jis デコード
'//-------------------------------------------------------//
Function hex_decode(strHEX)
    Set objStrm = CreateObject("ADODB.Stream")
    Set objUtil = CreateObject("CAPICOM.Utilities")
    '// ADODB.StreamTypeEnum
    Const adTypeBinary = 1
    Const adTypeText = 2
    '// hex -> shift_jis
    objStrm.Open
    objStrm.Type = adTypeBinary
    objStrm.Write objUtil.BinaryStringToByteArray(objUtil.HexToBinary(strHEX))
    objStrm.Position = 0
    objStrm.Type = adTypeText
    objStrm.Charset = "shift_jis"
    strText = objStrm.ReadText
    '// Return
    hex_decode = strText
End Function

046. バイナリ → BASE64 エンコード

JPG などのファイルをドラッグ&ドロップ

72桁で改行されたテキストファイルが作成される

'// Arguments : (0)Input file
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit

Set fso = CreateObject("Scripting.FileSystemObject")
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
Set objStrm = CreateObject("ADODB.Stream")

'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2

'// binary ファイル読み込み
objStrm.Open
objStrm.Type = adTypeBinary
objStrm.Position = 0
objStrm.LoadFromFile objArgs(0)

Set objElement = xmlDoc.CreateElement("dummy")
objElement.DataType = "bin.base64"
objElement.NodeTypedValue = objStrm.Read

'// text ファイル書き出し
Set objFile = fso.CreateTextFile(objArgs(0) & "≪base64エンコード≫.txt", True)
objFile.Write objElement.Text

Set objElement = Nothing
Set xmlDoc = Nothing
Set objFile = Nothing
Set objStrm = Nothing

MsgBox "おわりました"

WScript.Quit

047. バイナリ ← BASE64 デコード

BASE64 でエンコードされたテキストファイルをドラッグ&ドロップ

'// Arguments : (0)Input file
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit

Set fso = CreateObject("Scripting.FileSystemObject")
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
Set objStrm = CreateObject("ADODB.Stream")

'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2

'// ADODB.SaveOptionsEnum
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2

'// text ファイル読み込み
Set objFile = fso.OpenTextFile(objArgs(0), 1, False)

'// binary ファイル書き出し
Set objElement = xmlDoc.CreateElement("dummy")
objElement.DataType = "bin.base64"
objElement.Text = objFile.ReadAll

objStrm.Open
objStrm.Type = adTypeBinary
objStrm.Position = 0
objStrm.Write objElement.NodeTypedValue
objStrm.SaveToFile objArgs(0) & "≪base64デコード≫", adSaveCreateOverWrite

Set objElement = Nothing
Set xmlDoc = Nothing
Set objFile = Nothing
Set objStrm = Nothing

MsgBox "おわりました"

WScript.Quit

048. バイナリ → HEX(16進数)エンコード

JPG などのファイルをドラッグ&ドロップ

改行なしのテキストファイルが作成される

'// Arguments : (0)Input file
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit

Set fso = CreateObject("Scripting.FileSystemObject")
Set objStrm = CreateObject("ADODB.Stream")
Set objUtil = CreateObject("CAPICOM.Utilities")

'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2

'// binary ファイル読み込み
objStrm.Open
objStrm.Type = adTypeBinary
objStrm.Position = 0
objStrm.LoadFromFile objArgs(0)

'// text ファイル書き出し
Set objFile = fso.CreateTextFile(objArgs(0) & "≪hexエンコード≫.txt", True)
objFile.Write objUtil.BinaryToHex(objStrm.Read)

Set objFile = Nothing
Set objStrm = Nothing

MsgBox "おわりました"

WScript.Quit

049. バイナリ ← HEX(16進数)デコード

HEX(16進数)でエンコードされたテキストファイルをドラッグ&ドロップ

'// Arguments : (0)Input file
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then WScript.Quit

Set fso = CreateObject("Scripting.FileSystemObject")
Set objStrm = CreateObject("ADODB.Stream")
Set objUtil = CreateObject("CAPICOM.Utilities")

'// ADODB.StreamTypeEnum
Const adTypeBinary = 1
Const adTypeText = 2

'// ADODB.SaveOptionsEnum
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2

'// text ファイル読み込み
Set objFile = fso.OpenTextFile(objArgs(0), 1, False)

'// binary ファイル書き出し
objStrm.Open
objStrm.Type = adTypeBinary
objStrm.Position = 0
objStrm.Write objUtil.BinaryStringToByteArray(objUtil.HexToBinary(objFile.ReadAll))
objStrm.SaveToFile objArgs(0) & "≪hexデコード≫", adSaveCreateOverWrite

Set objFile = Nothing
Set objStrm = Nothing

MsgBox "おわりました"

WScript.Quit

050. 暗号・複合

Rijndael(ラインダール)を使用する際、暗号文とIV(初期化ベクター)の2つを相手先に渡し、

Key(共有キー)は外部に漏れないようお互い保持。もしくは SHA256(SessionID+暗号ソルト) のようにルールに則って作成できるようにする。

初期ベクターは基本的にランダム設定。

ここでは Key に SHA256 を利用した。共有キーのビット数を SHA256 と同じ 256bit としたため。


名前空間: System.Security.Cryptography

アセンブリ: mscorlib (mscorlib.dll 内)

C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.tlb

C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb

など


▽System.Security.Cryptography 名前空間

https://msdn.microsoft.com/ja-jp/library/system.security.cryptography(v=vs.110).aspx
'//------------------------------------------------------------//
'// mscorlib.CipherMode
Const CipherMode_CBC = 1
Const CipherMode_ECB = 2
Const CipherMode_OFB = 3
Const CipherMode_CFB = 4
Const CipherMode_CTS = 5
'// Public
Public iv, key
'//------------------------------------------------------------//

key = sha256("≪秘密≫共有キー:256bit/バイト配列:32バイト/16進数:64バイト")
plain_txt = "暗号化し、平文に戻します。"
encrypted = encrypt(plain_txt, key)
decrypted = decrypt(encrypted, iv, key)
MsgBox "【平文】" & plain_txt & vbCrLf _
     & "【暗号】" & encrypted & vbCrLf _
     & "【IV:128bit】" & iv & vbCrLf _
     & "【Key:256bit】" & key & vbCrLf _
     & "【復号】" & decrypted
WScript.Quit

'//-------------------------------------------------------//
'// 暗号
'//-------------------------------------------------------//
Function encrypt(txt, key)

    Set objRijndael = CreateObject("System.Security.Cryptography.RijndaelManaged")
    Set objUTF8 = CreateObject("System.Text.UTF8Encoding")

    bytes = objUTF8.GetBytes_4(txt)

    objRijndael.Mode      = CipherMode_CBC
    objRijndael.BlockSize = 128
    objRijndael.KeySize   = 256
    objRijndael.IV          '初期ベクター:ランダムに設定
    objRijndael.Key       = hex2bytes(key)

    encrypt = bytes2hex(objRijndael.CreateEncryptor.TransformFinalBlock((bytes), 0, LenB(bytes)))
    iv = bytes2hex(objRijndael.IV)

    Set objUTF8 = Nothing
    Set objRijndael = Nothing

End Function

'//-------------------------------------------------------//
'// 復号
'//-------------------------------------------------------//
Function decrypt(xhex, iv, key)

    Set objRijndael = CreateObject("System.Security.Cryptography.RijndaelManaged")
    Set objUTF8 = CreateObject("System.Text.UTF8Encoding")

    bytes = hex2bytes(xhex)

    objRijndael.Mode      = CipherMode_CBC
    objRijndael.BlockSize = 128
    objRijndael.KeySize   = 256
    objRijndael.IV        = hex2bytes(iv)
    objRijndael.Key       = hex2bytes(key)

    decrypt = objUTF8.GetString((objRijndael.CreateDecryptor.TransformFinalBlock((bytes), 0, LenB(bytes))))

    Set objUTF8 = Nothing
    Set objRijndael = Nothing

End Function

'//-------------------------------------------------------//
'// bytes -> hex 変換(バイト配列→16進数)
'//-------------------------------------------------------//
Function bytes2hex(xbytes)
    With CreateObject("Microsoft.XMLDOM").CreateElement("dummy")
        .DataType = "bin.hex"
        .NodeTypedValue = xbytes
        bytes2hex = .Text
    End With
End Function

'//-------------------------------------------------------//
'// hex -> bytes 変換(16進数→バイト配列)
'//-------------------------------------------------------//
Function hex2bytes(xhex)
    With CreateObject("Microsoft.XMLDOM").CreateElement("dummy")
        .DataType = "bin.hex"
        .Text = xhex
        hex2bytes = .NodeTypedValue
    End With
End Function

'//-------------------------------------------------------//
'// SHA256
'//-------------------------------------------------------//
Function sha256(txt)

    Set objSHA256 = CreateObject("System.Security.Cryptography.SHA256Managed")
    Set objUTF8 = CreateObject("System.Text.UTF8Encoding")

    '// 文字列を UTF8 にエンコードし、バイト配列に変換
    bytes = objUTF8.GetBytes_4(txt)

    '// ハッシュ値を計算(バイナリ)
    hash = objSHA256.ComputeHash_2((bytes))

    '// バイト配列を16進数文字列に変換
    sha256 = bytes2hex(hash)

End Function