xcat-core/xCAT/winpostscripts/xcatwinpost.vbs

123 lines
4.2 KiB
Plaintext
Raw Permalink Normal View History

'This script is used to run postscripts for Windows compute node
Dim filesys, myshell
Dim nodename, origpostscript, mypostscript, mypostbootscript
Dim output, tmpstr, startpoint
Dim fileread, filewrite, filewritepost, filewritepostboot, fline
Dim flagwp, flagwpb
Dim logname,loghandler
'Ingore the error box to avoid the stop of postscript running
On Error Resume Next
logname = "c:\xcatpost\xcat.log"
'Initialize the shell and fs objects
Set myshell = WScript.createObject("WScript.Shell")
Set filesys = CreateObject("Scripting.FileSystemObject")
'Open the log file for writting
Set loghandler = filesys.OpenTextFile(logname, 8, True)
loghandler.WriteLine "=========================================="
loghandler.WriteLine now
loghandler.WriteLine "Get in xcatwinpost.vbs"
'Read envrironment variables from c:\xcatpost\xcatenv
Set fileread = filesys.OpenTextFile("c:\xcatpost\xcatenv",1)
Do Until fileread.AtEndOfStream
fline = fileread.ReadLine
strpoint = InStr(fline, "NODENAME=")
If strpoint Then
nodename = Mid(fline, strpoint+9)
End If
Loop
loghandler.WriteLine "The nodename is: " & nodename
'Get the postscripts from xCAT management
origpostscript = "c:\xcatpost\mypostscript." & nodename
mypostscript = "c:\xcatpost\mypostscript.cmd"
mypostbootscript = "c:\xcatpost\mypostbootscript.cmd"
' Debug
'WScript.echo "orig mypostscript"& origpostscript
'Check the existence of mypostscript file
If NOT filesys.FileExists(origpostscript) Then
loghandler.WriteLine "Cannot find the original mypostscript: " & origpostscript
loghandler.Close
'WScript.echo "QUIT"
WScript.quit [1]
End If
'Create mypostscript and mypostbootscript from original postscript which was copied from xCAT MN
Set fileread = filesys.OpenTextFile(origpostscript, 1)
Set filewritepost = filesys.OpenTextFile(mypostscript, 2, True)
Set filewritepostboot = filesys.OpenTextFile(mypostbootscript, 2, True)
flagwp = 0
flagwpb = 0
Do Until fileread.AtEndOfStream
fline = fileread.ReadLine
If InStr(fline, "|") Then
' Ignore the char |
' Do nothing
ElseIf InStr(fline, "osimage-postscripts-start-here") Or InStr(fline, "node-postscripts-start-here") Then
flagwp = 1
ElseIf InStr(fline, "osimage-postscripts-end-here") Or InStr(fline, "node-postscripts-end-here") Then
flagwp = 0
ElseIf InStr(fline, "osimage-postbootscripts-start-here") Or InStr(fline, "node-postbootscripts-start-here") Then
flagwpb = 1
ElseIf InStr(fline, "osimage-postbootscripts-end-here") Or InStr(fline, "node-postbootscripts-end-here") Then
flagwpb = 0
ElseIf InStr(fline, "=") Then
' Set the environment variables
tmpstr = "Set "&fline
' Ignore the char '
tmpstr = Replace(tmpstr, "'", "")
filewritepost.WriteLine tmpstr
filewritepostboot.WriteLine tmpstr
ElseIf flagwp Then
' Run script with runpost.vbs
fline = "c:\xcatpost\runpost.vbs " & fline
filewritepost.WriteLine fline
ElseIf flagwpb Then
' Run script with runpost.vbs
fline = "c:\xcatpost\runpost.vbs " & fline
filewritepostboot.WriteLine fline
End If
Loop
fileread.Close
filewritepost.Close
filewritepostboot.Close
loghandler.WriteLine "mypostscript and mypostbootscript have been created"
'Generate the setup computed file which is used to initiate the running of postbootscripts
If NOT filesys.FolderExists("C:\Windows\Setup\Scripts\") Then
filesys.CreateFolder("C:\Windows\Setup\Scripts\")
End If
'Open it with appending mode
set filewrite = filesys.OpenTextFile("C:\Windows\Setup\Scripts\SetupComplete.cmd", 8, True)
filewrite.WriteLine "cmd /c call " & mypostbootscript
filewrite.Close
loghandler.WriteLine "C:\Windows\Setup\Scripts\SetupComplete.cmd has been created."
loghandler.WriteLine "To run mypostscript"
loghandler.WriteLine ""
loghandler.Close
' Run mypostscript
Set myshell = WScript.createObject("WScript.Shell")
myshell.Run "cmd /c " & mypostscript, 0, True
'Do While Not output.StdOut.AtEndOfStream
' fline = output.StdOut.ReadLine()
' WScript.echo fline
'Loop