Logfile das Passagen einer Batch abfängt
Hi,
ich stehe vor einem kleinen Problem. Aktuell paketiere ich den PaloAlto Cortex in der Version 7.6. Wir werden mit diesem Tool (und weitere), TrendMicro ablösen. Da wir über 4tsd Clients weltweit haben, nutzen wir zur Softwareverteilung Matrix42 / Emprium .
Allerdings habe ich ein paar Probleme mit der Batch von PaloAlto Cortex. Ich habe keine Ahnung, was im Hintergrund genau passiert.
Mein Plan ist es also, den Deinstallationsbatch von Cortex irgendwie abzufangen und zu schauen, was er genau macht.
Welche Möglichkeit habe ich also nun, einzelne Sequenzen (interessant ab der :checkTrapsInstalled -Zeile), mir in einem LOG ausgeben zu lassen, damit ich nachvollziehen kann, was er genau macht um mir diese Parameter in das Skript für Matrix zu basteln.
Vielen Dank für Eure Hilfe!
Hier der Code des Deinstallationsbatch.
ich stehe vor einem kleinen Problem. Aktuell paketiere ich den PaloAlto Cortex in der Version 7.6. Wir werden mit diesem Tool (und weitere), TrendMicro ablösen. Da wir über 4tsd Clients weltweit haben, nutzen wir zur Softwareverteilung Matrix42 / Emprium .
Allerdings habe ich ein paar Probleme mit der Batch von PaloAlto Cortex. Ich habe keine Ahnung, was im Hintergrund genau passiert.
Mein Plan ist es also, den Deinstallationsbatch von Cortex irgendwie abzufangen und zu schauen, was er genau macht.
Welche Möglichkeit habe ich also nun, einzelne Sequenzen (interessant ab der :checkTrapsInstalled -Zeile), mir in einem LOG ausgeben zu lassen, damit ich nachvollziehen kann, was er genau macht um mir diese Parameter in das Skript für Matrix zu basteln.
Vielen Dank für Eure Hilfe!
Hier der Code des Deinstallationsbatch.
:LOG
@echo off
REM only change trapsPassword accoordingly, don't touch the rest
set trapsPassword=Password1
REM DONT CHANGE BELOW
set trapsCytool="%programFiles%\Palo Alto Networks\Traps\cytool.exe"
set logFileNameOnly=UninstallBatchLogs_%computername%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
set logFile=%temp%\%logFileNameOnly%
set accessDenied="Error 5: Access is denied."
:start
echo Start Time: %date% %time%
echo Start Time: %date% %time% > %logFile%
echo Machine Name: %computername%
echo Machine Name: %computername% >> %logFile%
:checkSystemLanguage
for /f "tokens=*" %%v in ('reg query HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language /v InstallLanguage') do (
set searchResults= %%v)
set systemLanguage=%searchResults:~30%
if %systemLanguage% NEQ 0409 (
echo OS Language not in English! OS language is 0x%systemLanguage%! Aborting...
echo OS Language not in English! OS language is 0x%systemLanguage%! Aborting... >> %logFile%
goto finishSaveLogs )
echo OS Language: English
echo OS Language: English >> %logFile%
:checkOsVersion
for /f "tokens=*" %%v in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName') do (
set searchResults= %%v)
set systemVersion=%searchResults:~26%
echo OS Version: %systemVersion%
echo OS Version: %systemVersion% >> %logFile%
:checkOsArchitecture
if %processor_architecture% EQU AMD64 (
set osArch=x64
echo OS Architecture: x64
echo OS Architecture: x64 >> %logFile% )
if %processor_architecture% EQU x86 (
if not defined processor_architew6432 (
set osArch=x86
echo OS Architecture: x86
echo OS Architecture: x86 >> %logFile% ))
:checkTrapsInstalled
if not exist "%programFiles%\Palo Alto Networks\Traps\" (
echo Cortex XDR agent not installed! Aborting...
echo Cortex XDR agent not installed! Aborting... >> %logFile%
goto finishSaveLogs )
echo Starting graceful uninstall process for Cortex XDR...
echo Starting graceful uninstall process for Cortex XDR... >> %logFile%
:checkTrapsVersion
for /f "tokens=*" %%v in ('reg query HKLM\Software\Cyvera\Client /v "Product Version"') do (
set searchResults= %%v)
set trapsVersion=%searchResults:~30%
echo Found Cortex XDR version: %trapsVersion%
echo Found Cortex XDR version: %trapsVersion% >> %logFile%
set trapsVersion=%trapsVersion:~0,5%
set trapsMainVersion=%trapsVersion:~0,2%
:checkTrapsCompatible
echo Looking for Cortex XDR product GUID...
echo Looking for Cortex XDR product GUID... >> %logFile%
if %trapsMainVersion% EQU 7. (
goto uninstallGUID_Cortex )
if %trapsMainVersion% EQU 6. (
goto uninstallGUID_Traps )
if %trapsMainVersion% EQU 5. (
goto uninstallGUID_Traps )
if %trapsMainVersion% EQU 4. (
goto uninstallGUID_Traps )
echo Cortex XDR version not supported! Script intended for Cortex XDR 7.x, 6.x, 5.x and 4.x. Aborting...
echo Cortex XDR version not supported! Script intended for Cortex XDR 7.x, 6.x, 5.x and 4.x. Aborting... >> %logFile%
goto finishSaveLogs
:uninstallGUID_Cortex
for /f "tokens=*" %%v in ('"reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall /s /f "Cortex XDR"|findstr /i "currentversion\uninstall""') do (
set searchResults= %%v)
set productCode=%searchResults:~72%
echo Cortex XDR productCode: %productCode%
echo Cortex XDR productCode: %productCode% >> %logFile%
:startTraps
echo Making sure Cortex XDR is running...
echo Making sure Cortex XDR is running... >> %logFile%
%trapsCytool% runtime start >> %logFile%
echo Waiting 5 seconds...
echo Waiting 5 seconds... >> %logFile%
timeout 5 > NUL
echo %trapsPassword%|%trapsCytool% checkin
:disableSprot
echo Disabling Cortex XDR agent tampering protection...
echo Disabling Cortex XDR agent tampering protection... >> %logFile%
for /f "tokens=*" %%v in ('"echo %trapsPassword%|%trapsCytool% protect disable"') do (
set searchResults=%%v)
set searchResultsCut=%searchResults:~0,12%
set accessDeniedCut=%accessDenied:~1,12%
if "%searchResultsCut%" EQU "%accessDeniedCut%" (
echo Failed running cytool!! Incorrect password or CMD not elevated. Aborting...
echo Failed running cytool!! Incorrect password or CMD not elevated. Aborting... >> %logFile%
goto finishSaveLogs )
goto uninstallMsiexec_Cortex
:uninstallMsiexec_Cortex
echo Calling msiexec to start Cortex XDR uninstall...
echo Calling msiexec to start Cortex XDR uninstall... >> %logFile%
msiexec /X%productCode% /quiet /l*v %temp%\CortexXdrUninstallLog_%computername%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
echo Finished graceful uninstall process for Cortex XDR...
echo Finished graceful uninstall process for Cortex XDR... >> %logFile%
goto finishSaveLogs
:uninstallGUID_Traps
for /f "tokens=*" %%v in ('"reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall /s /f "Traps"|findstr /i "currentversion\uninstall""') do (
set searchResults= %%v)
set productCode=%searchResults:~72%
echo Cortex XDR productCode: %productCode%
echo Cortex XDR productCode: %productCode% >> %logFile%
echo Calling msiexec to start Cortex XDR uninstall...
echo Calling msiexec to start Cortex XDR uninstall... >> %logFile%
msiexec /X%productCode% /quiet /l*v %temp%\CortexXdrUninstallLog_%computername%_%time:~0,2%%time:~3,2%%time:~6,2%.txt UNINSTALL_PASSWORD=%trapsPassword%
echo Finished graceful uninstall process for Cortex XDR...
echo Finished graceful uninstall process for Cortex XDR... >> %logFile%
goto finishSaveLogs
:finishSaveLogs
echo Finish Time: %date% %time%
echo Finish Time: %date% %time% >> %logFile%
echo Batch logs at: %logFile%
echo Batch logs at: %logFile% >> %logFile%
echo Uninstall logs at: %temp%\CortexXdrUninstallLog_%computername%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
echo Uninstall logs at: %temp%\CortexXdrUninstallLog_%computername%_%time:~0,2%%time:~3,2%%time:~6,2%.txt >> %logFile%
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1731878325
Url: https://administrator.de/forum/logfile-das-passagen-einer-batch-abfaengt-1731878325.html
Ausgedruckt am: 12.04.2025 um 00:04 Uhr
10 Kommentare
Neuester Kommentar

