Question
aide pour compréhension dd'un script
- snap972
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 4
- Remerciements reçus 0
J'aimerais que l'on m'explique ce script
Merci pour votre aide
$IPaddresses = @()
foreach($vm in Get-VM){
$vm.Guest.Nics | %{
$row = \"\" | Select Name, IP, MAC
$row.Name = $vm.Name
$row.IP = &{if($_.IPAddress){[String]::Join(',',$_.IPAddress)}}
$row.MAC = $_.MacAddress
$IPaddresses += $row
}
}
Get-VMHost | Get-VMHostNetworkAdapter -VMKernel | %{
$row = \"\" | Select Name, IP, MAC
$row.Name = $_.VMHost.Name
$row.IP = $_.IP
$row.MAC = $_.MAC
$IPaddresses += $row
}
$IPaddresses | Export-csv \"C:\report.csv\" -NoTypeInformation -UseCulture
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
qu'est-ce que tu ne comprends pas ?<br><br>Message édité par: Laurent Dardenne, à: 22/10/12 17:56
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- snap972
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 4
- Remerciements reçus 0
Je ne comprends pas cette ligne là par exemple
$vm.Guest.Nics | %{
Connexion ou Créer un compte pour participer à la conversation.
- SiSMik
- Hors Ligne
- Membre platinium
-
- Messages : 492
- Remerciements reçus 0
[code:1]
$IPaddresses = @() #création d'un tableau vide
foreach($vm in Get-VM){ #Pour chaque $vm
$vm.Guest.Nics | %{ #pour chaque Nic
$row = \"\" | Select Name, IP, MAC #on crée un objet vide
$row.Name = $vm.Name # #on en registre le propriété $row.name avec le nom de la vm
$row.IP = &{if($_.IPAddress){[String]::Join(',',$_.IPAddress)}} #on reg les ips dans $row.ip
$row.MAC = $_.MacAddress #pareil pour la mac address
$IPaddresses += $row
}
}
$IPaddresses | Export-csv \"C:report.csv\" -NoTypeInformation -UseCulture # on export les adresses IP dans un csv.[/code:1]
Voilà, j'ai pas tout commenté, mais ça te fait une base.
Je te conseil de tout déffricher toi même avec l'aide de sites pour mieux comprendre par toi même.
@+
Connexion ou Créer un compte pour participer à la conversation.
- snap972
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 4
- Remerciements reçus 0
Salut,
[code:1]
$IPaddresses = @() #création d'un tableau vide
foreach($vm in Get-VM){ #Pour chaque $vm
$vm.Guest.Nics | %{ #pour chaque Nic
$row = \"\" | Select Name, IP, MAC #on crée un objet vide
$row.Name = $vm.Name # #on en registre le propriété $row.name avec le nom de la vm
$row.IP = &{if($_.IPAddress){[String]::Join(',',$_.IPAddress)}} #on reg les ips dans $row.ip
$row.MAC = $_.MacAddress #pareil pour la mac address
$IPaddresses += $row
}
}
$IPaddresses | Export-csv \"C:report.csv\" -NoTypeInformation -UseCulture # on export les adresses IP dans un csv.[/code:1]
Voilà, j'ai pas tout commenté, mais ça te fait une base.
Je te conseil de tout déffricher toi même avec l'aide de sites pour mieux comprendre par toi même.
@+
Bonjour merci pour ton aide
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
- Messages : 968
- Remerciements reçus 0
Une première étape pour comprendre un script tel que celui que tu proposes est l'indentation, afin de mieux organiser le code et pour faciliter sa lecture :
[code:1]
$IPaddresses = @()
Foreach($vm in Get-VM){
$vm.Guest.Nics | Foreach-object{
$row = \"\" | Select Name, IP, MAC
$row.Name = $vm.Name
$row.IP = &{if($_.IPAddress){[String]::Join(',',$_.IPAddress)}}
$row.MAC = $_.MacAddress
$IPaddresses += $row
}
}
Get-VMHost | Get-VMHostNetworkAdapter -VMKernel | Foreach-Object{
$row = \"\" | Select Name, IP, MAC
$row.Name = $_.VMHost.Name
$row.IP = $_.IP
$row.MAC = $_.MAC
$IPaddresses += $row
}
$IPaddresses | Export-csv \"C:\report.csv\" -NoTypeInformation -UseCulture
[/code:1]
Ici, pour une meilleure compréhension, j'ai également remplacé les alias '%' par 'Foreach-Object'.
La notation suivante, dans le cadre de la création d'un objet :
[code:1]
$row = \"\" | Select Name, IP, MAC
[/code:1]
fonctionne dans les versions 1 et 2 de PowerShell. Toutefois, depuis la version 2, il est conseillé de préférer cette écriture :
[code:1]
$row = New-Object PSObject -Property @{Name=\"\"; IP =\"\"; MAC=\"\"}
[/code:1]
Enfin, quelques informations complémentaires :
[code:1]
# Création d'un tableau vide qui représentera la liste des adresses IP
$IPaddresses = @()
# Récupération de toutes les VM
$VMs = Get-VM
# Pour chaque VM
Foreach($vm in $VMs){
# Pour chaque carte réseau de la VM en cours de traitement
$vm.Guest.Nics | Foreach-object{
# Création d'un nouvel objet personnalisé ayant les propriétés Name, IP et MAC, pour le moment vides
$row = New-Object PSObject -Property @{Name=\"\"; IP =\"\"; MAC=\"\"}
# Fixe chacune des propriétés avec des valeurs
$row.Name = $vm.Name
$row.IP = &{if($_.IPAddress){[String]::Join(',',$_.IPAddress)}}
$row.MAC = $_.MacAddress
# Ajout de l'objet personnalisé à la liste d'adresses IP
$IPaddresses += $row
}
}
# Utilisation de 2 pipeline '|' afin de générer un flux d'objet
# 1) Récupération de la liste des Hôtes
# 2) Pour chaque Hôte, récupération des carte réseau physiques
# 3) Traitement pour chaque carte réseau ainsi récupérée
Get-VMHost | Get-VMHostNetworkAdapter -VMKernel | Foreach-Object{
# Création d'un nouvel objet personnalisé ayant les propriétés Name, IP et MAC, pour le moment vides
$row = New-Object PSObject -Property @{Name=\"\"; IP =\"\"; MAC=\"\"}
$row.Name = $_.VMHost.Name
$row.IP = $_.IP
$row.MAC = $_.MAC
# Ajout de l'objet personnalisé à la liste d'adresses IP
$IPaddresses += $row
}
# Export de la liste d'adresses IP vers un fichier CSV
# Chaque colonne correspondra aux proprités des objets : Name, IP, MAC
# Chaque ligne correspondra à un objet
$IPaddresses | Export-csv \"C:\report.csv\" -NoTypeInformation -UseCulture
[/code:1]
@+
Matthew
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- aide pour compréhension dd'un script