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
+ CategoryInfo : InvalidAgrument: ( [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.
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
Start-Process $MsuProc $AppName -ArgumentList $MSIArguments
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo : InvalidAgrument: ( [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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 621876
Url: https://administrator.de/contentid/621876
Ausgedruckt am: 19.11.2024 um 06:11 Uhr
3 Kommentare
Neuester Kommentar
$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 ...
Kaffee rüber schieb ...
Zitat von @Ralus67:
Ich verstehe noch nicht, wann ich einen weiteren Parameter verwenden soll und wann es in die ArgumentListe reinkommt
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