讀取mac address 對照表, 還原電腦後,自動更改密碼
'show logged on user Dim CurrentUser Set objNetwork = CreateObject("Wscript.Network") CurrentUser=objNetwork.UserName If CurrentUser <> "Administrator" then Wscript.Echo "Administrator is needed. Try command in cmd " & vbCRLF & "net user administrator /active:yes" End IF 'read mac_table Dim row,csv_file row=0 csv_file="c:\mac.csv" 'Wscript.Echo csv_file Const ForReading = 1 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile (csv_file, ForReading) '讀取筆數 Do Until objTextFile.AtEndOfStream strNextLine = objTextFile.Readline row=row+1 Loop objTextFile.Close ReDim mac_tables(row-1,1) Dim j j=0 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile (csv_file, ForReading) Do Until objTextFile.AtEndOfStream strNextLine = objTextFile.Readline arrServiceList = Split(strNextLine , ",") 'Wscript.Echo "Server name: " & arrServiceList(0) mac_tables(j,0) = arrServiceList(0) For i = 1 to Ubound(arrServiceList) 'Wscript.Echo "Service: " & arrServiceList(i) mac_tables(j,i) = arrServiceList(i) Next j=j+1 Loop objTextFile.Close 'For j = 0 To UBound(mac_tables) ' Wscript.Echo mac_tables(j,0) 'Next 'Wscript.Echo row Dim CurrentName strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set colSettings = objWMIService.ExecQuery _ ("Select * from Win32_ComputerSystem") For Each objComputer in colSettings 'Wscript.Echo "System Name: " & objComputer.Name CurrentName=objComputer.Name Next Set colAdapters = objWMIService.ExecQuery _ ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True") For Each objAdapter in colAdapters For j = 0 To UBound(mac_tables) If UCase(objAdapter.MACAddress) = UCase(mac_tables(j,0)) then 'Wscript.Echo objAdapter.MACAddress If UCase(CurrentName) <> UCase(mac_tables(j,1)) then 'Wscript.Echo CurrentName & "vs" & mac_tables(j,1) Set objWMIService = GetObject("Winmgmts:root\cimv2") ' Call always gets only one Win32_ComputerSystem object. For Each objComputer in _ objWMIService.InstancesOf("Win32_ComputerSystem") Return = objComputer.rename(mac_tables(j,1)) If Return <> 0 Then WScript.Echo "Rename failed. Error = " & Err.Number Else 'WScript.Echo "Rename succeeded." & _ '" Reboot for new name to go into effect" Const TIMEOUT = 5 Set objShell = WScript.CreateObject("WScript.Shell") objShell.Popup "Rename succeeded. Reboot for new name to go into effect", TIMEOUT '重啟電腦 strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") For Each objOperatingSystem in colOperatingSystems ObjOperatingSystem.Reboot() Next End If Next Else 'WScript.Echo "delete this script." Set oFso = CreateObject("Scripting.FileSystemObject") : oFso.DeleteFile Wscript.ScriptFullName, True Set oFso = CreateObject("Scripting.FileSystemObject") : oFso.DeleteFile csv_file, True End If End If Next Next