ralus67
Goto Top

MSI bzw. MSU Datei installieren über Powershell

Hallo Community

Ich hab mir für die Installation einer MSU Datei ein Powershell Skript ausgeführt, welcher in der letzten Zeile einen Fehler ausgibt. Diese Eigenschaft verstehe ich nicht, denn die echos im Skript zeigen mir eine Korrekte Ausgabe.

Hier der Auszug aus meinem Skript

$AppName = "Windows6.1-KB974405-x64.msu"
$DataStamp = get-date -Format yyyyMMddTHHmmss
$LogFile = '{0}-{1}.log' -f $AppName,$DataStamp
$MsuProc = "wusa.exe"
$MSIArguments = @(
"update"
"/quiet"
"/norestart"
"log"
"$LogFile"
)

echo $PSScriptRoot
echo $AppName
Start-Process $MsuProc $AppName -ArgumentList $MSIArguments

die zwei Echos sind nur zur Überprüfung ob die Variablen die richtige Ausgabe stellen.

Die Fehlermeldung lautet dann..

Start-Process : Es wurde kein Positionsparameter gerunden, der das Argument "System.Object" akzeptiert

back-to-topStart-Process $MsuProc $AppName -ArgumentList $MSIArguments

+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidAgrument: (face-smile [Start-Process], ParameterBindingException
+ FullyQualifiedErrorID : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand


Was mache ich beim Aufruf meines Befehls falsch?

Im Voraus vielen Dank für Eure Unterstützung.

Content-ID: 621876

Url: https://administrator.de/contentid/621876

Ausgedruckt am: 19.11.2024 um 06:11 Uhr

146189
Lösung 146189 13.11.2020 aktualisiert um 09:46:20 Uhr
Goto Top
$Appname also die Datei die du installieren willst kommt mit in das Argumentlist Array, nicht als weiterer Parameter in start-process deswegen auch die Fehlermeldung , falsche Parameter-Besetzung 😉
Kaffee rüber schieb ...
Ralus67
Ralus67 13.11.2020 um 10:12:23 Uhr
Goto Top
Danke, das war die Lösung...

Ich verstehe noch nicht, wann ich einen weiteren Parameter verwenden soll und wann es in die ArgumentListe reinkommt
146189
146189 13.11.2020 aktualisiert um 10:41:19 Uhr
Goto Top
Zitat von @Ralus67:
Ich verstehe noch nicht, wann ich einen weiteren Parameter verwenden soll und wann es in die ArgumentListe reinkommt

Die meisten CMDLets haben nur eine feste Anzahl an Parametern, und du übergibst eine Variable ohne irgendeinen Parameterbezeichner mit führendem Dash(-) also muss die PS anhand Ihrer CMDLet Definition bzw. Parameter-Position diesen ermitteln. Gibt es keinen mit seiner Typart oder steht der an der falschen Stelle oder ist zu viel gibts nen Fehler.

Ein
help start-process -full
oder das Lesen der Doku hilft dir es zu verstehen:
Cmdlet-Parameter
Start-Process