@ECHO OFF @SETLOCAL enableextensions enabledelayedexpansion :refresh_environment_variables CALL "%~dp0refresh-environment-variables.cmd" REM script global variables SET script_dir=%~dp0 IF %script_dir:~-1%==\ SET script_dir=%script_dir:~0,-1% SET script_full_path=%0 SET script_filename=%~n0%~x0 SET tsm_services=tabadminagent_0 tabadmincontroller_0 tabsvc_0 appzookeeper_0 appzookeeper_1 licenseservice_0 clientfileservice_0 SET tsm_env_vars=TABLEAU_SERVER_CONFIG_NAME TABLEAU_SERVER_DATA_DIR TABLEAU_SERVER_DATA_DIR_VERSION TABLEAU_SERVER_INSTALL_DIR TSM_CLEAN_INSTALL_FAILURE SET version_string=20182.18.0627.2230 SET license_removal_requested=0 SET yes=0 SET very_silent=0 SET bypass_script_dir_check=0 SET licensing_url="https://licensing.tableau.com/flexnet/services/ActivationService?wsdl" SET serveractutil_exe=%TABLEAU_SERVER_INSTALL_DIR%\packages\bin.%version_string%\serveractutil.exe :check_tab_root IF "%TAB_ROOT%" NEQ "" ( ECHO Invalid command prompt. Cancelling. EXIT /B 1 ) :check_admin NET SESSION >NUL 2>&1 if %ERRORLEVEL% NEQ 0 ( ECHO This script must be run as Administrator. Cancelling. EXIT /B 1 ) :parse_command_line_params IF "%1"=="" GOTO end_parse IF "%1"=="-l" SET license_removal_requested=1 IF "%1"=="/l" SET license_removal_requested=1 IF "%1"=="-h" GOTO show_help IF "%1"=="/h" GOTO show_help IF "%1"=="-y" SET /A yes=%yes%+1 IF "%1"=="/y" SET /A yes=%yes%+1 IF "%1"=="-q" SET very_silent=1 IF "%1"=="/q" SET very_silent=1 IF "%1"=="-b" SET bypass_script_dir_check=1 IF "%1"=="/b" SET bypass_script_dir_check=1 SHIFT GOTO parse_command_line_params :end_parse :confirm IF %yes% LSS 3 ( ECHO You must specify the '-y' flag three times to confirm running the script is desired ECHO. GOTO show_help ) :check_script_dir IF %bypass_script_dir_check% EQU 0 ( IF /I "%script_dir%" NEQ "%TEMP%" ( COPY %script_full_path% %TEMP%\%script_filename% /Y >NUL 2>&1 START cmd /c %TEMP%\%script_filename% %* EXIT /B 0 ) ) :deactivate_licenses IF %license_removal_requested% EQU 1 ( IF EXIST "%serveractutil_exe%" ( FOR /F "tokens=1,2 delims=:" %%F IN ('"%serveractutil_exe%" -view') DO ( ECHO.%%F | findstr /C:"Fulfillment ID">nul && ( ECHO Deactivating license fulfillment key: %%G "%serveractutil_exe%" -return %%G -comm soap -reason 1 -commServer "%licensing_url%" ) ) ) ELSE ( ECHO Unable to find serveractutil.exe, skipping license deactivation. ) ) :remove_tsm_services FOR %%s IN (%tsm_services%) DO ( SC QUERY %%s >NUL 2>&1 IF !ERRORLEVEL! EQU 0 ( FOR /F "tokens=3" %%P IN ('SC QUERYEX %%s ^| FINDSTR PID') DO (SET pid=%%P) IF "!pid!" NEQ "0" ( ECHO Service %%s is running with process ID: !pid! ECHO Stopping service %%s NET STOP %%s >NUL 2>&1 TASKKILL /F /PID !pid! >NUL 2>&1 ) ECHO Deleting service %%s SC DELETE %%s >NUL 2>&1 ) ELSE ( ECHO Service %%s not found. Skipping. ) ) :uninstall_packages FOR /F "tokens=*" %%K IN ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /f TableauServer /k 2^>NUL ^| FINDSTR /R /C:"TableauServer"') DO ( FOR /F "tokens=2*" %%A IN ('REG Query "%%K" /F DisplayName /V /E ^| FIND /I " DisplayName "') DO ECHO Uninstalling %%B IF %very_silent% EQU 1 ( FOR /F "tokens=2*" %%A IN ('REG Query "%%K" /F UninstallString /V /E ^| FIND /I " UninstallString "') DO START "" /B %%B /VERYSILENT /SUPPRESSMSGBOXES ) ELSE ( FOR /F "tokens=2*" %%A IN ('REG Query "%%K" /F UninstallString /V /E ^| FIND /I " UninstallString "') DO START "" /B %%B /SILENT /SUPPRESSMSGBOXES ) ) :delete_data_dir ECHO Deleting data directory %TABLEAU_SERVER_DATA_DIR% RD /S /Q "%TABLEAU_SERVER_DATA_DIR%" 2>NUL :remove_certs certutil -delstore root TableauServerManagerCA :remove_env_vars ECHO Deleting Tableau Server environment variables FOR %%v IN (%tsm_env_vars%) DO ( reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v %%v /f >NUL 2>&1 ) ECHO Tableau Server obliterated EXIT /B 0 :show_help ECHO Usage: tableau-server-obliterate [-h] [-l] -y -y -y ECHO Completely remove Tableau Server from this machine ECHO. ECHO This script will stop/kill any running Tableau Server proceses and remove all Tableau Server ECHO related files. No data or configuration is retained, except files related to licensing. ECHO This script should only be used to clean a machine because it is destructive to all data. ECHO. ECHO This script must be run as the Administrator. ECHO. ECHO -y Yes, perform this action. Must be specified three times to ECHO confirm the action is desired. ECHO -q Quiet mode. Do not display progress UI when uninstalling ECHO Tableau Server packages. ECHO -l Also delete licensing files and data. This command will ECHO attempt to deactivate licenses before deleting licensing ECHO data, but cannot handle offline deactivation of licenses. ECHO If in doubt, please use 'tsm licenses deactivate' before ECHO running this script.