Powershell Start-Processus msiexec sur un ordinateur distant ne fonctionne pas
Pour quelque raison Start-Processus msiexec ne fonctionne pas lorsqu'il est exécuté par invoquer une commande sur une machine distante. Je l'ai regardé et alors que certaines personnes vous recommandons d'utiliser psiexec j'ai vu beaucoup de gens à l'aide de la plaine de vieux invoke-command pour commencer msi d'installation sur des machines distantes.
C'est le code que j'utilise actuellement:
$session = New-PSSession -computername $computerName -ea stop
$command = {
Param(
[Parameter()]
[string]$computerName,
[Parameter()]
[string]$domain,
[Parameter()]
[string]$user,
[Parameter()]
[string]$password,
[Parameter()]
[string]$installDir
)
$msiArgumentList = "/i C:\Installer.msi /l c:\log.txt /quiet /qr /norestart IAGREE=Yes DOMAIN=$domain ACCOUNT=$user PASSWORD=$password PASSWORDCONFIRM=$password INSTALLDIR=$installDir"
Start-Process msiexec -ArgumentList $msiArgumentList -Wait
}
Invoke-Command -session $session -ScriptBlock $command -ArgumentList $computerName, $domain, $user, $password, $installDir
Remove-PSsession -session $session
J'ai utilisé la même méthode pour installer les services à distance à l'aide intallutil et cela a fonctionné. De script est activé sur l'ordinateur cible ainsi que l'accès distant par tous les comptes, il doit travailler. Les deux ordinateurs ont les mêmes informations d'identification, mais j'ai toujours essayé d'ajouter des informations d'identification à la fois invoke-command et de la possession. J'ai testé le code en local et de l'installation a fonctionné. À distance, il ne l'est pas et pas d'erreurs, afin que jamais. je peux voir sur la machine cible dans le gestionnaire de tâches que msiexec est commencé, mais rien ne se passe. J'ai même essayé de désactiver le pare-feu et toujours rien. j'ai essayé le & opérateur de démarrer msiexec et toujours rien.
Pas sûr de ce que j'ai pu essayer.
le fichier est vide malheureusement 😐
Pouvez-vous voir si les paramètres sont transmis correctement? Peut-être essayez de vous connecter à un fichier txt.
ouais. j'ai vérifié. et si je lance le démarrage du processus localement l'installation est faite correctement.
OriginalL'auteur user1752736 | 2013-09-10
Vous devez vous connecter pour publier un commentaire.
Peut-être que vous essayez une autre façon, si vous ne venez pas de l'avant?
Utiliser le planificateur de Tâches, pour démarrer la ligne de commande électronique.g par la création et l'exécution d'une tâche sur la machine distante:
C'est pour le démarrage d'une tâche (comme) sur l'ordinateur local.
Avec le paramètre /S, vous pouvez créer des tâches sur des ordinateurs distants:
Pour le détail des paramètres et pour la syntaxe de la .fichier xml de définition de la tâche, vous pouvez regarder dans l'aide.
OriginalL'auteur Philm
Vous pourriez essayer de l'exécution de Start-Processus avec Passthru pour voir si une erreur est retournée:
L'autre chose qui peut aider est l'augmentation de votre enregistrement à
/l*v
Mise à jour de 1
Vous pouvez essayer ce qui suit, juste pour vérifier des commandes à distance pour msi sont de travail, il devrait se traduire en 1619.
C'est très bizarre, j'ai installer à distance en utilisant un mécanisme similaire. J'aurais au moins attendu ExitCode d'avoir une valeur de 0 ou de l'habitude de 1619.
Je suppose que les paramètres sont incorrects, et une boîte de dialogue est affichée, si vous tuez msiexec faire un exitcode?
j'ai vérifié pendant plusieurs heures pour que tous les problèmes possibles et essayé de chaque solution de contournement que j'ai trouvé, mais rien n'a fonctionné.
La start-processus de revenir immédiatement?
OriginalL'auteur David Martin
Il semble que le problème était dû à une combinaison de la façon dont le programme d'installation msi a été construit et les restrictions de windows server vis-à-vis des processus interactifs. J'ai fini par utiliser psexec de contourner ce problème.
Je ne voulais pas de commentaire. Voir ma réponse.
OriginalL'auteur user1752736
La seule solution qui a fonctionné pour moi a été d'interroger l'état d'un processus. Cette commande peut être exécutée à l'intérieur d'un scriptblock dans une session powershell à distance.
OriginalL'auteur user663470
En utilisant les réponses ci-dessus j'ai fini avec
Le write-host est juste là pour vérifier l'augmente sont correctement échappé, mais s'est révélée inestimable dans le débogage.
OriginalL'auteur rob