Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Bulk Patching mit Powershell und msiexec. Wo liegt der Fehler im Script?

Mitglied: beidermachtvongreyscull

beidermachtvongreyscull (Level 2) - Jetzt verbinden

09.10.2019, aktualisiert 11:42 Uhr, 194 Aufrufe, 4 Kommentare

Moin Kollegen,

spart Euch bitte Sprüche wie "Mach's mit WSUS" im voraus. Ich habe gute Gründe, auf Windows Update zu verzichten.

Also so sieht es aus:

Ich habe 3 Windows 2016 Terminalserver in einer Farm laufen. Auf allen ist Office 2016 x86 installiert.

Nun wollte ich Office 2016 offline aktualisieren.

Dazu habe ich mittels WSUSOffline alle Updatepakete heruntergeladen und entpackt, so dass mir msp-Dateien vorliegen.

Um die Sache nun in einem Rutsch durchzuführen, habe ich folgendes Script gebaut:

01.
$files = Get-ChildItem | Where {$_.Extension -eq ".msp"}
02.
foreach ($file in $files)
03.
{
04.
   $file.FullName
05.
   Start-Process c:\windows\system32\msiexec.exe -Wait -ArgumentList "/p '$file.FullName' REINSTALL=ALL REINSTALLMODE=omus /qn /l*v 'c:\OFU\log.txt'"
06.
}
Das Script wird im gleichen Ordner ausgeführt, in dem auch die MSP-Pakete liegen.

Mit Parameter /qn läuft das Script durch und es passiert nichts. Ohne den Parameter, hagelt es Fehlermeldungen wie "Dieses Patchpaket konnte nicht geöffnet werden".
Wenn das nur bei den unpassenden Paketen passieren würde, würde ich es noch verstehen, aber die Meldung kommt bei allen.

Ich lasse extra zum Nachvollziehen die Variable nochmals davor ausgeben. Die Ausgabe ist ok. Voller Pfad, voller Dateiname, keine Leerzeichen.

Auch mit erhöhten Rechten keine Änderung.

Ich blicke nicht durch, was da falsch läuft, denn manuell auf der Console funktioniert der Aufruf.

Ich würde mich freuen, wenn jemand von Euch mir hier eine Hilfestellung geben kann.

Danke im voraus.

bdmvg
Mitglied: erikro
LÖSUNG 09.10.2019 um 11:49 Uhr
Moin,

Zitat von beidermachtvongreyscull:
01.
> $files = Get-ChildItem | Where {$_.Extension -eq ".msp"}

Hier besser:

01.
$files = get-childitem -path *.msp
01.
foreach ($file in $files)
02.
> {
03.
>    $file.FullName
04.
>    Start-Process c:\windows\system32\msiexec.exe -Wait -ArgumentList "/p '$file.FullName' REINSTALL=ALL REINSTALLMODE=omus /qn /l*v 'c:\OFU\log.txt'"
05.
> }
06.
> 

Hier mal ein Beispiel, damit Du verstehst, warum:

01.
PS P:\> $files = get-childitem *.pdf
02.
PS P:\> foreach($file in $files) {'$file.fullname'}
03.
$file.fullname
04.
$file.fullname
05.
$file.fullname
06.
$file.fullname
07.
$file.fullname
08.
$file.fullname
Wenn Du eine Variable in Hochkommata einschließt, dann wird sie nicht aufgelöst, sondern der Variablenname als Eingabe angenommen.

Jetzt mit Anführungszeichen.
01.
PS P:\> foreach($file in $files) {"$file.fullname"}
02.
P:\dateiname.pdf.fullname
03.
(...)
Wie Du siehst, gibt es so den Dateinamen und .fullname wird angehängt. Auch nicht das, was Du willst.

Jetzt ohne .fullname
01.
PS P:\> foreach($file in $files) {"$file"}
02.
P:\dateiname.pdf
03.

04.
oder
05.

06.
PS P:\test> $files = get-childitem *.csv
07.
PS P:\test> foreach($file in $files) {"$($file.fullname)"}
08.
P:\test\dateiname.csv
09.
(...)
10.

11.
oder
12.

13.
PS P:\test> foreach($file in $files) {"$file"}
14.
P:\test\dateiname.csv
15.
(...)
Das ist richtig.

hth

Erik
Bitte warten ..
Mitglied: 141320
LÖSUNG 09.10.2019, aktualisiert um 12:43 Uhr
Und mit single Quotes um die Pfade kann die CMD (in der msiexec ja ausgeführt wird) auch nicht gerade gut umgehen...

