IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Nom DNS pour OSDComputer (MDT)


Sujet :

VBScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 45
    Par défaut Nom DNS pour OSDComputer (MDT)
    Bonjour @ tous,

    Je suis passé sur un WinPE x64. Auparavant j'étais sur un WinPE x86, et je pouvais utiliser nslookup pour faire un reverse DNS et ainsi avoir le nom de la machine suivant son IP.
    En passant en x64, nslookup n'est plus compatible 64 bit... J'ai donc du trouver une alternative. En cherchant un peu, j'ai réussi à construire un petit script qui permet à travers PowerShell d'obtenir le nom DNS de la machine.

    Voici le code en question (nom du fichier PowerShell : GetPCName.ps1) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $IPV4 = Test-Connection -ComputerName (hostname) -Count 1  | Select-Object -ExpandProperty IPV4Address
    $IP = $IPV4.IPAddressToString
    $DNSSERVER = 'ns1.xxx.fr'
    $DNS = Resolve-DnsName -Name $IP -Server $DNSSERVER
    $FQDN = $DNS.NameHost
    $NAME = $FQDN.Substring(0, $FQDN.IndexOf('.'))
    echo $NAME
    Je souhaiterais maintenant intégrer ce code à un fichier VBS pour que MDT prenne le résultat du code PowerShell, et que ce dernier devienne la variable pour OSDComputerName. J'ai donc créé un fichier VBS qui est déclaré sur le customsettings.ini.

    Or, mon fichier VBS, ne fonctionne pas. Je n'ai qu'un champ vide

    Voici le code de mon VBS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function UserExit(sType, sWhen, sDetail, bSkip)
      UserExit = Success
    End Function
     
    Function SetHostName()
      pscommand = ".\GetPCName.ps1"
      runpscommand = "powershell.exe -NoProfile -ExecutionPolicy Bypass -File" & pscommand
      Set Shell = CreateObject("WScript.Shell")
      Set Executor = shell.Exec(runpscommand)
      Executor.StdIn.Close
      SetHostName = Executor.StdOut.ReadAll
    End Function
    Pourriez-vous m'aider s'il vous plait, a récupérer le résultat du PowerShell et de l'intégrer dans mon fichier VBS pour que OSDComputerName sorte le nom DNS ?

    Merci !

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Comme ceci

    Code vbs : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function SetHostName()
      pscommand = ".\GetPCName.ps1"
      runpscommand = "powershell.exe -NoProfile -ExecutionPolicy Bypass -File" & pscommand
      Set Shell = CreateObject("WScript.Shell")
      Set Executor = shell.Exec(runpscommand)
     
      Do While Executor.Status = 0
           WScript.Sleep 100
      Loop
     
      SetHostName = Executor.StdOut.ReadAll()
    End Function

    J'utiliserai Write-Output (plus explicite) au lieu de echo dans le powershell.

  3. #3
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    L'erreur est là, la ligne #7. (Je mets l'espace explicitement pour voir plus clair.)
    Code vbs Loweack : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      'runpscommand = "powershell.exe -NoProfile -ExecutionPolicy Bypass -File" & pscommand
      runpscommand = "powershell.exe -NoProfile -ExecutionPolicy Bypass -File" & " " & pscommand

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 45
    Par défaut
    Et bien je n'arrive toujours pas a faire fonctionner mon script PowerShell.
    J'ai ajouté une ligne pour ajouter une entrée dans le registre afin de voir si au moins mon script PowerShell fait quelque chose... Il semblerait qu'il ne fasse rien (pourtant j'ai bien une fenêtre bleue PowerShell qui apparait lors de initialisation du WinPE).

    Voici la ligne que j'ai ajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-Item -Path "HKLM:" | New-ItemProperty -Name "PCNAME" -Value TEST -PropertyType String
    Une idée ?

  5. #5
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Oui, mais...
    Voici le code en question (nom du fichier PowerShell : GetPCName.ps1) :
    Est-ce qu'il marche d'abord en tant que powershell script ? (winPE n'est pas pleinement console comme on entend normalement.)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 45
    Par défaut
    Oui mon script PS fonctionne parfaitement quand je le lance à la main.

    Mon script fonctionne maintenant. Voici les modifications que je viens d'effectuer (j'ai supprimé une variable) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function SetHostName()
    	Dim runpscommand
    	runpscommand = "powershell.exe -ExecutionPolicy Bypass -NoProfile -File %systemroot%\system32\GetPCName.ps1"
    	Set Shell = CreateObject("WScript.Shell")
    	Set Executor = shell.Exec(runpscommand)
    	Executor.StdIn.Close
    	SetHostName = Executor.StdOut.ReadAll
    End Function
    Merci à vous deux pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. nom Dns pour mail
    Par mariachi dans le forum Autres systèmes
    Réponses: 1
    Dernier message: 19/08/2012, 20h27
  2. nom serveur pour les mails
    Par Homer dans le forum ASP
    Réponses: 3
    Dernier message: 24/10/2005, 13h37
  3. Réponses: 8
    Dernier message: 19/04/2005, 12h04
  4. Pas de DNS pour les clients
    Par M.Dlb dans le forum Réseau
    Réponses: 2
    Dernier message: 05/07/2004, 23h06
  5. Conf DNS pour serveur mail avec IP dynamique ?
    Par ovh dans le forum Réseau
    Réponses: 9
    Dernier message: 14/06/2004, 22h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo