Question obtenir des détails vm sur un certain nombre d'hôtes sur le réseau

Plus d'informations
il y a 3 mois 2 jours - il y a 3 mois 2 jours #32578 par boulbul
Je voudrais utiliser la commande invoke pour obtenir les détails de tous les vms installés sur chaque hôte de serveur sur le réseau dans un format de liste.

J'ai cherché sur internet mais je n'ai rien trouvé qui corresponde à mes besoins.

Le meilleur que j'ai eu jusqu'à présent est le suivant:


#Type Hyper-V host server names in $hosts variable
$hosts = "SRV1", "SRV2, SRV3"
Get-VM -ComputerName $hosts   | select-object -ExpandProperty NetworkAdapters

Cela fonctionne un peu , mais nulle part où je voudrais qu'il soit.

J'ai besoin que la sortie ressemble à ceci:

Server Name/host, Host IP, Host MAC, VM Name/Guest, Guest OS Name, VM IPv4, VM IPv6, VM MAC, VM  Note


Merci pour ton aide.

Salutations,

Boulbul
Dernière édition: il y a 3 mois 2 jours par boulbul.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 mois 2 jours #32579 par Laurent Dardenne
Salut,
récupère déjà les données d'un serveur.
Ensuite analyse ses propriétés pour retrouver les informations nécessaire à ton résultat.
Je ne pense pas que la propriété 'NetworkAdapters' puisse contenir cette info 'Server Name/host'.
Construit un objet intermédiaire pour chaque serveur:
$VMDatas=Get-VM -ComputerName 'srv1'
$Resultat=[pscustomobject]@{
'Server'=$VMDatas.Hostname # un exemple
'IPv4'=$VMDatas.NetworkAdapters.IPV4 #ici aussi c'est un exemple car à priori c'est un tableau
#etc
}

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 mois 2 jours - il y a 3 mois 2 jours #32581 par boulbul
Merci de m'avoir répondu... 

Avec vortre script, seul le titre "NetAdapters" est sorti mais rien d'autre... cependant, si je le supprime du script que vous avez envoyé, j'obtiens ce qui suit :

{VirtualMachine (Name = 'Nom de VM (Os Installe') [Id = 'UUID' de Vm]

Oui, vous avez raison, je peux m'occuper de la chose à ce moment-là, les détails de l'hôte puis les détails de la vm comme vous l'avez suggéré, mais cela ne m'aidera pas lorsque je mettrai en place.

c'est tout, j'ai vraiment besoin de montrer dans ce format.

Server Name/host, Host IP, Host MAC, VM Name/Guest, Guest OS Name, VM IPv4, VM IPv6, VM MAC, VM  Note
Dernière édition: il y a 3 mois 2 jours par boulbul.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 mois 2 jours #32583 par Laurent Dardenne
>>Avec votre script,
c'est plus une piste.

>>mais cela ne m'aidera pas lorsque je mettrai en place.
Essai.
Un extrait d'un de mes projets pro de gestion de VM hyper V
function New-VMExtractReporting{
  #Crée un compte rendu d'extraction d'une VM
  
  param(
      [Parameter(Position=0,Mandatory=$True)]
      [ValidateNotNullOrEmpty()]
     [String]$ComputerName,    

      [Parameter(Position=1,Mandatory=$True)]
      [ValidateNotNullOrEmpty()]
     [String]$VolumeName,      

      [Parameter(Position=2,Mandatory=$True)]
      [ValidateNotNullOrEmpty()]
     [string] $VMName,

     [Parameter(Position=3,Mandatory=$True)]
     [boolean] $Error
  )
  $Result=New-Object PSObject -Property @{
     #Contient le nom du serveur interrogé
    ComputerName=$ComputerName;
     #Contient le sommaire du texte de la notification
    Volume=$VolumeName;
     #Contient le nom de la VM 
    VMName=$VMName;
     #Indique si une erreur a eu lieu
    Error=$Error 
  }
 $Result.PsObject.TypeNames[0] = "VMExtractReporting"
 $Result
} #New-VMExtractReporting
Si cette approche fonctionne pour moi je ne vois pas ce qui poserait pb dans ton cas.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 mois 2 jours - il y a 3 mois 2 jours #32584 par boulbul
Bonjour Laurent,

Merci encore une fois pour votre réponse rapide.

Corrigez-moi si je me suis trompé, je pense que vous avez oublié de mettre "New-" avant "VMExtractReporting" sur la 3ème dernière ligne de votre code ?

Votre code crée une fonction qui invitera l'utilisateur à entrer des valeurs qui seront ensuite affichées dans le bon format... cela fait partie de ce que je veux... laissez-moi clarifier avec le code... Votre code m'a déjà aidé à avancer un peu.....

Voici mon code:
<
get-vm | Select-Object ComputerName,Name,Id,Notes,State,NetworkAdapters|Format-Table
/>

Et c'est la sortie.
<
ComputerName Name Id Notes State NetworkAdapters
---- --


New-vm c1 8b89c96-d5a5-4c61-b63c-232d2133f192 Running {Carte réseau}
Boulbul test1 81de770f-54cb-4d1a-beed-097e0cc1155a Running {Carte réseau}
Boulbul test2 83551f8f-59e3-4681-bf5d-0f76c940a333 Off {Carte réseau}
/>

Comme vous pouvez le voir, il n'affiche pas les détails de la carte réseau, mais uniquement le texte "Carte réseau" à la place.

Ce que je voudrais faire, c'est ajouter au résultat ci-dessus IPv4, IPv6, Iterface Name of the VM.

Merci
Dernière édition: il y a 3 mois 2 jours par boulbul.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 mois 1 jour #32585 par Laurent Dardenne
>>vous avez oublié de mettre "New-" avant "VMExtractReporting"
Non, c'est le type de l'objet personnalisé créée par la fonction. Nom que l'on retrouve via Get-Member. le principe de nommage de fonction de Powershell est verbe-nom, 'NEW' est le verbe et 'VMExtractReporting' le nom de la ressource ou de l'objet que l'on manipule/crée.

>>il n'affiche pas les détails de la carte réseau,
Non puisque tu demandes le formatage d'un tableau de carte réseau (NetworkAdapters) et pas les éléments contenu dans le tableau. A aucun moment tu ne précises les propriétés qui t'intéresse. C'est un peu comme dire à Powershell 'prend ça et débrouille toi avec', alors il se débrouille mais pas autant que tu le souhaites.
C'est pour cela qu'il faut construire un second objet composé de différentes propriété du premier objet qui est déjà un objet composé.
Tu décomposes l'objet d'origine (une VM) source pour recomposer un objet de reporting ou d'affichage.
Enfin le format table est la dernière opération à effectuer, car ton objet recomposé pourrait être enregistré dans un pdf, un docs ou xls.
Format-table crée un objet spécialisé de formatage dédié à la console Powershell uniquement.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.057 secondes
Propulsé par Kunena