- forum
- PowerShell
- Entraide pour les débutants
- obtenir des détails vm sur un certain nombre d'hôtes sur le réseau
Question
obtenir des détails vm sur un certain nombre d'hôtes sur le réseau
- boulbul
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 1 an 6 mois - il y a 1 an 6 mois #32590
par boulbul
Réponse de boulbul sur le sujet obtenir des détails vm sur un certain nombre d'hôtes sur le réseau
Merci pour votre retour,
J'ai fait quelques progrès sur le script et j'aimerais votre aide sur un point.
J'ai réussi à exporter via le module exportExcel, cependant… Toutes les sorties de la variable « Nic_IPAddresses », « VM_HD_Size » et « VM_HD_Location » sont vides ou ont une valeur de « stem.string ».
Voici le code :
Get-VM |
ForEach-Object {
$VM = $_ # this variable assignment makes the current pipeline object available inside the nested loop
$NicList = $_.NetworkAdapters
foreach ($Nic in $NicList) {
[PSCustomObject]@{
ComputerName = $VM.ComputerName
Host_OS = (Get-WMIObject win32_operatingsystem).caption #|Select "Local Area Connection* 1"
Host_IP = (Get-NetAdapter )
#Host_IP = (Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias "Local Area Connection* 1" |select -Property IPAddress)
Nic_IPAddresses = $Nic.IPAddresses
VM_Name = $VM.Name
Nic_MacAddress = $Nic.MacAddress
VM_CreationTime = $VM.CreationTime
VM_MemoryAssigned = $VM.MemoryAssigned # to write in MB
VM_ID = $VM.VMId
VM_HD_Size = $VM.VMId |Get-VHD| select Size , {$_.Size /1GB} # to filter this output in order to get just VM_HD_Location
VM_State = $VM.State
Nic_Name = $Nic.Name
VM_HD_Location = $VM.VMId |Get-VHD | Select Path # to filter this output in order to get just VM_HD_Location
}
}
} | Export-Excel -Path C:\temp\allvms.xls
Voici à la fois la sortie du script et la redirection ver le fichier Excel.
Sortie du code:
ComputerName : Boulbul
Host_OS : Microsoft Windows 10 Professionnel
Nic_IPAddresses : {169.254.12.49, fe80::d13c:2319:ac06:c31}
VM_Name : DCVM
Nic_MacAddress : 00155D6A2A03
VM_CreationTime : 21/08/2022 13:02:55
VM_MemoryAssigned : 771751936
VM_ID : 81de770f-54cb-4d1a-beed-097e0cc1155a
VM_HD_Size : @{Size=128849018880; $_.Size /1GB=120}
VM_State : Running
Nic_Name : Carte réseau
VM_HD_Location : @{Path=C:\Users\Boulbul\Documents\Hyper-v\test1\test1_2017231E-A852-4812-9505-18843E929DC5.avhdx}
ComputerName : Boulbul
Host_OS : Microsoft Windows 10 Professionnel
Nic_IPAddresses : {}
VM_Name : Nouvel ordinateur virtuel
Nic_MacAddress : 00155D6A2A06
VM_CreationTime : 23/08/2022 16:24:47
VM_MemoryAssigned : 1073741824
VM_ID : c1b89c96-d5a5-4c61-b63c-232d2133f192
VM_HD_Size :
VM_State : Running
Nic_Name : Carte réseau
VM_HD_Location :
ComputerName : Boulbul
Host_OS : Microsoft Windows 10 Professionnel
Nic_IPAddresses : {169.254.119.5, fe80::bcb4:2f:f8df:7705}
VM_Name : test2
Nic_MacAddress : 00155D6A2A04
VM_CreationTime : 21/08/2022 13:03:29
VM_MemoryAssigned : 824180736
VM_ID : 83551f8f-59e3-4681-bf5d-0f76c940a333
VM_HD_Size : @{Size=128849018880; $_.Size /1GB=120}
VM_State : Running
Nic_Name : Carte réseau
VM_HD_Location : @{Path=C:\Users\Boulbul\Documents\Hyper-v\test2\test2_1CBB8966-2F01-469F-B8AE-AB55CECE8650.avhdx}
Excel file: (voir fichier joint)
Merci d'avance.
Cordialement,
boulbul
J'ai fait quelques progrès sur le script et j'aimerais votre aide sur un point.
J'ai réussi à exporter via le module exportExcel, cependant… Toutes les sorties de la variable « Nic_IPAddresses », « VM_HD_Size » et « VM_HD_Location » sont vides ou ont une valeur de « stem.string ».
Voici le code :
Get-VM |
ForEach-Object {
$VM = $_ # this variable assignment makes the current pipeline object available inside the nested loop
$NicList = $_.NetworkAdapters
foreach ($Nic in $NicList) {
[PSCustomObject]@{
ComputerName = $VM.ComputerName
Host_OS = (Get-WMIObject win32_operatingsystem).caption #|Select "Local Area Connection* 1"
Host_IP = (Get-NetAdapter )
#Host_IP = (Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias "Local Area Connection* 1" |select -Property IPAddress)
Nic_IPAddresses = $Nic.IPAddresses
VM_Name = $VM.Name
Nic_MacAddress = $Nic.MacAddress
VM_CreationTime = $VM.CreationTime
VM_MemoryAssigned = $VM.MemoryAssigned # to write in MB
VM_ID = $VM.VMId
VM_HD_Size = $VM.VMId |Get-VHD| select Size , {$_.Size /1GB} # to filter this output in order to get just VM_HD_Location
VM_State = $VM.State
Nic_Name = $Nic.Name
VM_HD_Location = $VM.VMId |Get-VHD | Select Path # to filter this output in order to get just VM_HD_Location
}
}
} | Export-Excel -Path C:\temp\allvms.xls
Voici à la fois la sortie du script et la redirection ver le fichier Excel.
Sortie du code:
ComputerName : Boulbul
Host_OS : Microsoft Windows 10 Professionnel
Nic_IPAddresses : {169.254.12.49, fe80::d13c:2319:ac06:c31}
VM_Name : DCVM
Nic_MacAddress : 00155D6A2A03
VM_CreationTime : 21/08/2022 13:02:55
VM_MemoryAssigned : 771751936
VM_ID : 81de770f-54cb-4d1a-beed-097e0cc1155a
VM_HD_Size : @{Size=128849018880; $_.Size /1GB=120}
VM_State : Running
Nic_Name : Carte réseau
VM_HD_Location : @{Path=C:\Users\Boulbul\Documents\Hyper-v\test1\test1_2017231E-A852-4812-9505-18843E929DC5.avhdx}
ComputerName : Boulbul
Host_OS : Microsoft Windows 10 Professionnel
Nic_IPAddresses : {}
VM_Name : Nouvel ordinateur virtuel
Nic_MacAddress : 00155D6A2A06
VM_CreationTime : 23/08/2022 16:24:47
VM_MemoryAssigned : 1073741824
VM_ID : c1b89c96-d5a5-4c61-b63c-232d2133f192
VM_HD_Size :
VM_State : Running
Nic_Name : Carte réseau
VM_HD_Location :
ComputerName : Boulbul
Host_OS : Microsoft Windows 10 Professionnel
Nic_IPAddresses : {169.254.119.5, fe80::bcb4:2f:f8df:7705}
VM_Name : test2
Nic_MacAddress : 00155D6A2A04
VM_CreationTime : 21/08/2022 13:03:29
VM_MemoryAssigned : 824180736
VM_ID : 83551f8f-59e3-4681-bf5d-0f76c940a333
VM_HD_Size : @{Size=128849018880; $_.Size /1GB=120}
VM_State : Running
Nic_Name : Carte réseau
VM_HD_Location : @{Path=C:\Users\Boulbul\Documents\Hyper-v\test2\test2_1CBB8966-2F01-469F-B8AE-AB55CECE8650.avhdx}
Excel file: (voir fichier joint)
Merci d'avance.
Cordialement,
boulbul
Pièces jointes :
Dernière édition: il y a 1 an 6 mois par boulbul.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 1 an 6 mois - il y a 1 an 6 mois #32591
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet obtenir des détails vm sur un certain nombre d'hôtes sur le réseau
Pour 'System.String' la propriété est un tableau, dans la console on peut parfois voir le contenu mais dans les export le plus souvent
'on'
transforme l'objet en string :
Donc pour les propriétés contenant un tableau de scalaires ( objet simple: int, chaine,double, boolean etc) on peut faire ceci :
Pour les propriétés contenant un objet (VM_HD_Size) ou un tableau d'objet cela demande bcp plus de code.
Pour les chaînes vide, je ne sais pas n'ayant pas les données à portée de clavier
Vérifie ce que renvoie $objet.Propriété.ToString().
Tu peux aussi analyser le type de ces propriétés avec Get-Member :
Essaie :
Ici par défaut Select-Object renvoie un objet avec une propriété, -ExpandProperty renvoie le contenu de la propriété et pas un nouvel objet avec une seul propriété.
Il s'agit de détails plomberie interne à .Net, mais à un moment donné on est bien obligé de les connaitre pour résoudre ce type de traitement.[/code][/code]
[System.String[]]$Tab=@('un','deux','trois')
$tab.Tostring()
#System.String
[System.Int32[]]$Tab=@(1..5)
$tab.Tostring()
#System.Int32
[System.String[]]$Tab=@('un','deux','trois')
$tab -Join ','
#un,deux,trois
Pour les propriétés contenant un objet (VM_HD_Size) ou un tableau d'objet cela demande bcp plus de code.
Pour les chaînes vide, je ne sais pas n'ayant pas les données à portée de clavier
Vérifie ce que renvoie $objet.Propriété.ToString().
Tu peux aussi analyser le type de ces propriétés avec Get-Member :
$objet.Propriété|get-member
#ou
$objet.Propriété.GetType().FullName
Essaie :
VM_HD_Location = $VM.VMId |Get-VHD | Select -ExpandProperty Path
Ici par défaut Select-Object renvoie un objet avec une propriété, -ExpandProperty renvoie le contenu de la propriété et pas un nouvel objet avec une seul propriété.
Il s'agit de détails plomberie interne à .Net, mais à un moment donné on est bien obligé de les connaitre pour résoudre ce type de traitement.[/code][/code]
Tutoriels PowerShell
Dernière édition: il y a 1 an 6 mois par Laurent Dardenne. Raison: balise code
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 1 an 6 mois - il y a 1 an 6 mois #32592
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet obtenir des détails vm sur un certain nombre d'hôtes sur le réseau
Pour les chaînes vides, c'est dû au comportement d'un objet personnalisé crée par Select-Object.
Exemple :
Par défaut sa méthode ToString() ne renvoei rien et si on demande sa substitution dans une chaîne, Powershell utilise un formatage spécifique.
Exemple :
$p=get-process powershell|Select-Object Processname,Id
$p[0].tostring() -eq [string]::empty
#True
"Transformation par Powershell $($p[1])"
#{Transformation par PS @{ProcessName=powershell; Id=25992}
Par défaut sa méthode ToString() ne renvoei rien et si on demande sa substitution dans une chaîne, Powershell utilise un formatage spécifique.
Tutoriels PowerShell
Dernière édition: il y a 1 an 6 mois par Laurent Dardenne.
Connexion ou Créer un compte pour participer à la conversation.
- forum
- PowerShell
- Entraide pour les débutants
- obtenir des détails vm sur un certain nombre d'hôtes sur le réseau
Temps de génération de la page : 0.081 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- obtenir des détails vm sur un certain nombre d'hôtes sur le réseau