none
Software Deinstallieren per Powershell "Silent" RRS feed

  • Frage

  • Guten Tag,

    ich möchte gerne per Powershell Programme entfernen und das "Silent".

    Wie stelle ich das am besten an ?

    Ich benutze Windows 7 als Testumgebung und möchte folgende Software entfernen:

    - Adobe Reader

    - Office Test und MS Essentials

    Gruß

    Rafael

    Sonntag, 15. Dezember 2013 09:43

Antworten

  • Ich bekomme auf meinem Rechner 114 Software installation angezeigt die das Wort Office im Displayname enthalten!
    Updates, Language Packs, Plugins...

    Get-InstalledSoftware  | Where-Object {$_.DisplayName -match 'office'} | Select -ExpandProperty DisplayName

    Bist du dir sicher, du hast den richtigen UninstallString erwischt ?

    Wenn ich die folgende Zeile mit dem Kompletten Displayname ausführe bekomme ich 2 Uninstallstrings Angezeigt:

    Get-InstalledSoftware  | Where-Object {$_.DisplayName -like 'Microsoft Office Professional Plus 2010'} | select -ExpandProperty UninstallString

    Die Uninstallstrings:

    "C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\Office Setup Controller\setup.exe" /uninstall PROPLUS /dll OSETUP.DLL

    MsiExec.exe /X{90140000-0011-0000-0000-0000000FF1CE}

    -----------------------------------------------------------------

    Wenn ich die Zeile so wie du eingeben bekomme ich den selben Error.

    Dies ist ein  Parsing error!

    Du musst diese Zeile Code mal mit den Augen der PowerShell sehen.

    Geschweifte Klammern {} sind in der PowerShell ein Block von Code der ausgeführt werden soll (Scriptblock).

    Die Bindestriche (Minuszeichen) sieht die PowerShell vielleicht als -Parameter.

    die anderen Sonderzeichen kann PowerShell auch missverstehen!

    Um dies zu vermeiden sollte man der PowerShell anhand von Anführungszeichen Zeigen wie diese Zeile zu lesen ist.

    Versuch es mal mit diesem Code in der PowerShell das hat bei mir geklappt:

    & 'MsiExec.exe' @('/X{95140000-0070-0000-0000-0000000FF1CE}')

    Lies bitte dazu meinen Blog Artikel:
    Mehrere Arten mit der PowerShell ein externes Programm zu starten

    http://www.admin-source.de/BlogDeu/791/mehrere-arten-mit-der-powershell-ein-externes-programm-zu-starten


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    • Bearbeitet Peter Kriegel Donnerstag, 19. Dezember 2013 08:36
    • Als Antwort markiert WinUser1988 Donnerstag, 19. Dezember 2013 08:41
    Donnerstag, 19. Dezember 2013 08:34

