#include #include #include #include #include #include #include #include ; AutoIt Version: 3.0 ; Language: English ; Platform: Win7 ; Author: Jason Sturgill (jason.sturgill@nbcuni.com) ; Co-Author: Brian Zatz (brian.zatz@nbcuni.com) ; ; Script Function: ; Allows Avid Media Composer workstation to be switched from one Interplay PAM workgroup to another. ; ; To-Do: ; Make it work. ; Feature Add: ; #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Portus", 900, 400, 192, 124, -1, BitOR($WS_EX_ACCEPTFILES,$WS_EX_WINDOWEDGE)) GUICtrlCreateGroup("Desired Workgroup:", 30, 5, 165, 160) GUIStartGroup() Global $idRadio_1 = GUICtrlCreateRadio("Workgroup 01", 32, 28, 150, 25) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") GUICtrlSetTip(-1, "Connect workstation to Workgroup 01") Global $idRadio_2 = GUICtrlCreateRadio("Workgroup 02", 32, 60, 150, 25) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") GUICtrlSetTip(-1, "Connect workstation to Workgroup 02") Global $idRadio_4 = GUICtrlCreateRadio("Workgroup 04", 32, 92, 150, 17) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") GUICtrlSetTip(-1, "Connect workstation to Workgroup 04") Global $idRadio_5 = GUICtrlCreateRadio("Workgroup 05", 32, 124, 150, 17) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") GUICtrlSetTip(-1, "Connect workstation to Workgroup 05") Global $idRadio_6 = GUICtrlCreateRadio("Workgroup 06", 32, 156, 150, 17) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") GUICtrlSetTip(-1, "Connect workstation to Workgroup 06") Global $labelArea = GUICtrlCreateLabel("Currently connected to:", 232, 20) Global $statusList = GUICtrlCreateList("Starting...",232,50,600,200,$WS_VSCROLL) GUICtrlSetLimit($statusList,200) Global $bGo = GUICtrlCreateButton("Change Workgroup", 232, 300, 300, 50) GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif") Global $cancelButton = GUICtrlCreateButton("Cancel", 550, 300, 300, 50) GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif") GUISetState($GUI_DROPACCEPTED) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### ;;;;;;;;;;;;; ;Main Script Area ;;;;;;;;;;;; Global $userCancel = 0 ; Close Isis Client Manager GUICtrlSetData($statusList,"Stopping ISISClientManager.exe") $isIsisProcessActive = StopProcess("ISISClientManager.exe") If $isIsisProcessActive = 0 Then GUICtrlSetData($statusList,"Failed to End ISISClientmanager.exe, Execution will continue") Else GUICtrlSetData($statusList,"ISISClientManager.exe Successfully Closed") EndIf ;Stop Avid Services ; All Logic Inside function StopAvidServices() ; Flip Registry IPs ; HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\AvidFosFS\Parameters ; CHANGE TO FUNCTION, WRITE REGISTRIES BASED ON WORKGROUP ;;;;;; Execute reg FileChangeDir ;ShellExecuteWait("C:\dev\Playground\Portus\Notes\ISISParameters.reg",@SW_HIDE) RunWait("REGEDIT /S C:\dev\Playground\Portus\Notes\ISISParameters.reg") GUICtrlSetData($statusList,"ISISParameters Registry Values Set") RunWait("REGEDIT /S C:\dev\Playground\Portus\Notes\FrameworkLocators.reg") GUICtrlSetData($statusList,"FrameworkLocators Registry Values Set") ;$regWriteSuccess = RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\AvidFosFS\Parameters","IndexServers","REG_MULTI_SZ","100.113.220.41" &@CRLF&"100.113.220.42") ;if $regWriteSuccess = 0 Then ; Exit ;EndIf ;Edit Lookup Servers ;[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs\avid\workgroups\avid technology incorporated\data\com\avid\workgroup\remoting\setting\grouplocators\/Avid/Workgroup-01] ;[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs\avid\workgroups\avid technology incorporated\data\com\avid\workgroup\remoting\setting\grouplocators\/Avid/Workgroup-01\nycoewg01gps02.nydps.com:4160] ;[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs\avid\workgroups\avid technology incorporated\data\com\avid\workgroup\remoting\setting\grouplocators\/Avid/Workgroup-01\nycoewg01gps01.nydps.com:4160] ;Delete Cache FileSaveDialog ; ALL logic Inside Function DeleteCacheFiles() ;; Brian's Helper functions Func StopProcess($processName) If $userCancel = 1 Then return 0 EndIf return ProcessClose($processName) EndFunc ;==>StopProcess, return 0 or 1 Func StopAvidServices() ;admin creds ; Service Name Array local $services[4] = ['"Avid Interplay Media Indexer"','"Avid Service Starter Service"','"Avid Machine Monitoring Service"','"Avid Time Synchronization Service"'] ; Stop Services for $i = 0 to 3 If $userCancel = 1 Then return 0 EndIf GUICtrlSetData($statusList,"Stopping Service "&$services[$i]) RunWait("net stop " & $services[$i],@SystemDir,@SW_HIDE) Next GUICtrlSetData($statusList,"All Avid Services Stopped") EndFunc ;=> Stop Services; DO we need to check for success or failure. IF failure, exit()? Func DeleteCacheFiles() ; To do ; Set as array ; iterate through as function local $cacheFolders[4] = ["C:\ProgramData\Avid\AvidMI\*.*","C:\ProgramData\Avid\AvidMI\ama-cache-backup\*.*","C:\ProgramData\Avid\AvidMI\backup\*.*","C:\ProgramData\Avid\AvidMI\config\jini\*.serviceID"] GUICtrlSetData($statusList, "Clearing Cache Files") for $i=0 to 3 If $userCancel = 1 Then return 0 EndIf FileDelete ( $cacheFolders[$i] ) GUICtrlSetData($statusList, $cacheFolders[$i]&" Cleaned") Next EndFunc ;=> Cache deleted While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $cancelButton $userCancel = 1 Exit 0 Case $nMsg = $idRadio_1 And BitAND(GUICtrlRead($idRadio_1), $GUI_CHECKED) = $GUI_CHECKED ;GUICtrlSetData($labelArea,"You currently have "&$GUI_CHECKED) ; Case $bDirectory ; $tempDirectory = FileSelectFolder("Select directory","", 4, GUICtrlRead($ibDirectory)) ; GUICtrlSetData($ibDirectory, $tempDirectory) ; Case $bOutput ; $tempFile = FileOpenDialog("Select location and name for output file",GUICtrlRead($ibOutput),"Text Files (*.txt)",0,"Directory List.txt") ; GUICtrlSetData($ibOutput, $tempFile) ; Case $bGo ; _ListDirectory(GUICtrlRead($ibDirectory),GUICtrlRead($ibOutput),GUICtrlRead($cbFiles),GUICtrlRead($cbFolders),GUICtrlRead($cbClipboard)) EndSwitch WEnd