Link to home
Start Free TrialLog in
Avatar of jbyrd1981
jbyrd1981Flag for United States of America

asked on

USMT to Send email when complete

Hello! I am wondering if there is a script someone could write that would send an email when a machine has finished the User State Migration Tool process? The email should contain Computer name, completed time and possibly fully successful or errors encountered status. Thanks in advance!
Avatar of RobSampson
RobSampson
Flag of Australia image

Hi, I haven't tested this, but it should work for you.  Modify the messaging parameters at the top, and the USMT command and log path, and see how it goes.

Regards,

Rob.

' Email variables:
strServer = "mailhost.abc.com"
strTo = "john.doe@abc.com"
strFrom = "john.doe@abc.com"
strBody = "Find attached the USMT log file:" & vbCrLf

' Run USMT
Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("WScript.Shell")
strUSMTLog = "\\server\share\USMT\USMTcapture_" & objNetwork.ComputerName & ".log"
strUSMTCmd = "cmd /c ""\\server\share\USMT\x86\scanstate.exe"" \\server\backupshare\" & objNetwork.ComputerName & " /v:5 /o /c /i:""\\server\share\USMT\x86\MigApp.xml"" /i:""\\server\share\USMT\x86\MigDocs.xml"" /l:""" & strUSMTLog & """"
objShell.Run strUSMTCmd, 1, True
SendEmail strServer, strTo, strFrom, "USMT Log File from " & objNetwork.ComputerName & ": " & Now, strBody, strUSMTLog

Sub SendEmail(strServer, strTo, strFrom, strSubject, strBody, strAttachment)
        Dim objMessage
        
        Set objMessage = CreateObject("CDO.Message")
        objMessage.To = strTo
        objMessage.From = strFrom
        objMessage.Subject = strSubject
        objMessage.TextBody = strBody
  		If strAttachment <> "" Then objMessage.AddAttachment strAttachment
  		
        '==This section provides the configuration information for the remote SMTP server.
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        'Name or IP of Remote SMTP Server
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strServer
        'Server port (typically 25)
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25      
        objMessage.Configuration.Fields.Update
        '==End remote SMTP server configuration section==
 
        objMessage.Send
        Set objMessage = Nothing
End Sub

Open in new window

Avatar of jbyrd1981

ASKER

Thanks Rob... I already have a CMD file that is run to complete the USMT process. I just need to integrate the Email piece into what I already have. Should have been a little more specific. This runs as a vbs file, right?
I think I almost have this working but cannot figure out how it is looking for the log file to attach. Which lines of the code pertain to this? Also I don't think I would want to attach the whole log file since it can be MB in size. Can we just pull a few words from the log like this to put in the email? This way it would inform me that there were no errors encountered.  

[0x000000] Activity: 'MIGACTIVITY_SUCCESS'
[0x000000] Success.[gle=0x00000091]

Other than that I think I can add and execution statment for this vbs file of my usmt CMD script and it should work just fine.
Ok. On Monday I'll have a look at pulling summary lines from the log for you.
Appreciate it!!! I could probably use it in its current state but would be nice to include this info. Thanks!
ASKER CERTIFIED SOLUTION
Avatar of RobSampson
RobSampson
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Intergated this beautifully! Your awesome! A couple of questions... Will it still email the clip from the log file if it errored or was a failure indicating so? Also, is there any way to have this zip the log file and attach? If you edit the code to include this would you point out the line(s) related to the zip addition? Thanks again!!!
To perform the zip operation, would you have the ability to use a command line ZIP program like 7-ZIP?  It can just sit on a server share without needing installation, just to reference the zipping program.

It would still email the summary as long as the failed lines began with
Activity: 'MIGACTIVITY

Rob.
Again!!! Many Thanks! :)
No problem. Thanks for the grade.  If you are able to use the 7-Zip command line tool from a server share, you can post another question, and I can have it zip the log file with the email.

Rob.
No problem... I am giving up the zip idea but thought of one more thing. I was trying to figure out how to get it to include the start time of the USMT in the email as well. If you don't mind what would I need to add to the script to acomplish this? Thanks!
Looking at my USMT logs, the start time is the first line in it, so we'll just add that to the summary.

Under the "Next" line in the code, I have edited the snippet above and added
strResult = arrContents(0) & vbCrLf & strResult

Open in new window


Regards,

Rob.
That worked! Don't understand how but it did. For some reason it is putting weird formatting on the new line. 2014-01-22 12:41:35, Info                  [0x000000] USMT Started at 2014/01/22:12:41:35.043
Hmmm, odd....maybe there's some special characters at the start of the file.  Try changing
strResult = arrContents(0) & vbCrLf & strResult 

Open in new window


to
strResult = Mid(arrContents(0), InStr(arrContents(0), "[0x") - 1) & vbCrLf & strResult 

Open in new window


Rob.