Alle Antworten

  • Wenn die Pakete als Microsoft Installer Pakete (.MSI oder .MSU usw....) Installiert worden sind kannst du immer den Microsoft Installer benutzen.

    Wie du an den deinstallationsbefehl hern kommst habe ich dir ja in dem anderen Thread gezeigt:

    http://social.technet.microsoft.com/Forums/de-DE/9d9bb25f-2bc5-4a04-83e0-d15e9d687093/ausgabe-als-parameter-verwenden?forum=powershell_de

    Gib mal in der Konsole (oder PowerShell) MSIEXEC ein, dann kommt ein Popup, wo du die Parameter siehst die du benutzen kannst.

    Windows ® Installer. V 5.0.7601.17514

    msiexec /Option <Erforderliche Parameter> [Optionale Parameter]

    Installationsoptionen
        </package | /i> <Produkt.msi>
            Installiert oder konfiguriert ein Produkt.
        /a <Produkt.msi>
            Administrative Installation - Installiert ein Produkt im Netzwerk.
        /j<u|m> <Produkt.msi> [/t <Transformliste] [/g <Sprach-ID>]
            Kündigt ein Produkt an - m für alle Benutzer, u für den aktuellen Benutzer
        </uninstall | /x> <Produkt.msi | Produktcode>
            Deinstalliert das Produkt.
    Anzeigeoptionen
        /quiet
            Hintergrundmodus, keine Benutzerinteraktion
        /passive
            Unbeaufsichtigter Modus - Nur Statusleiste
        /q[n|b|r|f]
            Legt die Benutzeroberfläche fest.
            n - Keine Benutzeroberfläche
            b - Einfache Benutzeroberfläche
            r - Reduzierte Benutzeroberfläche
            f - Vollständige Benutzeroberfläche (Standard)
        /help
            Hilfeinformationen
    Neustartoptionen
        /norestart
            Kein Neustart nach Abschluss der Installation
        /promptrestart
            Benutzereingabe, falls Neustart erforderlich ist
        /forcerestart
            Computer nach Abschluss der Installation immer neu starten
    Protokolllierungsoptionen
        /l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <Protokolldatei>
            i - Statusmeldungen
            w - Nicht schwerwiegende Warnungen
            e - Alle Fehlermeldungen
            a - Ausführung von Aktionen
            r - Aktionsspezifische Einträge
            u - Benutzeranforderungen
            c - Ursprüngliche Benutzeroberflächenparameter
            m - Informationen betreffend zuwenig Arbeitsspeicher oder schwerwiegendem Abbruch
            o - Meldungen betreffend zuwenig Speicherplatz
            p - Terminaleigenschaften
            v - Ausführliche Ausgabe
            x - Zusätzliche Debuginformationen
            + - An vorhandene Protokolldatei anhängen
            ! - Jede Zeile ins Protokoll aufnehmen
            * - Alle Informationen mit Ausnahme der Optionen v und x protokollieren
        /log <Protokolldatei>
            Entspricht /l* <Protokolldatei>
    Aktualisierungsoptionen
        /update <Update1.msp>[;Update2.msp]
            Übernimmt Update(s).
        /uninstall <Patchcode-GUID>[;Update2.msp] /package <Produkt.msi | Produktcode>
            Entfernt Update(s) für ein Produkt.
    Reparaturoptionen
        /f[p|e|c|m|s|o|d|a|u|v] <Produkt.msi | Produktcode>
            Repariert ein Produkt.
            p - nur wenn eine Datei fehlt
            o - wenn eine Datei fehlt oder eine ältere Version installiert ist (Standard)
            e - wenn eine Datei fehlt oder eine gleiche bzw. ältere Version installiert ist
            d - wenn eine Datei fehlt oder eine andere Version installiert ist
            c - wenn eine Datei fehlt oder die Prüfsumme nicht mit dem berechneten Wert übereinstimmt
            a - Erzwingt die Neuinstallation aller Dateien
            u - Alle erforderlichen benutzerspezifischen Registrierungseinträge (Standard)
            m - Alle erforderlichen Computerspezifischen Registrierungseinträge (Standard)
            s - Alle vorhandenen Verknüpfungen (Standard)
            v - Führt von der Quelle aus und speichert das lokale Paket zwischen
    Öffentliche Eigenschaften festlegen
        [PROPERTY=Eigenschaftswert]

    Weitere Informationen betreffend der Befehlszeilensyntax erhalten Sie im Windows ® Installer SDK.

    Copyright © Microsoft Corporation. Alle Rechte vorbehalten.
    Teile dieser Software basieren zum Teil auf der Arbeit der Independent JPEG Group.

    oder hier mit Beispielen: http://www.advancedinstaller.com/user-guide/msiexec.html

    Da du auf deine letzte Frage nicht mehr geantwortet hast (das ist unhöflich), lies bitte noch das hier:

    Wozu Antworten markieren und für Beiträge abstimmen?


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Montag, 16. Dezember 2013 06:49
  • Guten Abend,

    ja sry, ich war stark ausgelastet und hab keine Zeit gefunden den Thread weiter zu pflegen, kommt auch nicht mehr vor. MsiExec nutze ich schon das Popup kenne ich auch.

    Ich bekomme momentan alles weg bis auf:

    - Microsoft Office Testversion

    - Windows Live Essentials

    GUID´s habe ich gefunden aber deinstallieren geht trotzdem nicht, kann ich alles mit MSIEXEC deinstallieren ?

    Essentials hat mehrere GUID´s wie entferne ich das alles Restlos ?

    Mit freundlichen Grüßen

    Rafael

    Dienstag, 17. Dezember 2013 20:07
  • Hallo Rafael mit der GUID zu arbeiten ist nicht dersauberste Weg!

    Deshal  schreibe dir hier nun zum 3. mal und letzten mal:

    Wie du an den Deinstallationsbefehl heran kommst habe ich dir ja in dem anderen Thread gezeigt:

    http://social.technet.microsoft.com/Forums/de-DE/9d9bb25f-2bc5-4a04-83e0-d15e9d687093/ausgabe-als-parameter-verwenden?forum=powershell_de

    Da du auf deine letzte Frage nicht mehr geantwortet hast (das ist unhöflich), lies bitte noch das hier:

    Wozu Antworten markieren und für Beiträge abstimmen?


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Mittwoch, 18. Dezember 2013 05:52
  • Ich habe den Uninstallstring durch deine Funktion gefunden bloß bei Office funktioniert das nicht:

    ...
    Get-InstalledSoftware | Where-Object {$_.DisplayName -match 'office'} | Select-Object UninstallString

    UninstallString                                                                                                                       
    ---------------                                                                                                                       
    MsiExec.exe /X{95140000-0070-0000-0000-0000000FF1CE}       

    ...

    MsiExec.exe /X{95140000-0070-0000-0000-0000000FF1CE}
    Fehlerhafte numerische Konstante: 0000000.
    Bei Zeile:1 Zeichen:47
    + MsiExec.exe /X{95140000-0070-0000-0000-0000000 <<<< FF1CE}
        + CategoryInfo          : ParserError: (0000000:String) [], ParentContainsErrorRecordException
        + FullyQualifiedErrorId : BadNumericConstant

    Woran kann das liegen ?

    Gruß

    Rafael

    Mittwoch, 18. Dezember 2013 07:44
  • Wie rufst du denn den die Deinstallation auf ?

    Hast du Code  den du zeigen kannst ?

    Vielleicht liegt es ja an der Art wie du die Deinstallation aufrufst ?


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Mittwoch, 18. Dezember 2013 12:05
  • Ich starte die Powershell als Administrator und gebe den Befehl direkt ein:

    MsiExec.exe /X{95140000-0070-0000-0000-0000000FF1CE}

    Ich habe es auch mit msiexec.exe /x {95140000-0070-0000-0000-0000000FF1CE} /quiet versucht.

    Bei Adobe Reader etc. läuft die Schreibweise mit /qn am Ende.

    Gruß

    Rafael

    Mittwoch, 18. Dezember 2013 18:56
  • Ich bekomme auf meinem Rechner 114 Software installation angezeigt die das Wort Office im Displayname enthalten!
    Updates, Language Packs, Plugins...

    Get-InstalledSoftware  | Where-Object {$_.DisplayName -match 'office'} | Select -ExpandProperty DisplayName

    Bist du dir sicher, du hast den richtigen UninstallString erwischt ?

    Wenn ich die folgende Zeile mit dem Kompletten Displayname ausführe bekomme ich 2 Uninstallstrings Angezeigt:

    Get-InstalledSoftware  | Where-Object {$_.DisplayName -like 'Microsoft Office Professional Plus 2010'} | select -ExpandProperty UninstallString

    Die Uninstallstrings:

    "C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\Office Setup Controller\setup.exe" /uninstall PROPLUS /dll OSETUP.DLL

    MsiExec.exe /X{90140000-0011-0000-0000-0000000FF1CE}

    -----------------------------------------------------------------

    Wenn ich die Zeile so wie du eingeben bekomme ich den selben Error.

    Dies ist ein  Parsing error!

    Du musst diese Zeile Code mal mit den Augen der PowerShell sehen.

    Geschweifte Klammern {} sind in der PowerShell ein Block von Code der ausgeführt werden soll (Scriptblock).

    Die Bindestriche (Minuszeichen) sieht die PowerShell vielleicht als -Parameter.

    die anderen Sonderzeichen kann PowerShell auch missverstehen!

    Um dies zu vermeiden sollte man der PowerShell anhand von Anführungszeichen Zeigen wie diese Zeile zu lesen ist.

    Versuch es mal mit diesem Code in der PowerShell das hat bei mir geklappt:

    & 'MsiExec.exe' @('/X{95140000-0070-0000-0000-0000000FF1CE}')

    Lies bitte dazu meinen Blog Artikel:
    Mehrere Arten mit der PowerShell ein externes Programm zu starten

    http://www.admin-source.de/BlogDeu/791/mehrere-arten-mit-der-powershell-ein-externes-programm-zu-starten


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    • Bearbeitet Peter Kriegel Donnerstag, 19. Dezember 2013 08:36
    • Als Antwort markiert WinUser1988 Donnerstag, 19. Dezember 2013 08:41
    Donnerstag, 19. Dezember 2013 08:34
  • Danke dir ich werde es testen und gebe dann noch Feedback.

    Donnerstag, 19. Dezember 2013 08:41
  • Sooo ... danke dir es hat alles super funktioniert.

    Andere Frage wie sieht es mit den Live Essentials aus ? Diese haben mehrere GUID´s wie bekomme ich das komplett Paket entfernt ? Also ein Paket mit mehreren GUID´s ?

    Gruß

    Rafael

    Freitag, 20. Dezember 2013 21:41
  • Wenn Auflisten der Uninstallstrings aus der Registry eine Software mehrmals auftaucht, dann besteht die Software warscheinlich aus mehreren separat installierten Modulen.

    Diese sind dann meist auch einzeln wieder entfernbar.

    Nur muss man manchmal eine gewisse Reihenfolge einhalten.

    Die kenne ich für Live Essentials nicht.


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Samstag, 21. Dezember 2013 15:09
  • Ok .. kannst du mir vielleicht verraten wie man Systemvariablen benutzt in der Powershell ? Also z.B.: %programfiles(x86)%

    Gruß

    Rafael

    Sonntag, 22. Dezember 2013 19:57