Mein Plan ist es also, den Deinstallationsbatch von Cortex irgendwie abzufangen und zu schauen, was er genau macht.
Wozu noch abfangen?? Du hast doch im Klartext vorliegen was er macht Wenn du was an den Variablen nicht verstehst lasst sie dir halt per ECHO in die Shell oder das in das Logfile ausgeben.
Ich habe keine Ahnung, was im Hintergrund genau passiert.
Mal ehrlich, Batch gibt's nicht erst seit gestern und wirklich geheimnisvolles passiert in dem Skript ehrlich gesagt nicht ...Windows Batch Grundlagen
https://www.dostips.com/DtTipsStringManipulation.php

Also mir schon, da passiert nun echt nichts weltbewegendes.
Also mal lesen sollte man das Skript schon 🙈
Für die Paketierung, muss ich ein PW mitgeben und die Frage ist, wo ich dieses mitgeben kann zwecks Deinstallation. Für die Paketierung müsste diesem Befehl irgendwie beibringen, dass er das Passwort mitgeschickt bekommt:
Zeile 4 reicht dir nicht??set trapsPassword=Password1

Enable or Disable Service Protection Settings on the Endpoint
Da wird das Passwort einfach per echo an den Befehl per pipe übergeben so das der User es nicht eingeben muss.
Da wird das Passwort einfach per echo an den Befehl per pipe übergeben so das der User es nicht eingeben muss.

Zitat von @EL-DTOR:
Dieses Passwort wird über die Endpoint-Console mitgeben. In der Paketierung geht es darum, dem ganzen auch eine automatisierte Deinstallation durchführen zu können.
Dann übergebe das Passwort halt als Parameter an das Skript in dem du Zeile 4 so anpasstDieses Passwort wird über die Endpoint-Console mitgeben. In der Paketierung geht es darum, dem ganzen auch eine automatisierte Deinstallation durchführen zu können.
set "trapsPassword=%~1"
meinscript.cmd "MeinPasswort"
Dazu ist es wichtig zu erfahren, was der Batch wo genau macht.
????? Steht doch im Skript was gemacht wird. Wenn du keine Ahnung von Batch hast dann belese dich oder lass es jemanden machen der versteht was bei den Batch Befehlen passiert.Ferner geht es mir um einen CODE-Schnipsel und verschiedene Sequenzen nachzuvollziehen.
WAS willst du nachvollziehen? Wie gesagt da passiert nichts "Geheimes". Gehe jede Zeile durch schlage die Befehle nach und dann weist du was da passiert... Ansonsten frage was du nicht verstehst, oder sollen wir dir hier jede einzelne Zeile erläutern ?!