#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 ### 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 $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 If $userCancel = 1 Then return 0 EndIf GUICtrlSetData($statusList, "Clearing Cache Files") FileDelete ( "C:\ProgramData\Avid\AvidMI\*.*" ) GUICtrlSetData($statusList, "C:\ProgramData\Avid\AvidMI\ Cleaned") FileDelete ( "C:\ProgramData\Avid\AvidMI\ama-cache-backup\*.*" ) GUICtrlSetData($statusList, "C:\ProgramData\Avid\AvidMI\ama-cache-backup\ Cleaned") FileDelete ( "C:\ProgramData\Avid\AvidMI\backup\*.*" ) GUICtrlSetData($statusList, "C:\ProgramData\Avid\AvidMI\backup\ Cleaned") FileDelete ( "C:\ProgramData\Avid\AvidMI\config\jini\*.serviceID" ) GUICtrlSetData($statusList, "C:\ProgramData\Avid\AvidMI\config\jini\ Cleaned") EndFunc ;=> Cache deleted While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $cancelButton $userCancel = 1 Exit 0 ; 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