2017-10-12 20 views
0

Comment puis-je vérifier si le processus d'installation de Windows est complet à partir d'un script? J'ai un script Powershell qui s'exécute sur de nouvelles constructions qui sont parfois éjectées avant que l'installation de Windows ne soit terminée, mais qui doit attendre que l'installation soit terminée pour s'exécuter.Comment déterminer si le programme d'installation de Windows est terminé par programmation

+1

Comment le script est-il lancé? –

+0

Dans notre cas, il est lancé à partir d'un workflow vRO. Le problème est que la configuration du système d'exploitation n'est pas complètement terminée lorsque la personnalisation de la machine virtuelle est enregistrée comme terminée. –

+0

Si vRO ne fournit pas de solution intégrée, l'approche la plus sûre consisterait probablement à le scinder en deux scripts, le premier pouvant configurer une tâche de démarrage qui exécute le second ou des variantes le long de cette ligne. L'installation de Windows n'est pas vraiment terminée tant que le système n'a pas redémarré. (Eh bien, c'est vrai dans une installation ordinaire sans surveillance, en tout cas.) –

Répondre

0

Répertoriez tous les processus et assurez-vous que WinDeploy.exe n'en fait pas partie. Si WinDeploy.exe est en cours d'exécution, puis la configuration de Windows n'est pas encore terminée:

Get-Process -Name windeploy 

Notez que lors de l'arrêt WinDeploy.exe d'exécution, vous devrez vous assurer que le système ne redémarre pas avant de continuer, et attendre jusqu'à ce qu'il revient avant de continuer l'exécution. Pour notre environnement, il était plus facile d'utiliser l'API VMWare de notre système de déploiement pour attendre que WinDeploy.exe ait fini de s'exécuter et aussi vérifier que l'invité était dans l'état running avant de tenter d'exécuter le script de provisioning. Si c'est quelque chose que vous avez pour exécuter dans un script local pour une raison quelconque, pensez à utiliser les flux de travail Powershell qui peuvent être utilisés lors des redémarrages.

+1

Vous pouvez aussi simplement dire 'Get-Process -Name 'windeploy''. Peut fonctionner un peu plus vite pour ne pas énumérer tous les processus dans le pipeline. –

+0

Bonne suggestion. Je l'ai mis à jour, merci pour le conseil. –