Question aide pour compréhension dd'un script

Plus d'informations
il y a 13 ans 5 mois #12953 par snap972
Bonjour à tous !

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.

Plus d'informations
il y a 13 ans 5 mois #12954 par Laurent Dardenne
Salut,
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.

Plus d'informations
il y a 13 ans 5 mois #12958 par snap972
Bonjour,


Je ne comprends pas cette ligne là par exemple

$vm.Guest.Nics | %{

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

Plus d'informations
il y a 13 ans 5 mois #12959 par SiSMik
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 = \&quot;\&quot; | 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 = &amp;{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 \&quot;C:report.csv\&quot; -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.

Plus d'informations
il y a 13 ans 5 mois #12960 par snap972
benduru écrit:

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 = \&quot;\&quot; | 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 = &amp;{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 \&quot;C:report.csv\&quot; -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.

Plus d'informations
il y a 13 ans 5 mois #12968 par Matthew BETTON
Bonsoir,

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 = \&quot;\&quot; | Select Name, IP, MAC
$row.Name = $vm.Name
$row.IP = &amp;{if($_.IPAddress){[String]::Join(',',$_.IPAddress)}}
$row.MAC = $_.MacAddress
$IPaddresses += $row
}
}

Get-VMHost | Get-VMHostNetworkAdapter -VMKernel | Foreach-Object{
$row = \&quot;\&quot; | Select Name, IP, MAC
$row.Name = $_.VMHost.Name
$row.IP = $_.IP
$row.MAC = $_.MAC
$IPaddresses += $row
}

$IPaddresses | Export-csv \&quot;C:\report.csv\&quot; -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 = \&quot;\&quot; | 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=\&quot;\&quot;; IP =\&quot;\&quot;; MAC=\&quot;\&quot;}
[/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=\&quot;\&quot;; IP =\&quot;\&quot;; MAC=\&quot;\&quot;}
# Fixe chacune des propriétés avec des valeurs
$row.Name = $vm.Name
$row.IP = &amp;{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=\&quot;\&quot;; IP =\&quot;\&quot;; MAC=\&quot;\&quot;}
$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 \&quot;C:\report.csv\&quot; -NoTypeInformation -UseCulture
[/code:1]

@+

Matthew

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

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