'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