2016-07-20 2 views
1

J'essaie d'exécuter un script PowerShell pour installer une application en utilisant msiexec.exe.Faire msiexec attendre jusqu'à la fin de l'installation

msiexec.exe/a "C: \ Users \ tempuser \ Desktop \ AppInstall.msi"/passive attente

Je veux que l'installation soit terminée avant de passer le reste des commandes afin d'éviter de gâcher tout le processus d'automatisation. Une fois que j'ai exécuté mon script, il apparaît un menu d'installation de Windows qui montre toutes les options de msiexec. Je pense que j'ai utilisé le paramètre wait incorrectement à la fin de la ligne. Déjà dépensé tant de googling pour toutes les solutions ... J'apprécierais toute aide.

Répondre

1

Vous pouvez utiliser

$myJob = Start-Job {[your msiexec call]} 
Wait-Job $myJob 

Ou

$params = @{ 
     "FilePath" = "$Env:SystemRoot\system32\msiexec.exe" 
     "ArgumentList" = @(
     "/x" 
     "$($productCodeGUID)" 
     "/qn" 
     "REMOVE=ALL" 
     "/norestart" 
     ) 
     "Verb" = "runas" 
     "PassThru" = $true 
    } 

    $uninstaller = start-process @params 
    $uninstaller.WaitForExit() 

Tweak le params pour répondre à vos besoins. J'aime la deuxième approche car elle rend les arguments plus faciles à lire dans un code long. Exécuter en tant que processus ou travail peut ne faire aucune différence pour vous, mais si c'est le cas, choisissez celui qui convient le mieux à vos besoins.