01.
Get-ChildItem *.msp -File | %{
02.
   start msiexec.exe -Wait -ArgumentList "/p `"$($_.FullName)`" REINSTALL=ALL REINSTALLMODE=omus /qn /l*v `"c:\OFU\log.txt`""
03.
}
Bitte warten ..
Mitglied: beidermachtvongreyscull
09.10.2019 um 13:30 Uhr
Hab vielen Dank für die Hilfe.

Ich habe das Script nun so umgebaut:

01.
$files = Get-ChildItem | Where {$_.Extension -eq ".msp"}
02.
foreach ($file in $files)
03.
{
04.
   
05.
    $datei = $file.FullName
06.
    $arglist = "/p  $($datei)  REINSTALL=ALL REINSTALLMODE=omus /qn"
07.
    Start-Process c:\windows\system32\msiexec.exe -Wait -ArgumentList $arglist
08.
}
Funktioniert jetzt wie gewünscht.
Bitte warten ..
Mitglied: beidermachtvongreyscull
09.10.2019 um 13:31 Uhr
Auch Dir vielen Dank für die Hilfe.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Powershell Bulk Import CSV DHCPReservation

gelöst Frage von banane31Batch & Shell4 Kommentare

Hallo zusammen, ich verzweifele gerade an meinem neuen Windows Server 2016 DHCP Server und den Reservierungen. Im Netz habe ...

Batch & Shell

AD Bulk Import von Benutzerdaten via Powershell

Frage von banane31Batch & Shell2 Kommentare

Guten Morgen zusammen, ich bin aktuell dabei unser AD zu bereinigen und einige Anpassen bei den Usern vorzunehmen. Es ...

Installation

MSIEXEC parameter

gelöst Frage von EverestInstallation7 Kommentare

Hallo zusammen, hat jemand schon mal so was gemacht, eine MSI-Datei direkt aus Internet installieren? Ich möchte diese MSI-Datei ...

Batch & Shell

Script in Powershell

gelöst Frage von EverestBatch & Shell27 Kommentare

Hallo PS-Scriptler, hat jemand von euch ein Script, der bestimmte User (z.B. administrator) in der Domain ausließt, welcher angibt ...

Neue Wissensbeiträge
Off Topic
Noch mehr was ich nicht brauche
Information von brammer vor 2 TagenOff Topic6 Kommentare

Hallo, WOFÜR? WARUM? brammer

Windows Server

Windows Server 2016 Suche nicht funktioniert ist ausgegraut Windows Server 2016 Search not work

Erfahrungsbericht von Wano347 vor 3 TagenWindows Server

Hallo Leute, wir haben vor kurzem ein Problem gehabt: Windows Server 2016 frisch installiert. Nach Checkliste konfiguriert (sieht vor ...

Microsoft Office

Microsoft geht nun rechtlich gegen Lizengo vor - Billig Software

Information von takvorian vor 3 TagenMicrosoft Office9 Kommentare

Hallo zusammen, eben auf CRN gefunden, weis nicht ob das schon wer gepostet hat Microsoft verklagt Lizengo Gruß Tak

Firewall
Übernahme von SOPHOS durch Thoma Bravo
Information von Dilbert-MD vor 4 TagenFirewall3 Kommentare

Kam die Tage per Newsletter: Zitat: " Das Sophos Board of Directors hat gestern bekanntgegeben, dass die Private-Equity-Investment-Firma Thoma ...

Heiß diskutierte Inhalte
Router & Routing
Macht es schon Sinn IPv6 Adressen einzusetzen ?
Frage von mario89Router & Routing11 Kommentare

Hallo Leute, bitte entschuldigt die vielleicht blöde frage, aber ich wollte gerne mal hören, ob im Professionellen Umfeld IPv6 ...

Batch & Shell
Batch - Datei über das Kontextmenü (Senden an) des Windows Explorer umbenennen
gelöst Frage von AlfornoBatch & Shell10 Kommentare

Hallo, ich möchte eine beliebige Word Datei mittels Batch umbenennen. Als Ergebnis soll der neue Dateiname das Änderungsdatum sowie ...

Switche und Hubs
Zwei VLANs über Trunks über zwei Layer3-Switche per Glasfaser verbinden
Frage von FreundlicherSwitche und Hubs9 Kommentare

Hi, leider habe ich weder in der Berufsschule aufgepasst, noch in der Ausbildung das Thema praktisch behandelt (kleiner Betrieb). ...

Batch & Shell
Batch variable in nächste batch mitnehmen
Frage von BytexxBatch & Shell8 Kommentare

Hallo ich möchte ein kleines .bat programm schreiben und habe eine frage. wie kann ich ein installations pfad herrausfinden ...