{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2019/09/29/utilisation-de-powershell-pour-localiser-un-ordinateur-virtuel-hyper-v-serveur-dimpression/","llm_html_url":"https://tutos-gameserver.fr/2019/09/29/utilisation-de-powershell-pour-localiser-un-ordinateur-virtuel-hyper-v-serveur-dimpression/llm","llm_json_url":"https://tutos-gameserver.fr/2019/09/29/utilisation-de-powershell-pour-localiser-un-ordinateur-virtuel-hyper-v-serveur-dimpression/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Utilisation de PowerShell pour localiser un ordinateur virtuel Hyper-V\n\n &#8211; Serveur d&rsquo;impression","site":{"name":"Tutos GameServer","url":"https://tutos-gameserver.fr/"},"author":{"id":1,"name":"Titanfall","url":"https://tutos-gameserver.fr/author/titanfall/"},"published_at":"2019-09-29T12:59:32+00:00","modified_at":"2019-09-29T12:59:32+00:00","word_count":1247,"reading_time_seconds":375,"summary":"Hyper-V est un environnement dynamique et les ordinateurs virtuels peuvent facilement passer d’un hôte à l’autre. Cependant, vous devrez peut-être parfois savoir sur quel hôte Hyper-V une machine virtuelle particulière est en cours d&#39;exécution pour pouvoir exécuter une sorte de tâche de gestion sur la machine virtuelle. PowerShell facilite la localisation d&#39;une seule machine virtuelle [&hellip;]","summary_points":["Hyper-V est un environnement dynamique et les ordinateurs virtuels peuvent facilement passer d’un hôte à l’autre.","Cependant, vous devrez peut-être parfois savoir sur quel hôte Hyper-V une machine virtuelle particulière est en cours d&#39;exécution pour pouvoir exécuter une sorte de tâche de gestion sur la machine virtuelle.","PowerShell facilite la localisation d&#39;une seule machine virtuelle parmi un grand nombre d&#39;hôtes Hyper-V.","Recherche d&#39;un ordinateur virtuel Hyper-V: la méthode rapide et sale\nIl existe différentes manières d&#39;effectuer le travail."],"topics":["Serveur d'impression"],"entities":[],"entities_metadata":[{"id":10,"name":"Serveur d'impression","slug":"serveur-dimpression","taxonomy":"category","count":3907,"url":"https://tutos-gameserver.fr/category/serveur-dimpression/"}],"tags":["Serveur d'impression"],"content_hash":"93a0a2ffdb99e4a41d98731ad3096b3e","plain_text":"Hyper-V est un environnement dynamique et les ordinateurs virtuels peuvent facilement passer d’un hôte à l’autre. Cependant, vous devrez peut-être parfois savoir sur quel hôte Hyper-V une machine virtuelle particulière est en cours d&#39;exécution pour pouvoir exécuter une sorte de tâche de gestion sur la machine virtuelle. PowerShell facilite la localisation d&#39;une seule machine virtuelle parmi un grand nombre d&#39;hôtes Hyper-V.\nRecherche d&#39;un ordinateur virtuel Hyper-V: la méthode rapide et sale\nIl existe différentes manières d&#39;effectuer le travail. La méthode à utiliser varie en fonction du nombre d&#39;hôtes que vous avez et de la fréquence à laquelle vous devez localiser une machine virtuelle spécifique. Si vous cherchez simplement un moyen rapide et sale de trouver une machine virtuelle particulière, vous pouvez utiliser une commande comme celle-ci:\nGet-VM -ComputerName ,, -VMName -ErrorAction SilentlyContinue | Nom-objet-VMName, ComputerName\nSi vous deviez exécuter cette commande dans la vie réelle, vous remplaceriez , , et  avec les noms de vos hôtes Hyper-V (les adresses IP ne fonctionnent que dans des circonstances très spécifiques). Vous voudriez aussi remplacer  avec le nom de la machine virtuelle que vous recherchez.\nLorsque vous exécutez cette commande, chacun de vos hôtes Hyper-V vérifie si la machine virtuelle spécifiée existe. Si la machine virtuelle n&#39;existe pas sur un hôte particulier, PowerShell masque le message d&#39;erreur qui serait normalement affiché. Si la machine virtuelle existe, PowerShell affiche le nom de la machine virtuelle et le nom de l&#39;hôte sur lequel réside la machine virtuelle. Vous pouvez voir un exemple dans la figure ci-dessous.\nComme vous pouvez le voir sur la figure, cette technique fonctionne vraiment bien. Néanmoins, l’utilisation de cette méthode présente quelques inconvénients. Pour commencer, vous devez entrer le nom ou l&#39;adresse IP de vos hôtes Hyper-V. Ce n’est probablement pas un problème si vous n’avez que quelques hôtes, mais si vous avez plus de trois ou quatre hôtes, cela peut rapidement devenir une corvée fastidieuse.\nL’autre inconvénient de cette approche est que la commande nous donne les informations requises, mais qu’elle ne fait rien avec. Cette approche serait beaucoup plus utile si le nom de la machine virtuelle et le nom de l&#39;hôte étaient écrits dans des variables afin que nous puissions exécuter des commandes supplémentaires. Par exemple, nous souhaitons peut-être établir une session à distance avec l&#39;hôte ou initier une migration en direct ou quelque chose du genre. Le tout pourrait être automatisé si nous pouvions mettre le nom de la VM et le nom de son hôte dans des variables.\nUtiliser un fichier texte\nUne façon de vous épargner en tapant est de créer un fichier texte contenant les noms de vos hôtes Hyper-V. Vous pouvez ensuite demander à PowerShell de lire les noms de ce fichier afin de ne pas avoir à les saisir à chaque fois.\nPour les besoins de cet article, j&#39;ai créé un fichier nommé C:  Scripts  HostList.txt. Ce fichier répertorie le nom ou l&#39;adresse IP de chacun de mes hôtes Hyper-V. Chaque hôte apparaît sur une ligne distincte. J&#39;ai ensuite écrit un court script qui fait exactement la même chose que la commande que je vous ai montrée plus tôt, sauf qu&#39;il extrait les noms d&#39;hôtes de mon fichier texte. Voici à quoi ressemble le script:\n$ HyperVHosts = Get-Content &#39;c:  scripts  HostList.txt&#39;\nForEach ($ IndividualHost dans $ HyperVHosts)\n\nGet-VM -ComputerName $ IndividualHost -VMName  -ErrorAction SilentlyContinue \n\nLa première ligne de code indique à PowerShell de lire le contenu du fichier dans une variable appelée $ HyperVHosts. J&#39;ai ensuite créé une boucle qui examine chaque hôte répertorié dans le fichier texte. L&#39;hôte en cours de vérification est référencé par la variable $ IndividalHost. Vous pouvez voir mon code et la sortie du script dans la figure suivante.\nUtiliser des variables\nJusqu&#39;à présent, nous avons résolu le problème de devoir taper une longue liste d&#39;hôtes, mais nous devons néanmoins placer le nom de la machine virtuelle et le nom de son hôte actuel dans les variables que nous pouvons utiliser à d&#39;autres fins. Si vous regardez la capture d&#39;écran précédente, vous pouvez voir que j&#39;ai codé en dur le nom de la machine virtuelle que je cherche, mais il serait tout aussi facile d&#39;accepter le nom de la machine virtuelle en tant qu&#39;entrée.\nJ&#39;ai accompli cela en ajoutant une ligne de code au début du script:\n$ VM = Read-Host &quot;Veuillez saisir le nom de la machine virtuelle que vous recherchez.&quot;\n\nCette ligne invite l&#39;utilisateur à entrer un nom de machine virtuelle, puis écrit ce nom dans une variable appelée $ VM. J&#39;ai ensuite référencé cette variable dans la commande Get-VM. Vous pouvez voir le script et sa sortie dans la figure ci-dessous.\nNous avons donc maintenant une variable qui contient le nom de la machine virtuelle. La dernière chose à faire est d’écrire le nom de l’hôte de la machine virtuelle dans une variable. Voici comment cela se fait:\n$ VM = Read-Host &quot;Veuillez saisir le nom de la machine virtuelle que vous recherchez.&quot;\n$ HyperVHosts = Get-Content &#39;c:  scripts  HostList.txt&#39;\nForEach ($ IndividualHost dans $ HyperVHosts)\n\nGet-VM -ComputerName $ IndividualHost -VMName $ VM -ErrorAction SilentlyContinue \nWrite-Host &quot;La machine virtuelle&quot; $ VM &quot;est hébergée sur&quot; $ VMHost\n\nComme vous pouvez le constater, j&#39;ai considérablement modifié la commande Get-VM. Initialement, la commande Get-VM tente d&#39;extraire la machine virtuelle spécifiée du serveur hôte en cours de vérification. Les erreurs sont également supprimées, comme avant. Cependant, j&#39;utilise maintenant la commande Tee-Object pour écrire le résultat dans une variable. J&#39;ai ensuite ajouté la cmdlet Out-Null pour empêcher l&#39;affichage des résultats de la cmdlet Get-VM à l&#39;écran.\nLa cmdlet Tee-Object crée une variable appelée $ Temp, qui contient le contenu de la cmdlet Get-VM. Dans la même boucle, je crée également une variable appelée $ VMHost. Le contenu de $ Temp.NomOrdinateur est affecté à cette variable qui, à un moment donné, stockera le nom de l&#39;hôte qui exécute la machine virtuelle spécifiée. Vous pouvez voir le script et sa sortie dans la figure ci-dessous.\nVérification finale\nLe script que j&#39;ai créé est assez simple pour que vous ne rencontriez pas trop de problèmes. Si toutefois vous rencontrez des problèmes, vous devez vérifier trois points.\n1. Assurez-vous que le fichier texte de la liste d&#39;hôtes répertorie les hôtes par nom et non par adresse IP.2. Assurez-vous que l&#39;ordinateur sur lequel vous exécutez PowerShell peut résoudre les noms d&#39;hôte.3. Assurez-vous que tous les hôtes (et la machine sur laquelle le script est exécuté) exécutent des versions similaires de Windows. J&#39;ai rencontré des problèmes lorsque j&#39;ai exécuté le script sur un ordinateur Windows Server 2016, mais la machine virtuelle que j&#39;ai spécifiée était hébergée sur Windows Server 2012 R2 Hyper-V.\nL&#39;image sélectionnée: Pixabay\n\nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["Hyper-V est un environnement dynamique et les ordinateurs virtuels peuvent facilement passer d’un hôte à l’autre. Cependant, vous devrez peut-être parfois savoir sur quel hôte Hyper-V une machine virtuelle particulière est en cours d&#39;exécution pour pouvoir exécuter une sorte de tâche de gestion sur la machine virtuelle. PowerShell facilite la localisation d&#39;une seule machine virtuelle parmi un grand nombre d&#39;hôtes Hyper-V.\nRecherche d&#39;un ordinateur virtuel Hyper-V: la méthode rapide et sale\nIl existe différentes manières d&#39;effectuer le travail. La méthode à utiliser varie en fonction du nombre d&#39;hôtes que vous avez et de la fréquence à laquelle vous devez localiser une machine virtuelle spécifique. Si vous cherchez simplement un moyen rapide et sale de trouver une machine virtuelle particulière, vous pouvez utiliser une commande comme celle-ci:\nGet-VM -ComputerName ,, -VMName -ErrorAction SilentlyContinue | Nom-objet-VMName, ComputerName\nSi vous deviez exécuter cette commande dans la vie réelle, vous remplaceriez , , et  avec les noms de vos hôtes Hyper-V (les adresses IP ne fonctionnent que dans des circonstances très spécifiques). Vous voudriez aussi remplacer  avec le nom de la machine virtuelle que vous recherchez.\nLorsque vous exécutez cette commande, chacun de vos hôtes Hyper-V vérifie si la machine virtuelle spécifiée existe. Si la machine virtuelle n&#39;existe pas sur un hôte particulier, PowerShell masque le message d&#39;erreur qui serait normalement affiché. Si la machine virtuelle existe, PowerShell affiche le nom de la machine virtuelle et le nom de l&#39;hôte sur lequel réside la machine virtuelle. Vous pouvez voir un exemple dans la figure ci-dessous.\nComme vous pouvez le voir sur la figure, cette technique fonctionne vraiment bien. Néanmoins, l’utilisation de cette méthode présente quelques inconvénients. Pour commencer, vous devez entrer le nom ou l&#39;adresse IP de vos hôtes Hyper-V. Ce n’est probablement pas un problème si vous n’avez que quelques hôtes, mais si vous avez plus de trois ou quatre hôtes, cela peut rapidement devenir une corvée fastidieuse.\nL’autre inconvénient de cette approche est que la commande nous donne les informations requises, mais qu’elle ne fait rien avec. Cette approche serait beaucoup plus utile si le nom de la machine virtuelle et le nom de l&#39;hôte étaient écrits dans des variables afin que nous puissions exécuter des commandes supplémentaires. Par exemple, nous souhaitons peut-être établir une session à distance avec l&#39;hôte ou initier une migration en direct ou quelque chose du genre. Le tout pourrait être automatisé si nous pouvions mettre le nom de la VM et le nom de son hôte dans des variables.\nUtiliser un fichier texte\nUne façon de vous épargner en tapant est de créer un fichier texte contenant les noms de vos hôtes Hyper-V. Vous pouvez ensuite demander à PowerShell de lire les noms de ce fichier afin de ne pas avoir à les saisir à chaque fois.\nPour les besoins de cet article, j&#39;ai créé un fichier nommé C:  Scripts  HostList.txt. Ce fichier répertorie le nom ou l&#39;adresse IP de chacun de mes hôtes Hyper-V. Chaque hôte apparaît sur une ligne distincte. J&#39;ai ensuite écrit un court script qui fait exactement la même chose que la commande que je vous ai montrée plus tôt, sauf qu&#39;il extrait les noms d&#39;hôtes de mon fichier texte. Voici à quoi ressemble le script:\n$ HyperVHosts = Get-Content &#39;c:  scripts  HostList.txt&#39;\nForEach ($ IndividualHost dans $ HyperVHosts)","Get-VM -ComputerName $ IndividualHost -VMName  -ErrorAction SilentlyContinue","La première ligne de code indique à PowerShell de lire le contenu du fichier dans une variable appelée $ HyperVHosts. J&#39;ai ensuite créé une boucle qui examine chaque hôte répertorié dans le fichier texte. L&#39;hôte en cours de vérification est référencé par la variable $ IndividalHost. Vous pouvez voir mon code et la sortie du script dans la figure suivante.\nUtiliser des variables\nJusqu&#39;à présent, nous avons résolu le problème de devoir taper une longue liste d&#39;hôtes, mais nous devons néanmoins placer le nom de la machine virtuelle et le nom de son hôte actuel dans les variables que nous pouvons utiliser à d&#39;autres fins. Si vous regardez la capture d&#39;écran précédente, vous pouvez voir que j&#39;ai codé en dur le nom de la machine virtuelle que je cherche, mais il serait tout aussi facile d&#39;accepter le nom de la machine virtuelle en tant qu&#39;entrée.\nJ&#39;ai accompli cela en ajoutant une ligne de code au début du script:\n$ VM = Read-Host &quot;Veuillez saisir le nom de la machine virtuelle que vous recherchez.&quot;","Cette ligne invite l&#39;utilisateur à entrer un nom de machine virtuelle, puis écrit ce nom dans une variable appelée $ VM. J&#39;ai ensuite référencé cette variable dans la commande Get-VM. Vous pouvez voir le script et sa sortie dans la figure ci-dessous.\nNous avons donc maintenant une variable qui contient le nom de la machine virtuelle. La dernière chose à faire est d’écrire le nom de l’hôte de la machine virtuelle dans une variable. Voici comment cela se fait:\n$ VM = Read-Host &quot;Veuillez saisir le nom de la machine virtuelle que vous recherchez.&quot;\n$ HyperVHosts = Get-Content &#39;c:  scripts  HostList.txt&#39;\nForEach ($ IndividualHost dans $ HyperVHosts)","Get-VM -ComputerName $ IndividualHost -VMName $ VM -ErrorAction SilentlyContinue \nWrite-Host &quot;La machine virtuelle&quot; $ VM &quot;est hébergée sur&quot; $ VMHost","Comme vous pouvez le constater, j&#39;ai considérablement modifié la commande Get-VM. Initialement, la commande Get-VM tente d&#39;extraire la machine virtuelle spécifiée du serveur hôte en cours de vérification. Les erreurs sont également supprimées, comme avant. Cependant, j&#39;utilise maintenant la commande Tee-Object pour écrire le résultat dans une variable. J&#39;ai ensuite ajouté la cmdlet Out-Null pour empêcher l&#39;affichage des résultats de la cmdlet Get-VM à l&#39;écran.\nLa cmdlet Tee-Object crée une variable appelée $ Temp, qui contient le contenu de la cmdlet Get-VM. Dans la même boucle, je crée également une variable appelée $ VMHost. Le contenu de $ Temp.NomOrdinateur est affecté à cette variable qui, à un moment donné, stockera le nom de l&#39;hôte qui exécute la machine virtuelle spécifiée. Vous pouvez voir le script et sa sortie dans la figure ci-dessous.\nVérification finale\nLe script que j&#39;ai créé est assez simple pour que vous ne rencontriez pas trop de problèmes. Si toutefois vous rencontrez des problèmes, vous devez vérifier trois points.\n1. Assurez-vous que le fichier texte de la liste d&#39;hôtes répertorie les hôtes par nom et non par adresse IP.2. Assurez-vous que l&#39;ordinateur sur lequel vous exécutez PowerShell peut résoudre les noms d&#39;hôte.3. Assurez-vous que tous les hôtes (et la machine sur laquelle le script est exécuté) exécutent des versions similaires de Windows. J&#39;ai rencontré des problèmes lorsque j&#39;ai exécuté le script sur un ordinateur Windows Server 2016, mais la machine virtuelle que j&#39;ai spécifiée était hébergée sur Windows Server 2012 R2 Hyper-V.\nL&#39;image sélectionnée: Pixabay","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"Hyper-V est un environnement dynamique et les ordinateurs virtuels peuvent facilement passer d’un hôte à l’autre. Cependant, vous devrez peut-être parfois savoir sur quel hôte Hyper-V une machine virtuelle particulière est en cours d&#39;exécution pour pouvoir exécuter une sorte de tâche de gestion sur la machine virtuelle. PowerShell facilite la localisation d&#39;une seule machine virtuelle parmi un grand nombre d&#39;hôtes Hyper-V.\nRecherche d&#39;un ordinateur virtuel Hyper-V: la méthode rapide et sale\nIl existe différentes manières d&#39;effectuer le travail. La méthode à utiliser varie en fonction du nombre d&#39;hôtes que vous avez et de la fréquence à laquelle vous devez localiser une machine virtuelle spécifique. Si vous cherchez simplement un moyen rapide et sale de trouver une machine virtuelle particulière, vous pouvez utiliser une commande comme celle-ci:\nGet-VM -ComputerName ,, -VMName -ErrorAction SilentlyContinue | Nom-objet-VMName, ComputerName\nSi vous deviez exécuter cette commande dans la vie réelle, vous remplaceriez , , et  avec les noms de vos hôtes Hyper-V (les adresses IP ne fonctionnent que dans des circonstances très spécifiques). Vous voudriez aussi remplacer  avec le nom de la machine virtuelle que vous recherchez.\nLorsque vous exécutez cette commande, chacun de vos hôtes Hyper-V vérifie si la machine virtuelle spécifiée existe. Si la machine virtuelle n&#39;existe pas sur un hôte particulier, PowerShell masque le message d&#39;erreur qui serait normalement affiché. Si la machine virtuelle existe, PowerShell affiche le nom de la machine virtuelle et le nom de l&#39;hôte sur lequel réside la machine virtuelle. Vous pouvez voir un exemple dans la figure ci-dessous.\nComme vous pouvez le voir sur la figure, cette technique fonctionne vraiment bien. Néanmoins, l’utilisation de cette méthode présente quelques inconvénients. Pour commencer, vous devez entrer le nom ou l&#39;adresse IP de vos hôtes Hyper-V. Ce n’est probablement pas un problème si vous n’avez que quelques hôtes, mais si vous avez plus de trois ou quatre hôtes, cela peut rapidement devenir une corvée fastidieuse.\nL’autre inconvénient de cette approche est que la commande nous donne les informations requises, mais qu’elle ne fait rien avec. Cette approche serait beaucoup plus utile si le nom de la machine virtuelle et le nom de l&#39;hôte étaient écrits dans des variables afin que nous puissions exécuter des commandes supplémentaires. Par exemple, nous souhaitons peut-être établir une session à distance avec l&#39;hôte ou initier une migration en direct ou quelque chose du genre. Le tout pourrait être automatisé si nous pouvions mettre le nom de la VM et le nom de son hôte dans des variables.\nUtiliser un fichier texte\nUne façon de vous épargner en tapant est de créer un fichier texte contenant les noms de vos hôtes Hyper-V. Vous pouvez ensuite demander à PowerShell de lire les noms de ce fichier afin de ne pas avoir à les saisir à chaque fois.\nPour les besoins de cet article, j&#39;ai créé un fichier nommé C:  Scripts  HostList.txt. Ce fichier répertorie le nom ou l&#39;adresse IP de chacun de mes hôtes Hyper-V. Chaque hôte apparaît sur une ligne distincte. J&#39;ai ensuite écrit un court script qui fait exactement la même chose que la commande que je vous ai montrée plus tôt, sauf qu&#39;il extrait les noms d&#39;hôtes de mon fichier texte. Voici à quoi ressemble le script:\n$ HyperVHosts = Get-Content &#39;c:  scripts  HostList.txt&#39;\nForEach ($ IndividualHost dans $ HyperVHosts)","html":"<p>Hyper-V est un environnement dynamique et les ordinateurs virtuels peuvent facilement passer d’un hôte à l’autre. Cependant, vous devrez peut-être parfois savoir sur quel hôte Hyper-V une machine virtuelle particulière est en cours d&#039;exécution pour pouvoir exécuter une sorte de tâche de gestion sur la machine virtuelle. PowerShell facilite la localisation d&#039;une seule machine virtuelle parmi un grand nombre d&#039;hôtes Hyper-V.\nRecherche d&#039;un ordinateur virtuel Hyper-V: la méthode rapide et sale\nIl existe différentes manières d&#039;effectuer le travail. La méthode à utiliser varie en fonction du nombre d&#039;hôtes que vous avez et de la fréquence à laquelle vous devez localiser une machine virtuelle spécifique. Si vous cherchez simplement un moyen rapide et sale de trouver une machine virtuelle particulière, vous pouvez utiliser une commande comme celle-ci:\nGet-VM -ComputerName ,, -VMName -ErrorAction SilentlyContinue | Nom-objet-VMName, ComputerName\nSi vous deviez exécuter cette commande dans la vie réelle, vous remplaceriez , , et  avec les noms de vos hôtes Hyper-V (les adresses IP ne fonctionnent que dans des circonstances très spécifiques). Vous voudriez aussi remplacer  avec le nom de la machine virtuelle que vous recherchez.\nLorsque vous exécutez cette commande, chacun de vos hôtes Hyper-V vérifie si la machine virtuelle spécifiée existe. Si la machine virtuelle n&#039;existe pas sur un hôte particulier, PowerShell masque le message d&#039;erreur qui serait normalement affiché. Si la machine virtuelle existe, PowerShell affiche le nom de la machine virtuelle et le nom de l&#039;hôte sur lequel réside la machine virtuelle. Vous pouvez voir un exemple dans la figure ci-dessous.\nComme vous pouvez le voir sur la figure, cette technique fonctionne vraiment bien. Néanmoins, l’utilisation de cette méthode présente quelques inconvénients. Pour commencer, vous devez entrer le nom ou l&#039;adresse IP de vos hôtes Hyper-V. Ce n’est probablement pas un problème si vous n’avez que quelques hôtes, mais si vous avez plus de trois ou quatre hôtes, cela peut rapidement devenir une corvée fastidieuse.\nL’autre inconvénient de cette approche est que la commande nous donne les informations requises, mais qu’elle ne fait rien avec. Cette approche serait beaucoup plus utile si le nom de la machine virtuelle et le nom de l&#039;hôte étaient écrits dans des variables afin que nous puissions exécuter des commandes supplémentaires. Par exemple, nous souhaitons peut-être établir une session à distance avec l&#039;hôte ou initier une migration en direct ou quelque chose du genre. Le tout pourrait être automatisé si nous pouvions mettre le nom de la VM et le nom de son hôte dans des variables.\nUtiliser un fichier texte\nUne façon de vous épargner en tapant est de créer un fichier texte contenant les noms de vos hôtes Hyper-V. Vous pouvez ensuite demander à PowerShell de lire les noms de ce fichier afin de ne pas avoir à les saisir à chaque fois.\nPour les besoins de cet article, j&#039;ai créé un fichier nommé C:  Scripts  HostList.txt. Ce fichier répertorie le nom ou l&#039;adresse IP de chacun de mes hôtes Hyper-V. Chaque hôte apparaît sur une ligne distincte. J&#039;ai ensuite écrit un court script qui fait exactement la même chose que la commande que je vous ai montrée plus tôt, sauf qu&#039;il extrait les noms d&#039;hôtes de mon fichier texte. Voici à quoi ressemble le script:\n$ HyperVHosts = Get-Content &#039;c:  scripts  HostList.txt&#039;\nForEach ($ IndividualHost dans $ HyperVHosts)</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"Get-VM -ComputerName $ IndividualHost -VMName  -ErrorAction SilentlyContinue","html":"<p>Get-VM -ComputerName $ IndividualHost -VMName  -ErrorAction SilentlyContinue</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"La première ligne de code indique à PowerShell de lire le contenu du fichier dans une variable appelée $ HyperVHosts. J&#39;ai ensuite créé une boucle qui examine chaque hôte répertorié dans le fichier texte. L&#39;hôte en cours de vérification est référencé par la variable $ IndividalHost. Vous pouvez voir mon code et la sortie du script dans la figure suivante.\nUtiliser des variables\nJusqu&#39;à présent, nous avons résolu le problème de devoir taper une longue liste d&#39;hôtes, mais nous devons néanmoins placer le nom de la machine virtuelle et le nom de son hôte actuel dans les variables que nous pouvons utiliser à d&#39;autres fins. Si vous regardez la capture d&#39;écran précédente, vous pouvez voir que j&#39;ai codé en dur le nom de la machine virtuelle que je cherche, mais il serait tout aussi facile d&#39;accepter le nom de la machine virtuelle en tant qu&#39;entrée.\nJ&#39;ai accompli cela en ajoutant une ligne de code au début du script:\n$ VM = Read-Host &quot;Veuillez saisir le nom de la machine virtuelle que vous recherchez.&quot;","html":"<p>La première ligne de code indique à PowerShell de lire le contenu du fichier dans une variable appelée $ HyperVHosts. J&#039;ai ensuite créé une boucle qui examine chaque hôte répertorié dans le fichier texte. L&#039;hôte en cours de vérification est référencé par la variable $ IndividalHost. Vous pouvez voir mon code et la sortie du script dans la figure suivante.\nUtiliser des variables\nJusqu&#039;à présent, nous avons résolu le problème de devoir taper une longue liste d&#039;hôtes, mais nous devons néanmoins placer le nom de la machine virtuelle et le nom de son hôte actuel dans les variables que nous pouvons utiliser à d&#039;autres fins. Si vous regardez la capture d&#039;écran précédente, vous pouvez voir que j&#039;ai codé en dur le nom de la machine virtuelle que je cherche, mais il serait tout aussi facile d&#039;accepter le nom de la machine virtuelle en tant qu&#039;entrée.\nJ&#039;ai accompli cela en ajoutant une ligne de code au début du script:\n$ VM = Read-Host &quot;Veuillez saisir le nom de la machine virtuelle que vous recherchez.&quot;</p>"},{"id":"text-4","type":"text","heading":"","plain_text":"Cette ligne invite l&#39;utilisateur à entrer un nom de machine virtuelle, puis écrit ce nom dans une variable appelée $ VM. J&#39;ai ensuite référencé cette variable dans la commande Get-VM. Vous pouvez voir le script et sa sortie dans la figure ci-dessous.\nNous avons donc maintenant une variable qui contient le nom de la machine virtuelle. La dernière chose à faire est d’écrire le nom de l’hôte de la machine virtuelle dans une variable. Voici comment cela se fait:\n$ VM = Read-Host &quot;Veuillez saisir le nom de la machine virtuelle que vous recherchez.&quot;\n$ HyperVHosts = Get-Content &#39;c:  scripts  HostList.txt&#39;\nForEach ($ IndividualHost dans $ HyperVHosts)","html":"<p>Cette ligne invite l&#039;utilisateur à entrer un nom de machine virtuelle, puis écrit ce nom dans une variable appelée $ VM. J&#039;ai ensuite référencé cette variable dans la commande Get-VM. Vous pouvez voir le script et sa sortie dans la figure ci-dessous.\nNous avons donc maintenant une variable qui contient le nom de la machine virtuelle. La dernière chose à faire est d’écrire le nom de l’hôte de la machine virtuelle dans une variable. Voici comment cela se fait:\n$ VM = Read-Host &quot;Veuillez saisir le nom de la machine virtuelle que vous recherchez.&quot;\n$ HyperVHosts = Get-Content &#039;c:  scripts  HostList.txt&#039;\nForEach ($ IndividualHost dans $ HyperVHosts)</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"Get-VM -ComputerName $ IndividualHost -VMName $ VM -ErrorAction SilentlyContinue \nWrite-Host &quot;La machine virtuelle&quot; $ VM &quot;est hébergée sur&quot; $ VMHost","html":"<p>Get-VM -ComputerName $ IndividualHost -VMName $ VM -ErrorAction SilentlyContinue \nWrite-Host &quot;La machine virtuelle&quot; $ VM &quot;est hébergée sur&quot; $ VMHost</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"Comme vous pouvez le constater, j&#39;ai considérablement modifié la commande Get-VM. Initialement, la commande Get-VM tente d&#39;extraire la machine virtuelle spécifiée du serveur hôte en cours de vérification. Les erreurs sont également supprimées, comme avant. Cependant, j&#39;utilise maintenant la commande Tee-Object pour écrire le résultat dans une variable. J&#39;ai ensuite ajouté la cmdlet Out-Null pour empêcher l&#39;affichage des résultats de la cmdlet Get-VM à l&#39;écran.\nLa cmdlet Tee-Object crée une variable appelée $ Temp, qui contient le contenu de la cmdlet Get-VM. Dans la même boucle, je crée également une variable appelée $ VMHost. Le contenu de $ Temp.NomOrdinateur est affecté à cette variable qui, à un moment donné, stockera le nom de l&#39;hôte qui exécute la machine virtuelle spécifiée. Vous pouvez voir le script et sa sortie dans la figure ci-dessous.\nVérification finale\nLe script que j&#39;ai créé est assez simple pour que vous ne rencontriez pas trop de problèmes. Si toutefois vous rencontrez des problèmes, vous devez vérifier trois points.\n1. Assurez-vous que le fichier texte de la liste d&#39;hôtes répertorie les hôtes par nom et non par adresse IP.2. Assurez-vous que l&#39;ordinateur sur lequel vous exécutez PowerShell peut résoudre les noms d&#39;hôte.3. Assurez-vous que tous les hôtes (et la machine sur laquelle le script est exécuté) exécutent des versions similaires de Windows. J&#39;ai rencontré des problèmes lorsque j&#39;ai exécuté le script sur un ordinateur Windows Server 2016, mais la machine virtuelle que j&#39;ai spécifiée était hébergée sur Windows Server 2012 R2 Hyper-V.\nL&#39;image sélectionnée: Pixabay","html":"<p>Comme vous pouvez le constater, j&#039;ai considérablement modifié la commande Get-VM. Initialement, la commande Get-VM tente d&#039;extraire la machine virtuelle spécifiée du serveur hôte en cours de vérification. Les erreurs sont également supprimées, comme avant. Cependant, j&#039;utilise maintenant la commande Tee-Object pour écrire le résultat dans une variable. J&#039;ai ensuite ajouté la cmdlet Out-Null pour empêcher l&#039;affichage des résultats de la cmdlet Get-VM à l&#039;écran.\nLa cmdlet Tee-Object crée une variable appelée $ Temp, qui contient le contenu de la cmdlet Get-VM. Dans la même boucle, je crée également une variable appelée $ VMHost. Le contenu de $ Temp.NomOrdinateur est affecté à cette variable qui, à un moment donné, stockera le nom de l&#039;hôte qui exécute la machine virtuelle spécifiée. Vous pouvez voir le script et sa sortie dans la figure ci-dessous.\nVérification finale\nLe script que j&#039;ai créé est assez simple pour que vous ne rencontriez pas trop de problèmes. Si toutefois vous rencontrez des problèmes, vous devez vérifier trois points.\n1. Assurez-vous que le fichier texte de la liste d&#039;hôtes répertorie les hôtes par nom et non par adresse IP.2. Assurez-vous que l&#039;ordinateur sur lequel vous exécutez PowerShell peut résoudre les noms d&#039;hôte.3. Assurez-vous que tous les hôtes (et la machine sur laquelle le script est exécuté) exécutent des versions similaires de Windows. J&#039;ai rencontré des problèmes lorsque j&#039;ai exécuté le script sur un ordinateur Windows Server 2016, mais la machine virtuelle que j&#039;ai spécifiée était hébergée sur Windows Server 2012 R2 Hyper-V.\nL&#039;image sélectionnée: Pixabay</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]","html":"<p>Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"Hyper-V est un environnement dynamique et les ordinateurs virtuels peuvent facilement passer d’un hôte à l’autre. Cependant, vous devrez peut-être parfois savoir sur quel hôte Hyper-V une machine virtuelle particulière est en cours d&#39;exécution pour pouvoir exécuter une sorte de tâche de gestion sur la machine virtuelle. PowerShell facilite la localisation d&#39;une seule machine virtuelle parmi un grand nombre d&#39;hôtes Hyper-V.\nRecherche d&#39;un ordinateur virtuel Hyper-V: la méthode rapide et sale\nIl existe différentes manières d&#39;effectuer le travail. La méthode à utiliser varie en fonction du nombre d&#39;hôtes que vous avez et de la fréquence à laquelle vous devez localiser une machine virtuelle spécifique. Si vous cherchez simplement un moyen rapide et sale de trouver une machine virtuelle particulière, vous pouvez utiliser une commande comme celle-ci:\nGet-VM -ComputerName ,, -VMName -ErrorAction SilentlyContinue | Nom-objet-VMName, ComputerName\nSi vous deviez exécuter cette commande dans la vie réelle, vous remplaceriez , , et  avec les noms de vos hôtes Hyper-V (les adresses IP ne fonctionnent que dans des circonstances très spécifiques). Vous voudriez aussi remplacer  avec le nom de la machine virtuelle que vous recherchez.\nLorsque vous exécutez cette commande, chacun de vos hôtes Hyper-V vérifie si la machine virtuelle spécifiée existe. Si la machine virtuelle n&#39;existe pas sur un hôte particulier, PowerShell masque le message d&#39;erreur qui serait normalement affiché. Si la machine virtuelle existe, PowerShell affiche le nom de la machine virtuelle et le nom de l&#39;hôte sur lequel réside la machine virtuelle. Vous pouvez voir un exemple dans la figure ci-dessous.\nComme vous pouvez le voir sur la figure, cette technique fonctionne vraiment bien. Néanmoins, l’utilisation de cette méthode présente quelques inconvénients. Pour commencer, vous devez entrer le nom ou l&#39;adresse IP de vos hôtes Hyper-V. Ce n’est probablement pas un problème si vous n’avez que quelques hôtes, mais si vous avez plus de trois ou quatre hôtes, cela peut rapidement devenir une corvée fastidieuse.\nL’autre inconvénient de cette approche est que la commande nous donne les informations requises, mais qu’elle ne fait rien avec. Cette approche serait beaucoup plus utile si le nom de la machine virtuelle et le nom de l&#39;hôte étaient écrits dans des variables afin que nous puissions exécuter des commandes supplémentaires. Par exemple, nous souhaitons peut-être établir une session à distance avec l&#39;hôte ou initier une migration en direct ou quelque chose du genre. Le tout pourrait être automatisé si nous pouvions mettre le nom de la VM et le nom de son hôte dans des variables.\nUtiliser un fichier texte\nUne façon de vous épargner en tapant est de créer un fichier texte contenant les noms de vos hôtes Hyper-V. Vous pouvez ensuite demander à PowerShell de lire les noms de ce fichier afin de ne pas avoir à les saisir à chaque fois.\nPour les besoins de cet article, j&#39;ai créé un fichier nommé C:  Scripts  HostList.txt. Ce fichier répertorie le nom ou l&#39;adresse IP de chacun de mes hôtes Hyper-V. Chaque hôte apparaît sur une ligne distincte. J&#39;ai ensuite écrit un court script qui fait exactement la même chose que la commande que je vous ai montrée plus tôt, sauf qu&#39;il extrait les noms d&#39;hôtes de mon fichier texte. Voici à quoi ressemble le script:\n$ HyperVHosts = Get-Content &#39;c:  scripts  HostList.txt&#39;\nForEach ($ IndividualHost dans $ HyperVHosts)"},{"id":"text-2","heading":"Text","content":"Get-VM -ComputerName $ IndividualHost -VMName  -ErrorAction SilentlyContinue"},{"id":"text-3","heading":"Text","content":"La première ligne de code indique à PowerShell de lire le contenu du fichier dans une variable appelée $ HyperVHosts. J&#39;ai ensuite créé une boucle qui examine chaque hôte répertorié dans le fichier texte. L&#39;hôte en cours de vérification est référencé par la variable $ IndividalHost. Vous pouvez voir mon code et la sortie du script dans la figure suivante.\nUtiliser des variables\nJusqu&#39;à présent, nous avons résolu le problème de devoir taper une longue liste d&#39;hôtes, mais nous devons néanmoins placer le nom de la machine virtuelle et le nom de son hôte actuel dans les variables que nous pouvons utiliser à d&#39;autres fins. Si vous regardez la capture d&#39;écran précédente, vous pouvez voir que j&#39;ai codé en dur le nom de la machine virtuelle que je cherche, mais il serait tout aussi facile d&#39;accepter le nom de la machine virtuelle en tant qu&#39;entrée.\nJ&#39;ai accompli cela en ajoutant une ligne de code au début du script:\n$ VM = Read-Host &quot;Veuillez saisir le nom de la machine virtuelle que vous recherchez.&quot;"},{"id":"text-4","heading":"Text","content":"Cette ligne invite l&#39;utilisateur à entrer un nom de machine virtuelle, puis écrit ce nom dans une variable appelée $ VM. J&#39;ai ensuite référencé cette variable dans la commande Get-VM. Vous pouvez voir le script et sa sortie dans la figure ci-dessous.\nNous avons donc maintenant une variable qui contient le nom de la machine virtuelle. La dernière chose à faire est d’écrire le nom de l’hôte de la machine virtuelle dans une variable. Voici comment cela se fait:\n$ VM = Read-Host &quot;Veuillez saisir le nom de la machine virtuelle que vous recherchez.&quot;\n$ HyperVHosts = Get-Content &#39;c:  scripts  HostList.txt&#39;\nForEach ($ IndividualHost dans $ HyperVHosts)"},{"id":"text-5","heading":"Text","content":"Get-VM -ComputerName $ IndividualHost -VMName $ VM -ErrorAction SilentlyContinue \nWrite-Host &quot;La machine virtuelle&quot; $ VM &quot;est hébergée sur&quot; $ VMHost"},{"id":"text-6","heading":"Text","content":"Comme vous pouvez le constater, j&#39;ai considérablement modifié la commande Get-VM. Initialement, la commande Get-VM tente d&#39;extraire la machine virtuelle spécifiée du serveur hôte en cours de vérification. Les erreurs sont également supprimées, comme avant. Cependant, j&#39;utilise maintenant la commande Tee-Object pour écrire le résultat dans une variable. J&#39;ai ensuite ajouté la cmdlet Out-Null pour empêcher l&#39;affichage des résultats de la cmdlet Get-VM à l&#39;écran.\nLa cmdlet Tee-Object crée une variable appelée $ Temp, qui contient le contenu de la cmdlet Get-VM. Dans la même boucle, je crée également une variable appelée $ VMHost. Le contenu de $ Temp.NomOrdinateur est affecté à cette variable qui, à un moment donné, stockera le nom de l&#39;hôte qui exécute la machine virtuelle spécifiée. Vous pouvez voir le script et sa sortie dans la figure ci-dessous.\nVérification finale\nLe script que j&#39;ai créé est assez simple pour que vous ne rencontriez pas trop de problèmes. Si toutefois vous rencontrez des problèmes, vous devez vérifier trois points.\n1. Assurez-vous que le fichier texte de la liste d&#39;hôtes répertorie les hôtes par nom et non par adresse IP.2. Assurez-vous que l&#39;ordinateur sur lequel vous exécutez PowerShell peut résoudre les noms d&#39;hôte.3. Assurez-vous que tous les hôtes (et la machine sur laquelle le script est exécuté) exécutent des versions similaires de Windows. J&#39;ai rencontré des problèmes lorsque j&#39;ai exécuté le script sur un ordinateur Windows Server 2016, mais la machine virtuelle que j&#39;ai spécifiée était hébergée sur Windows Server 2012 R2 Hyper-V.\nL&#39;image sélectionnée: Pixabay"},{"id":"text-7","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":"https://tutos-gameserver.fr/wp-content/uploads/2019/09/hyper-v-1024x257.jpg"},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2019/09/29/utilisation-de-powershell-pour-localiser-un-ordinateur-virtuel-hyper-v-serveur-dimpression/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/09/29/utilisation-de-powershell-pour-localiser-un-ordinateur-virtuel-hyper-v-serveur-dimpression/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/09/29/utilisation-de-powershell-pour-localiser-un-ordinateur-virtuel-hyper-v-serveur-dimpression/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}