::Changelog: ::v1.1 show members of Local Administrators and QlikView Administrators group [Author: Jemery Ouyang] ::v1.2 add Systeminfo [Author: Jemery Ouyang] ::v1.3 add Program list [Author: Jemery Ouyang] ::v1.4 add content of "Host.cfg"(Qlik Sense) and Lef.txt(QlikView) [Author: Jemery Ouyang] ::v1.5 add Proxy info and current user [Author: Jemery Ouyang] ::v1.6 add IIS status [Author: Jemery Ouyang] ::v1.7 add Administrator PRIVILEGES check [Author: Jemery Ouyang] ::v1.8 add Group Policy list [Author: Yoichi Hirotake] ::v1.9 add Local Policy list [Author: Yoichi Hirotake] ::v2.0 add Service List, Log ON Account, hosts file, certificate list, check internet connection, check QlikView Management API group [Author: Yoichi Hirotake] ::v2.1 Check mapping drive [Author: Yoichi Hirotake] ::v2.2 add CPU name [Author: Chotana Pou] ::v2.3 Merge v1.7.9(Jeremy batch), retrieve pg_hba.conf and postgresql.conf[Author: Yoichi Hirotake] ::v2.4 Add Monitor information[Jeremy Ouyang] ::v2.5 Show all IIS Application Pools[Jeremy Ouyang] ::v2.6 Show Application Data Folder(QlikView Publisher)[Jeremy Ouyang] ::v2.61 Correctly show Application Data Folder(QlikView Publisher)[Jeremy Ouyang] ::v2.62 Correctly show Application Data Folder(QlikView Publisher)[Jeremy Ouyang] ::v2.7 Show Power Plan[Jeremy Ouyang] ::v2.8 Show all environment variables[Jeremy Ouyang] ::v2.9 Show NTP status[Jeremy Ouyang] ::v2.10 Show all local users and local groups[Jeremy Ouyang] ::v2.11 Show FIPS mode[Jeremy Ouyang] ::v2.12 Show Qlik Sense Service Recovery Options[Jeremy Ouyang] ::v2.13 Show All Scheduled Tasks on current machine [Jeremy Ouyang] ::v2.14 Show All installed printers on current machine [Jeremy Ouyang] ::v2.15 Show .NET Framework Version(4.0 and later) :: Reference: https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed :: Show "ServicesPipeTimeout" value from Registry [Jeremy Ouyang] ::v2.16 Show BitLocker Status [Jeremy Ouyang] ::v2.17 Add InstallDate to Program List [Jeremy Ouyang] ::v2.18 Retrieve Nprinting pg_hba.conf, postgresql.conf [Authour: Yoichi Hirotake] ::v2.19 Retrieve Set parameter [Authour: Yoichi Hirotake] @ECHO OFF NET SESSION >nul 2>&1 IF %ERRORLEVEL% EQU 0 ( ECHO Administrator PRIVILEGES Detected! ) ELSE ( echo ######## ######## ######## ####### ######## echo ## ## ## ## ## ## ## ## ## echo ## ## ## ## ## ## ## ## ## echo ###### ######## ######## ## ## ######## echo ## ## ## ## ## ## ## ## ## echo ## ## ## ## ## ## ## ## ## echo ######## ## ## ## ## ####### ## ## echo. echo. echo ####### ERROR: ADMINISTRATOR PRIVILEGES REQUIRED ######### echo This script must be run as administrator to work properly! echo If you're seeing this after clicking on a start menu icon, then right click on the shortcut and select "Run As Administrator". echo ########################################################## echo. PAUSE EXIT /B 1 ) SET SFX=%date% %time% SET SFX=%SFX:/=_% SET SFX=%SFX:\=_% SET SFX=%SFX::=_% SET SFX=%SFX:.=_% ::echo %SFX% IF EXIST "c:\programdata\serverStat" ( Echo **Folder already exists** ) ELSE ( MKDIR c:\programdata\serverStat\ ) SET FILENAME="c:\programdata\serverStat\%SFX%_%COMPUTERNAME%_serverStat_v2.19_%1.txt" ECHO *********************** >>%FILENAME% ECHO *** serverStat v2.17*** >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO **** Current User **** >>%FILENAME% ECHO *********************** >>%FILENAME% whoami >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO **** Port status **** >>%FILENAME% ECHO *********************** >>%FILENAME% netstat -ano >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO **** Process Info **** >>%FILENAME% ECHO *********************** >>%FILENAME% tasklist /v >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO **** Firewall Info **** >>%FILENAME% ECHO *********************** >>%FILENAME% netsh advfirewall show allprofiles >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO **** Network Info **** >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO Running, please wait ipconfig /all >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO ***** IIS Status ***** >>%FILENAME% ECHO *********************** >>%FILENAME% iisreset /status >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO ****** IIS Pools ****** >>%FILENAME% ECHO *********************** >>%FILENAME% SET PATH=%PATH%;%systemroot%\system32\inetsrv\ appcmd list apppool >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO ***** Proxy Info ***** >>%FILENAME% ECHO *********************** >>%FILENAME% reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | find /i "ProxyEnable" >>%FILENAME% reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | find /i "proxyserver" >>%FILENAME% reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | find /i "AutoConfigURL" >>%FILENAME% reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | find /i "ProxyOverride" >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO * Internet Connection * >>%FILENAME% ECHO *********************** >>%FILENAME% ping google.com >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO * Mapping Drive * >>%FILENAME% ECHO *********************** >>%FILENAME% net use >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO *** Free Disk Space *** >>%FILENAME% ECHO *********************** >>%FILENAME% wmic logicaldisk get size,freespace,caption | more >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO *****Admin Groups***** >>%FILENAME% ECHO *********************** >>%FILENAME% net localgroup "Administrators" >>%FILENAME% net localgroup "QlikView Administrators" >>%FILENAME% net localgroup "QlikView Management API" >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO ***** System Info ***** >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO Fetching System Info. This may take a few minutes, please wait systeminfo >>%FILENAME% powershell -command "Get-WmiObject Win32_Processor | select name" >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO ***** Patch List ***** >>%FILENAME% ECHO *********************** >>%FILENAME% powershell -command "Get-WmiObject -Class "win32_quickfixengineering"" >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO ****CPU Cores Count**** >>%FILENAME% ECHO *********************** >>%FILENAME% wmic cpu get Name, NumberOfCores, NumberOfLogicalProcessors | more>>%FILENAME% ECHO *********************** >>%FILENAME% ECHO ****Page Files Info**** >>%FILENAME% ECHO *********************** >>%FILENAME% wmic pagefile list | more >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO *****Programs List***** >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO Fetching Program list. This may take a few minutes, please wait wmic product get name,version,vendor,installdate | more >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO ***** IE Version ****** >>%FILENAME% ECHO *********************** >>%FILENAME% reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer" /v svcVersion>>%FILENAME% ECHO *********************** >>%FILENAME% ECHO *****Service list***** >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO Fetching Service list. This may take a few minutes, please wait powershell -command get-service >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO *****Service Log On Account List***** >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO Fetching Service Log on Account. This may take a few minutes, please wait powershell -command "gwmi win32_service | select name,startname" >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO ***** SET ***** >>%FILENAME% ECHO *********************** >>%FILENAME% SET >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO *****Group Policy***** >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO Fetching Group policy. This may take a few minutes, please wait gpresult /z >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO *Local Policies - User Rights Assignment* >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO Fetching User Rights Assignment. This may take a few minutes, please wait secedit /export /areas USER_RIGHTS /cfg %FILENAME% ECHO *********************** >>%FILENAME% ECHO *****Local Policies - Security Options***** >>%FILENAME% ECHO *********************** >>%FILENAME% ECHO Fetching Security Options. This may take a few minutes, please wait secedit /export /areas SECURITYPOLICY /cfg %FILENAME% ECHO *********************** >>%FILENAME% ECHO ***** Host.cfg ******* >>%FILENAME% ECHO *********************** >>%FILENAME% IF EXIST "C:\ProgramData\Qlik\Sense\Host.cfg" ( type C:\ProgramData\Qlik\Sense\Host.cfg >>%FILENAME% ECHO: >>%FILENAME% ::try to decode hostname certutil -f -v -decode C:\ProgramData\Qlik\Sense\Host.cfg c:\programdata\serverStat\host.txt IF EXIST "c:\programdata\serverStat\host.txt" ( echo *********************** >>%FILENAME% ECHO ***Decoded hostname**** >>%FILENAME% echo *********************** >>%FILENAME% type c:\programdata\serverStat\host.txt >>%FILENAME% ECHO: >>%FILENAME% del /f c:\programdata\serverStat\host.txt ) ) ELSE ( Echo **Host.cfg doesn't exist** >>%FILENAME% ) ECHO *********************** >>%FILENAME% ECHO *** Hostsfile ******* >>%FILENAME% ECHO *********************** >>%FILENAME% IF EXIST "C:\Windows\System32\drivers\etc\hosts" ( type C:\Windows\System32\drivers\etc\hosts >>%FILENAME% ECHO: >>%FILENAME% ) ELSE ( Echo **C:\Windows\System32\drivers\etc\hosts doesn't exist** >>%FILENAME% ) ECHO *********************** >>%FILENAME% ECHO *** pg_hba.conf(Qlik Sense v3.X and earlier) ******* >>%FILENAME% ECHO *********************** >>%FILENAME% IF EXIST "C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.3\pg_hba.conf" ( type C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.3\pg_hba.conf >>%FILENAME% ECHO: >>%FILENAME% ) ELSE ( Echo **C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.3\pg_hba.conf doesn't exist** >>%FILENAME% ) ECHO *********************** >>%FILENAME% ECHO *** postgresql.conf(Qlik Sense v3.X and earlier) ******* >>%FILENAME% ECHO *********************** >>%FILENAME% IF EXIST "C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.3\postgresql.conf" ( type C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.3\postgresql.conf >>%FILENAME% ECHO: >>%FILENAME% ) ELSE ( Echo **C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.3\postgresql.conf doesn't exist** >>%FILENAME% ) ECHO *********************** >>%FILENAME% ECHO *** pg_hba.conf(Qlik Sense v3.X and earlier) ******* >>%FILENAME% ECHO *********************** >>%FILENAME% IF EXIST "C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.3\pg_hba.conf" ( type C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.3\pg_hba.conf >>%FILENAME% ECHO: >>%FILENAME% ) ELSE ( Echo **C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.3\pg_hba.conf doesn't exist** >>%FILENAME% ) ECHO *********************** >>%FILENAME% ECHO *** postgresql.conf(Qlik Sense June 2017 and later) ******* >>%FILENAME% ECHO *********************** >>%FILENAME% IF EXIST "C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.6\postgresql.conf" ( type C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.6\postgresql.conf >>%FILENAME% ECHO: >>%FILENAME% ) ELSE ( Echo **C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.6\postgresql.conf doesn't exist** >>%FILENAME% ) ECHO *********************** >>%FILENAME% ECHO *** pg_hba.conf(Qlik Sense June 2017 and later) ******* >>%FILENAME% ECHO *********************** >>%FILENAME% IF EXIST "C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.6\pg_hba.conf" ( type C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.6\pg_hba.conf >>%FILENAME% ECHO: >>%FILENAME% ) ELSE ( Echo **C:\ProgramData\Qlik\Sense\Repository\PostgreSQL\9.6\pg_hba.conf doesn't exist** >>%FILENAME% ) ECHO *********************** >>%FILENAME% ECHO *** pg_hba.conf(Qlik Nprinting) ******* >>%FILENAME% ECHO *********************** >>%FILENAME% IF EXIST "C:\ProgramData\NPrinting\data\pg_hba.conf" ( type C:\ProgramData\NPrinting\data\pg_hba.conf >>%FILENAME% ECHO: >>%FILENAME% ) ELSE ( Echo **C:\ProgramData\NPrinting\data\pg_hba.conf doesn't exist** >>%FILENAME% ) ECHO *********************** >>%FILENAME% ECHO *** postgresql.conf(Qlik Nprinting) ******* >>%FILENAME% ECHO *********************** >>%FILENAME% IF EXIST "C:\ProgramData\NPrinting\data\postgresql.conf" ( type C:\ProgramData\NPrinting\data\postgresql.conf >>%FILENAME% ECHO: >>%FILENAME% ) ELSE ( Echo **C:\ProgramData\NPrinting\data\postgresql.conf doesn't exist** >>%FILENAME% ) ECHO *********************** >>%FILENAME% ECHO ***** lef.txt ******* >>%FILENAME% ECHO *********************** >>%FILENAME% IF EXIST "C:\ProgramData\QlikTech\lef.txt" ( type C:\ProgramData\QlikTech\lef.txt >>%FILENAME% ECHO: >>%FILENAME% ) ELSE ( Echo **C:\ProgramData\QlikTech\lef.txt doesn't exist** >>%FILENAME% ) IF EXIST "C:\ProgramData\QlikTech\QlikView\lef.txt" ( ECHO: >>%FILENAME% type C:\ProgramData\QlikTech\QlikView\lef.txt >>%FILENAME% ECHO: >>%FILENAME% ) ELSE ( Echo **C:\ProgramData\QlikTech\QlikView\lef.txt doesn't exist** >>%FILENAME% ) ECHO *********************** >>%FILENAME% ECHO **** Settings.ini ***** >>%FILENAME% ECHO *********************** >>%FILENAME% IF EXIST "C:\ProgramData\Qlik\Sense\Engine\Settings.ini" ( type C:\ProgramData\Qlik\Sense\Engine\Settings.ini >>%FILENAME% ECHO: >>%FILENAME% ) ELSE ( Echo **C:\ProgramData\Qlik\Sense\Engine\Settings.ini doesn't exist** >>%FILENAME% ) ECHO *********************** >>%FILENAME% ECHO ***Mounted Folders***** >>%FILENAME% ECHO *********************** >>%FILENAME% IF EXIST "C:\ProgramData\QlikTech\QlikViewServer\Settings.ini" ( type "C:\ProgramData\QlikTech\QlikViewServer\Settings.ini"|find "DocumentDirectory" >>%FILENAME% type "C:\ProgramData\QlikTech\QlikViewServer\Settings.ini"|find "DocumentMounts" >>%FILENAME% ) ELSE ( Echo **C:\ProgramData\QlikTech\QlikViewServer\Settings.ini doesn't exist** >>%FILENAME% ) ECHO *********************** >>%FILENAME% ECHO **Source Doc Folders*** >>%FILENAME% ECHO *********************** >>%FILENAME% IF EXIST "C:\ProgramData\QlikTech\ManagementService\QVPR\SourceDocumentFolderResource.xml" ( type "C:\ProgramData\QlikTech\ManagementService\QVPR\SourceDocumentFolderResource.xml"|find "FolderType=""Source""" >>%FILENAME% ) ELSE ( Echo **C:\ProgramData\QlikTech\ManagementService\QVPR\SourceDocumentFolderResource.xml doesn't exist** >>%FILENAME% ) ECHO ***************************** >>%FILENAME% ECHO ***Application Data Folder*** >>%FILENAME% ECHO ***************************** >>%FILENAME% IF EXIST "C:\ProgramData\QlikTech\ManagementService\Workorders\*.xml" ( Echo Workorders\*.xml content >>%FILENAME% type "C:\ProgramData\QlikTech\ManagementService\Workorders\*.xml"|find "ApplicationDataFolder" >>%FILENAME% ) ELSE ( Echo **"C:\ProgramData\QlikTech\ManagementService\Workorders\*.xml" doesn't exist** >>%FILENAME% ) IF EXIST "C:\ProgramData\QlikTech\ManagementService\QVPR\DistributionService.xml" ( Echo QVPR\DistributionService.xml content >>%FILENAME% type "C:\ProgramData\QlikTech\ManagementService\QVPR\DistributionService.xml"|find "ApplicationDataFolder" >>%FILENAME% ) ELSE ( Echo **C:\ProgramData\QlikTech\ManagementService\QVPR\DistributionService.xml" doesn't exist** >>%FILENAME% ) ECHO ************************************** >>%FILENAME% ECHO *Certificate - Current User(Personal)* >>%FILENAME% ECHO ************************************** >>%FILENAME% ECHO Fetching Certificate - Current User(Personal). This may take a few minutes, please wait powershell -command "Get-ChildItem -Recurse Cert:\currentuser\my | Format-list" >>%FILENAME% ECHO ****************************************** >>%FILENAME% ECHO *Certificate - Current User(Trusted Root)* >>%FILENAME% ECHO ****************************************** >>%FILENAME% ECHO Fetching Certificate - Current User(Trusted Root). This may take a few minutes, please wait powershell -command "Get-ChildItem -Recurse Cert:\currentuser\Root | Format-list" >>%FILENAME% ECHO **************************************** >>%FILENAME% ECHO *Certificate - Local Computer(Personal)* >>%FILENAME% ECHO **************************************** >>%FILENAME% ECHO Fetching Certificate - Local Computer(Personal). This may take a few minutes, please wait powershell -command "Get-ChildItem -Recurse Cert:\localmachine\my | Format-list" >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO *Certificate - Local Computer(Trusted Root)* >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO Fetching Certificate - Local Computer(Trusted Root). This may take a few minutes, please wait powershell -command "Get-ChildItem -Recurse Cert:\localmachine\Root | Format-list" >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO **********Certificates with Ports*********** >>%FILENAME% ECHO ******************************************** >>%FILENAME% netsh http show sslcert >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO ********** Monitor information *********** >>%FILENAME% ECHO ******************************************** >>%FILENAME% wmic desktopmonitor| more >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO ************ Power Plan Info ************* >>%FILENAME% ECHO ******************************************** >>%FILENAME% powercfg /LIST >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO ********* Environment Variables ********** >>%FILENAME% ECHO ******************************************** >>%FILENAME% set >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO ************** NTP Status *************** >>%FILENAME% ECHO ******************************************** >>%FILENAME% w32tm /query /status >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO ******* Local usernames and groups ******** >>%FILENAME% ECHO ******************************************** >>%FILENAME% net users >>%FILENAME% net localgroup >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO *************** FIPS Mode ***************** >>%FILENAME% ECHO ******************************************** >>%FILENAME% reg query "HKLM\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy" >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO **** Qlik Sense Services Recovery Mode **** >>%FILENAME% ECHO ******************************************** >>%FILENAME% sc qfailure QlikLoggingService >>%FILENAME% sc qfailure QlikSenseEngineService >>%FILENAME% sc qfailure QlikSensePrintingService >>%FILENAME% sc qfailure QlikSenseProxyService >>%FILENAME% sc qfailure QlikSenseRepositoryDatabase >>%FILENAME% sc qfailure QlikSenseRepositoryService >>%FILENAME% sc qfailure QlikSenseSchedulerService >>%FILENAME% sc qfailure QlikSenseServiceDispatcher >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO **** Scheduled Tasks on local machine ***** >>%FILENAME% ECHO ******************************************** >>%FILENAME% schtasks /query >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO ********* All installed printers ********** >>%FILENAME% ECHO ******************************************** >>%FILENAME% powershell -command "get-WmiObject -class Win32_printer | Format-list" >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO ********* .NET Framework Version ********** >>%FILENAME% ECHO ********* The shown version is in HEX, which needs to be converted to decimal value. >>%FILENAME% ECHO ********* Then use the Microsoft Link to find out the exact .NET Version Number: >>%FILENAME% ECHO ********* https://www.binaryhexconverter.com/hex-to-decimal-converter >>%FILENAME% ECHO ********* https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed >>%FILENAME% ECHO ******************************************** >>%FILENAME% reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" | find /i "Release" >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO ******* ServicesPipeTimeout Value ********* >>%FILENAME% ECHO ******************************************** >>%FILENAME% reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control" | find /i "ServicesPipeTimeout" >>%FILENAME% ECHO ******************************************** >>%FILENAME% ECHO *********** BitLocker Status ************** >>%FILENAME% ECHO ******************************************** >>%FILENAME% manage-bde -status >>%FILENAME% %SystemRoot%\explorer.exe "c:\programdata\serverStat\" EXIT /B 0