Jump to content

Julez

Members
  • Gesamte Inhalte

    4
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von Julez

  1. vor 1 Stunde schrieb BOfH_666:

    Sind das Windows-Server und Windows-Clients?  Und installiert ihr keine Updates für diese Clients und Server?

    Unser Systemhaus rollt Updates über WSUS aus.

     

    vor 1 Stunde schrieb NilsK:

    Moin,

     

    du hast doch den fertigen Code schon. Warum probierst du das nicht einfach aus?

     

    Du solltest ein Batch übrigens nicht mit "exit" beenden, weil das den ganzen CMD-Prozess beendet. Das kann zu schwer auffindbaren Fehlern führen. Besser:

    
    GOTO :eof

     

    [Goto - Jump to label - Windows CMD - SS64.com]
    https://ss64.com/nt/goto.html

     

    Gruß, Nils

    Hi Nils, hat leider nicht geklappt aber ich werde deinen :eof-Rat befolgen und mit einbauen.

    Mein abgeänderter Code hat zumindest mal zu einem messbaren Erfolg geführt:

    $Version = reg query HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\TeamViewer /f Version /t REG_SZ /c /e
    if ($Version -eq "    Version    REG_SZ    15.14.5 HC") 
    {echo "ok"} 
    else {echo "falsch"}

    Danke für eure Hilfe. Ich hab wohl noch einiges an Nachholbedarf, deshalb wird dieses Forum jetzt erstmal zum stöbern in die Favicons gepinnt =)

    Bis bald

    • Haha 1
  2. Hmm.. allen Anschein nach hänge ich da wirklich wohl in einer Zeitkapsel fest. Ich werde mir WSUS mal ansehen. SCCM wurde mir auch schon einmal empfohlen. Nur macht das glaube ich in unserem Fall nicht enorm viel Sinn: Wir haben zwar viele Clients und genau so viele Server Deutschlandweit, die Software ändert sich jedoch ausserhalb des Lebenszyklus nur geringfügig.

    Ich werde mich mal reinlesen, schaden kann es ja nicht - Danke für die Tipps.

     

    Hätte jedoch auch noch jemand eine Antwort auf meine doch so "triviale" Frage, wie ich diese Registrykey-Abfrage in meinen Code rein bekomme?

     

    Beste Grüße und vielen Dank.

  3. Hallo zusammen,

     

    ich habe nun schon des Öfteren bei euch im Forum zu einigen Themen erfolgreich Hilfe gefunden - Danke dafür an die fleißigen Antworter. Nun habe ich eine Frage, die leider (nicht ganz) im Forum zu finden ist - verbessert mich gerne, falls ein Artikel hierfür schon existiert.

    Leider bin ich in Anwendungsentwicklung nie so richtig gut gewesen und krampfe mich immer durch dieses Thema =)

     

    Zur Aufgabenstellung:

    - Wir rollen derzeit auf allen Clients verschiedene Instanzen (Host/Full) des neuen TeamViewer Clients per GPO aus.

    - Hierfür haben wir ein Skript geschrieben welches die aktuell installierte Version finden, löschen und mithilfe der .msi vom Fileserver neu installieren soll. --> Das klappt auch schon super!

    - Grund hierfür ist die Bereitstellung des APITokens bei erneuter Installation, welchen wir auch zukünftig jedem neuen Client automatisch mitgeben möchten.

    - Wir benötigen noch eine Abfrage im Skript, die vorab prüft ob schon die aktuelle Version installiert ist, da er sonst diesen Vorgang mit jedem Reboot erneut ausführt.

     

    Unser aktueller Code:

    @echo off
    REM UNINSTALL CURRENT TEAMVIEWER INSTALLATION
    tasklist /FI "IMAGENAME eq TeamViewer.exe" 2>NUL | find /I /N "TeamViewer.exe">NUL
    if "%ERRORLEVEL%"=="0" (GOTO :KILL) ELSE (GOTO :REMOVEMSI)
    :KILL
    taskkill /f /im TeamViewer.exe
    TIMEOUT 2
    GOTO :REMOVEMSI
    :REMOVEMSI
    wmic product where vendor="TeamViewer"
    if not "%errorlevel%"=="0" GOTO :CHECKOS
    for /f "tokens=2 delims==" %%f in ('wmic product Where "vendor like 'TeamViewer'" get IdentifyingNumber /value ^| find "="') do set "id=%%f"
    msiexec.exe /x "%id%" /qn
    GOTO :CHECKOS
    :CHECKOS
    cd\
    Set "OS64=C:\Program Files (x86)"
    IF EXIST "%OS64%" (GOTO :UNINSTALL64) ELSE (GOTO :UNINSTALL32)
    :UNINSTALL64
    cd\
    Set "OLD64=C:\Program Files (x86)\TeamViewer\Version*"
    IF EXIST "%OLD64%" (GOTO :PREVIOUS64) ELSE (GOTO :REMOVE64)
    :UNINSTALL32
    cd\
    Set "OLD32=C:\Program Files\TeamViewer\Version*"
    IF EXIST "%OLD32%" (GOTO :PREVIOUS32) ELSE (GOTO :REMOVE32)
    :PREVIOUS32
    cd\
    cd %ProgramFiles%\TeamViewer\Version*
    IF NOT EXIST "*uninstall*" GOTO :REMOVE32
    start uninstall.exe /S 
    GOTO :REMOVE32
    :REMOVE32
    cd\
    cd %ProgramFiles%\TeamViewer
    IF NOT EXIST "*uninstall*" GOTO :REMOVEFILES32
    start uninstall.exe /S
    GOTO :REMOVEFILES32
    :REMOVEFILES32
    reg delete "HKLM\Software\TeamViewer" /f
    cd %temp%
    rd TeamViewer /s /Q
    GOTO :INSTALL
    :PREVIOUS64
    cd\
    cd %ProgramFiles(x86)%\TeamViewer\Version*
    IF NOT EXIST "*uninstall*" GOTO :REMOVE64
    start uninstall.exe /S
    GOTO :REMOVE64
    :REMOVE64
    cd\
    cd %ProgramFiles(x86)%\TeamViewer
    IF NOT EXIST "*uninstall*" GOTO :REMOVEFILES64
    start uninstall.exe /S
    GOTO :REMOVEFILES64
    :REMOVEFILES64
    reg delete "HKLM\Software\Wow6432Node\TeamViewer" /f
    cd %temp%
    rd TeamViewer /s /Q
    GOTO :INSTALL
    :INSTALL
    start /wait msiexec.exe /i "\\Fileserver\file\Software\Verteilung\Teamviewer\Teamviewer 15\TeamViewerMSI\Host\TeamViewer_Host.msi" /qn CUSTOMCONFIGID="" APITOKEN=""-"" ASSIGNMENTOPTIONS="--reassign --alias %ComputerName% --grant-easy-access --group-id "" --proxy xxx.xxx.xxx.xxx:xxxx
    exit

    Nach etlichem Forengewälze erschien mir die Abfrage des Registry Keys als sinnvollere Alternative zu UNC-Pfad und .exe Suche

     

    Nun zu dem was ich in eurem Forum gefunden habe:

    Link: Forenbeitrag von MC Bain - Regkey per Batch abfragen

    reg query "\\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\TeamViewer\Version" /v "15.14.5 HC"
    if %errorlevel%==0 GOTO exit
    if %errorlevel%==1 GOTO :TASKCHECK
    :TASKCHECK

    - Der Registry Pfad entspricht dem auf unseren Clients.

    - Kann ich diesen Code einfach nach dem Echo einfügen um eine erneute Installation bei aktueller Programmversion zu verhindern?

    - Bonusfrage: Gibt es die Möglichkeit, den Erfolg der Datei zu "messen"?

    -- Hierbei dachte ich daran, bei übersprungener Installation eine Datei auszugeben die  "Keine_erneute_Installation.txt" bzw. bei erfolgreicher Aktualisierung "Programmaktualisierung_durchgeführt.txt" heißt.

    -- Diese Ergebnisdateien werde ich nach meinen Tests aus dem Skript wieder entfernen

    - Interessehalber: Was bedeutet in diesem Fall "/v" ?

     

    Ich hoffe, ich konnte alles verständlich wiedergeben. Falls ihr noch weitere Informationen benötigt, gebe ich sie gerne weiter. Ich danke vielmals für eure Hilfe.

    Beste Grüße.

×
×
  • Neu erstellen...