Question Besoin d'aide logique

Plus d'informations
il y a 14 ans 9 heures #11351 par Jean Ben
Besoin d'aide logique a été créé par Jean Ben
Bonjour,

Voici mon problème :

J'ai un fichier rapport.csv de ce type :

NomVM,1,2,3,4,5,6,7,8,9,10
VM1,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
VM2,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK

[code:1]$csv = Import-csv -Path D:\rapport.csv[/code:1]

Je souhaite tester la présence d'une liste de VM dans le fichier rapport.csv. Si la VM n'est pas présente dans le rapport.csv, alors je lance une action (peu importe l'action c'est pas le sujet)

Manuellement, pour tester j'utilise ces commandes :
$csv[0].NomVM -contains \"VM3\"
$csv[1].NomVM -contains \"VM3\"
$csv[2].NomVM -contains \"VM3\"

Je dois donc parcourir tous les index.


[code:1]foreach ($VM in $ListeVMS)
{
for ($i = 0; $i++)
if ($CSV[$i].NomVM -eq $VM)
{
Action
}
}[/code:1]
Cela n'est pas bon :( Pouvez vous me donner une piste ?

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

Plus d'informations
il y a 14 ans 7 heures #11352 par BENOIT Damien
Réponse de BENOIT Damien sur le sujet Re:Besoin d'aide logique
<br><br>Message édité par: Damien BENOIT, à: 20/03/12 20:57

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

Plus d'informations
il y a 14 ans 3 heures #11354 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Besoin d'aide logique
Salut,
une solution en utilsant des objets et le cmdlet Compare-object :
[code:1]
$FullName=\&quot;c:\temp\NomVM.txt\&quot;

@\&quot;
NomVM,1,2,3,4,5,6,7,8,9,10
VM1,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
VM2,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
VM3,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
VM4,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
VM5,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
\&quot;@ &gt; $FullName

$MyVms = Import-csv -Path $FullName

function New-VMInfo {
param ($Name)
New-Object PSObject -Property @{NomVM=$Name}
}

$Recherche=@(
New-VMInfo \&quot;VM2\&quot;
New-VMInfo \&quot;VM5\&quot;
New-VMInfo \&quot;VM6\&quot;
)

$Max=[Math]::Max($MyVMs.count,$Recherche.count)

Compare-Object $Recherche $MyVms -sync $Max -IncludeEqual -Property NomVM
# NomVM SideIndicator
#

# VM2 ==
# VM5 ==
# VM1 =&gt;
# VM3 =&gt;
# VM4 =&gt;
# VM6 &lt;=

Get-help Compare-Object -full
[/code:1]
Tu peux aussi rechercher l'occurence Compare-Object sur le forum, il y a qq posts plus explicite.

Avec ton code de départ :
[code:1]
foreach ($VM in $Recherche)
{
Write-Host \&quot;recherche : ($vm.NomVM)\&quot;
for ($i = 0; $i -lt $myvms.count; $i++)
{
Write-Host \&quot;current : $($myvms[$i].NomVM)\&quot;
if ($myvms[$i].NomVM -eq $VM.NomVM)
{
write-Warning \&quot;Action $VM !\&quot;
}
}
}
[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 13 ans 11 mois #11360 par Jean Ben
Réponse de Jean Ben sur le sujet Re:Besoin d'aide logique
Ok, merci je vais étudier cela :)

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

Plus d'informations
il y a 13 ans 11 mois #11365 par sebastien
Réponse de sebastien sur le sujet Re:Besoin d'aide logique
Bonjour,

Ceci devrait fonctionner.

[code:1]$list_vm_a_tester = @(\&quot;VM1\&quot;,\&quot;VM2\&quot;,\&quot;VM3\&quot;,\&quot;VM4\&quot;,\&quot;VM5\&quot;,\&quot;VM6\&quot;,\&quot;VM7\&quot;,\&quot;VM8\&quot;,\&quot;VM10\&quot;,\&quot;VM11\&quot;«»)
$list_vm_du_rapport = \&quot;\&quot;
$rapport_csv=\&quot;c:\temp\NomVM.csv\&quot;

@\&quot;
NomVM,1,2,3,4,5,6,7,8,9,10
VM1,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
VM2,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
VM3,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
VM4,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
VM5,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
VM10,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK
\&quot;@ &gt; $rapport_csv

# création d'une liste des VM du rapport au format string ex; VM1,VM2, ...
Get-Content $rapport_csv | % {If (-not($_.Split(',')[0] -eq \&quot;NomVM\&quot;«»)) {$list_vm_du_rapport += $_.Split(',')[0]+\&quot;,\&quot;}}


ForEach ($vm in $list_vm_a_tester){
If (-not($list_vm_du_rapport -like \&quot;*$vm,*\&quot;«»))
{
echo $vm
#Tes actions
}

}[/code:1]

Seb++<br><br>Message édité par: sebasti1, à: 22/03/12 11:23

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

Plus d'informations
il y a 13 ans 11 mois #11409 par Jean Ben
Réponse de Jean Ben sur le sujet Re:Besoin d'aide logique
ça marche !
Merci beaucoup :)

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

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