Auteur de questions
Modifier nom du PC dans la phase de sysprep via powershell

Question
-
Bonjour,
Je suis en train de construire un master sous W10 LTSB 2016.
J'ai créé un fichier de réponse unattend.xml où j'insère un certain nombre de tâches qui fonctionnent toutes sauf celle où je souhaite renommer le PC.
Pour renommer le PC j'utilise le script PowerShell suivant :
$computerName = Get-WmiObject Win32_ComputerSystem [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null $name = [Microsoft.VisualBasic.Interaction]::InputBox("Enter Desired Computer Name ") $computername.rename("$name")
Le script est appelé depuis le script batch suivant :
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -noprofile -command "Set-ExecutionPolicy bypass LocalMachine" C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe powershell -file C:\Agents\RenommerPC.ps1
J'insère le script batch dans la phase 4 Specialize de unattend.xml :
Le script fonctionne très bien lorsque je l’exécute manuellement depuis une session Windows.
Quand je l’exécute lors de la phase de sysprep j'ai le message d'erreur suivant :
J'insère le nom du PC voulu, puis :
J'ai ensuite testé avec le code vbs suivant :
' *************************************************************************************************************** ' Changer le nom de l'ordinateur ' *************************************************************************************************************** strComputer = "." ' Paramètres à saisir au clavier ************************ strNouveauNom = Inputbox ("Entrer le nouveau nom du PC : ") Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colComputers = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem") For Each objComputer in colComputers err = objComputer.Rename(strNouveauNom) Next ' ***************************************************************************************************************
Cela me demande bien le nom du PC lors du sysprep mais ne l'applique pas.
Savez-vous comment je pourrais m'en sortir pour pouvoir spécifier un nom de PC lors du sysprep ?
Merci beaucoup.
- Déplacé Nedeltcho PopovMicrosoft contingent staff lundi 11 février 2019 13:44
Toutes les réponses
-
Pour le moment la seule solution de contournement que j'ai trouvé c'est de faire une tâche planifiée à l'ouverture de la session.
C'est pas top, mais bon ...
J'aimerais tout de même pouvoir exécuter ce script avant l'ouverture de session, dans la phase de sysprep. Si quelqu'un a une idée, je suis preneur ;)
Merci
-
Bonjour Momominta,
J'avais pu lire ce sujet lors de mes recherches. Mais cela ne me convenait pas car je souhaitais pouvoir renommer le PC lors de la phase de sysprep en configurant les exécutions de scripts proposés dans la partie specialize par exemple.
Les scripts s’exécutent bien mais ne modifie pas le nom du PC. J'ai essayé avec des scripts en vbs et ps1. En vbs je n'ai pas de message d'erreur, en PS1 j'obtiens les erreurs indiqués dans mon premier message de ce thread.
Je me suis donc résout à exécuter ces scripts après l'ouverture de session. Je suis pas fan, mais c'est le seul moyen que j'ai pu trouver.
-
non je n'utilise pas ce code car j'ai besoin d'une msg box pour pouvoir inscrire le nom.
J'utilise le code suivant
$computerName = Get-WmiObject Win32_ComputerSystem [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null $name = [Microsoft.VisualBasic.Interaction]::InputBox("Enter Desired Computer Name ") $computername.rename("$name")
-
Bonjour Momominta,
Effectivement j'en ai fait cette conclusion également.
Ce que je trouve dommage avec ce mode de fonctionnement c'est qu'on ne peut plus personnaliser soit même le nom du PC pendant OOBE. Avec un outils tiers ça fonctionne mais lorsqu'on doit s'affranchir de cet outils c'est foutu.
J'ai également remarqué un problème avec computername (qui n'a cependant rien avoir avec le problème d'origine) : si je ne met pas <ComputerName>*</ComputerName> ça bug pour la mise dans le domaine. Il faut absolument spécifier computername dans le fichier unattend.xml
-
Bonjour Fabien
>Avec un outils tiers ça fonctionne mais lorsqu'on doit s'affranchir de cet outils c'est foutu.
Donc vous avez votre solution.
Momominta
Je ne dirais pas que la solution se trouve dans l'outils tiers puisque mon besoin doit s'affranchir de cet outils.
Bref je me suis débrouillé. Merci
-
Pour le moment la seule solution de contournement que j'ai trouvé c'est de faire une tâche planifiée à l'ouverture de la session.
Je me suis donc résout à exécuter ces scripts après l'ouverture de session. Je suis pas fan, mais c'est le seul moyen que j'ai pu trouver.
-
Bonjour,
Une solution qui peut être simple : Supprimer la ligne <ComputerName> ... </ComputerName> dans ton unattend
cela aura pour effet de demander le nom du PC lors de l'installation.
Autre solution qui peut allez encore plus vite si on connait c'est MDT, qui sait gérer ce genre de personnalisation et bien plus
-
Bonjour,
Une solution qui peut être simple : Supprimer la ligne <ComputerName> ... </ComputerName> dans ton unattend
cela aura pour effet de demander le nom du PC lors de l'installation.
Autre solution qui peut allez encore plus vite si on connait c'est MDT, qui sait gérer ce genre de personnalisation et bien plus
Bonjour dwuibaille.
Merci pour votre message. J'ai déjà essayé de ne pas mettre cette ligne. D'une part, cela génére un nom aléatoire et ne demande pas la saisie du nom du PC, d'autre part ça bug au niveau de l'ajout du Pc dans le domaine. A l'ouverture de session, le message lié à un problème de relation d'approbation, probablement du à un nom de PC trop long. En mettant une étoile <COMPUTERNAME>*</COMPUTERNAME> je n'ai plus de problème pour la mise dans le domaine
si je ne met pas <ComputerName>*</ComputerName> ça bug pour la mise dans le domaine. Il faut absolument spécifier computername dans le fichier unattend.xml
- Modifié Fabien-VIRT mercredi 2 janvier 2019 07:59