Here is very useful vbs script which execute ScanState on local machine, asking for a user name and location (local or network) share and gives results in HTML.
Before to start you should specify few variables inside the script.
'******************************************************************************
Option Explicit
REM Define Global Constants
CONST NetDomain = "test.local"
' Specifies where to find the USMT executables
CONST USMTLocation = "\\srv2003dc1\FolderMig\USMT\X86"
' Specifies where to write the MIG file locally
CONST USMTLocalStore = "c:\USMT_MIG\"
' Specifies where to write the MIG file on the network share
CONST USMTNetworkStore = "\\srv2003dc1\FolderMig\TEST\"
REM Define Global Objects
DIM objIE : Set objIE = CreateObject("InternetExplorer.Application")
REM Define Global Variables
DIM OldComputer : Set OldComputer = Nothing
DIM ReturnCode : ReturnCode = "0"
DIM UserName : Set UserName = Nothing
DIM USMTOutput : Set USMTOutput = Nothing
DIM USMTDestCMD : USMTDestCMD = "0"
CreateDisplayWindow()
GetComputerInfo()
CreateUSMTFolders()
USMTMigrate()
GlobalVariableCleanUp()
'******************************************************************************
Sub CreateDisplayWindow()
REM Define Local Constants
CONST strComputer = "."
REM Define Local Objects
DIM objWMIService : Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
DIM colItems : Set colItems = objWMIService.ExecQuery ("Select PelsWidth,PelsHeight From Win32_DisplayConfiguration")
DIM objItem : Set objItem = Nothing
REM Define Local Variables
DIM intWidth : intWidth = 320
DIM intHeight : intHeight = 240
DIM intScreenWidth : Set intScreenWidth = Nothing
DIM intScreenHeight : Set intScreenHeight = Nothing
For Each objItem in colItems
intScreenWidth = objItem.PelsWidth
intScreenHeight = objItem.PelsHeight
Next
objIE.Navigate "about:blank"
objIE.Toolbar = 0
objIE.StatusBar = 0
objIE.AddressBar = 0
objIE.MenuBar = 0
objIE.Resizable = 0
While objIE.ReadyState <> 4
WScript.Sleep 100
Wend
objIE.Left = (intScreenWidth / 2) - (intWidth / 2)
objIE.Top = (intScreenHeight / 2) - (intHeight / 2)
objIE.Visible = True
REM Cleanup Local Variables
Set colItems = Nothing
Set intScreenWidth = Nothing
Set intScreenHeight = Nothing
Set intWidth = Nothing
Set intHeight = Nothing
Set objItem = Nothing
Set objWMIService = Nothing
End Sub
'******************************************************************************
Sub GetComputerInfo()
DIM wshNetwork : Set wshNetwork = WScript.CreateObject( "WScript.Network" )
OldComputer = wshNetwork.ComputerName
UserName = InputBox( "Enter the username:" )
USMTOutput = MsgBox("Output USMT to Network Location?", 4)
If USMTOutput = 6 then
USMTOutput = USMTNetworkStore & UserName & "\" & OldComputer
Else
USMTOutput = USMTLocalStore & UserName & "\" & OldComputer
End If
objIE.Document.WriteLn "USMT migration of " & UserName & " from " & OldComputer & " to " & USMTOutput &_
Chr(32) & "
"
End Sub
'******************************************************************************
Sub CreateUSMTFolders()
On Error Resume Next
REM Define Local Objects
DIM FSO : SET FSO = CreateObject("Scripting.FileSystemObject")
DIM oShell : Set oShell = WScript.CreateObject("WScript.Shell")
REM Define Local Variables
DIM CreateFolder : CreateFolder = "cmd.exe /c md" & Chr(32) & USMTOutput
objIE.Document.WriteLn "Creating USMT Folders....."
REM Create the USMT folders if they do not exist
If NOT FSO.FolderExists(USMTOutput) then
oShell.Run CreateFolder, 7, True
End If
REM Cleanup Local Variables
Set FSO = Nothing
Set CreateFolder = Nothing
Set oShell = Nothing
End Sub
'******************************************************************************
Sub USMTMigrate()
REM Define Local Objects
DIM oShell : SET oShell = CreateObject("Wscript.Shell")
REM Define Local Variables
DIM Debug : Debug = "13"
DIM IgnoreProfs : IgnoreProfs = "cmd.exe /c Set MIG_IGNORE_PROFILE_MISSING=1"
DIM USMT : USMT = USMTLocation & "\scanstate.exe " & USMTOutput & Chr(32) & "/v:" & Debug & Chr(32) & "/i:" &_
USMTLocation & "\Migapp.xml" & Chr(32) & "/i:" &_
USMTLocation & "\miguser.xml" & Chr(32) &_
"/progress:" & USMTOutput & "\ScanStateProg.log" & Chr(32) & "/l:" & USMTOutput & "\ScanState.log" &_
Chr(32) & "/ui:" & UserName & Chr(32) & "/ue:*\* /c /vsc"
objIE.Document.WriteLn "Executing Scanstate on " & OldComputer & "....."
ReturnCode = oShell.Run(IgnoreProfs, 7, True)
ReturnCode = oShell.Run(USMT, 7, True)
If ReturnCode = "0" Then
objIE.Document.WriteLn "Success" & "
"
else
objIE.Document.WriteLn "Failure(" & ReturnCode & ")" & "
"
End If
REM Cleanup Variables
Set Debug = Nothing
SET IgnoreProfs = Nothing
SET oShell = Nothing
Set USMT = Nothing
End Sub
'******************************************************************************
Sub GlobalVariableCleanUp()
Set OldComputer = Nothing
Set objIE = Nothing
Set ReturnCode = Nothing
Set UserName = Nothing
Set USMTOutput = Nothing
Set USMTDestCMD = Nothing
End Sub
No comments:
Post a Comment