Question problème de cerveau

Plus d'informations
il y a 2 ans 9 mois #24540 par JPO91
problème de cerveau a été créé par JPO91
Bonjour à tous,

Je me présente Jonathan, je suis entrain de me creuser la tête ces derniers temps pour exploiter un peu mes serveurs !

1ère question :
Dans le script qui suit, j'ai créé deux fonction \"Horrible\", voyez-vous un moyen d'améliorer la chose ? Si on imagine que j'ai plus de 2000 OU dans mon AD, je vais pas augmenter mon switch de cette manière !

2ème question
Celle-ci concerne la fonction \"horribleSleep\", je souhaiterais lancer 3 consoles PowerShell max au même moment, je n'arrive pas à trouver comment arriver à cette magie !

Je suis pas un exemple niveau code, donc désolé par avance !
[code:1]# On récupère 200 OU
import-module activedirectory
$var = Get-ADOrganizationalUnit -Filter '(OU -like \"*\"«») -AND (XXX -like \"*\"«»)' -properties Name,distinguishedName | select-object -First 200

$var1 = New-Object System.Collections.ObjectModel.Collection``1[System.String]
$totalad = $var.count
$cycle = 20
$boucle = $totalad / $cycle
write-host \"$boucle,$totalad\"

function horrible {
param($i)
switch ($i) {
{1..20 -contains $_} { $varI = 1 }
{21..40 -contains $_} { $varI = 2 }
{41..60 -contains $_} { $varI = 3 }
{61..80 -contains $_} { $varI = 4 }
{81..100 -contains $_} { $varI = 5 }
{101..120 -contains $_} { $varI = 6 }
{121..140 -contains $_} { $varI = 7 }
{141..160 -contains $_} { $varI = 8 }
{161..180 -contains $_} { $varI = 9 }
{181..200 -contains $_} { $varI = 10 }
{201..220 -contains $_} { $varI = 11 }
{221..240 -contains $_} { $varI = 12 }
{241..260 -contains $_} { $varI = 13 }
}
return $varI
}

function horribleMax {
param($i)
switch ($i) {
{1..20 -contains $_} { $varI = 20 }
{21..40 -contains $_} { $varI = 40 }
{41..60 -contains $_} { $varI = 60 }
{61..80 -contains $_} { $varI = 80 }
{81..100 -contains $_} { $varI = 100 }
{101..120 -contains $_} { $varI = 120 }
{121..140 -contains $_} { $varI = 140 }
{141..160 -contains $_} { $varI = 160 }
{161..180 -contains $_} { $varI = 180 }
{181..200 -contains $_} { $varI = 200 }
{201..220 -contains $_} { $varI = 220 }
{221..240 -contains $_} { $varI = 240 }
{241..260 -contains $_} { $varI = 260 }
}
return $varI
}

function horribleSleep {
param($i)
switch ($i) {
{3 -contains $_} { sleep -second 60}
{6 -contains $_} { sleep -second 60}
{9 -contains $_} { sleep -second 60}
{12 -contains $_} { sleep -second 60}
{15 -contains $_} { sleep -second 60}
{18 -contains $_} { sleep -second 60}
{21 -contains $_} { sleep -second 60}
{24 -contains $_} { sleep -second 60}
}
return $varI
}

for ($i=1;$i -le $totalad;$i++) {
# write-host \"Valeur de I = $i\"
$Cycleencours = horrible $i
$CycleMax = horribleMax $i
# $boucle*$Cycleencours
horribleSleep $Cycleencours
write-host \"voici i $i et voici le cycleMax $CycleMax et le cycle en cours est $Cycleencours\"
if ($i -le $CycleMax){
$distinguishedName = $var[$i].distinguishedName
if ($distinguishedName -ne $null) {
$var1.add($distinguishedName)
$ExistenceFichier = test-path \".\var$($Cycleencours).csv\"
write-host \"Le fichier existe t-il ? $ExistenceFichier\"
if ($ExistenceFichier -eq $false){
\"OU\" | out-file \".\var$($Cycleencours).csv\" -encoding UTF8
}
}
# déterminer la fin du cycle
if ($i -eq $CycleMax) {
$var1 = $var1 |sort-object -uniq
$var1 | out-file \".\var$($Cycleencours).csv\" -append -encoding UTF8
start-process powershell -argument \"C:\XXXX\XXXX.ps1 C:\XXX\var$($Cycleencours).csv\"
$var1 = $null
$var1 = New-Object System.Collections.ObjectModel.Collection``1[System.String]
}
}
}[/code:1]
Merci d'avance pour la lecture.

Bonne soirée.
Cordialement,
Jonathan

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

Plus d'informations
il y a 2 ans 9 mois #24628 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:problème de cerveau
Salut,
pour le premier la recherche dans de multiples tableaux est trop long, tu peux déjà créer un tableau de toutes tes correspondances ou une hashtable. Ainsi la recherche de l'index ($i) est directe.

Comme tu as un pas de 20, tu peux aussi rechercher le résultat de cette manière :
[code:1]
[math]::round(1 / 20) # cas différent
[math]::round(20 / 20)
[/code:1]

Pour le second regarde les jobs

Tutoriels PowerShell

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

Plus d'informations
il y a 2 ans 9 mois #24629 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:problème de cerveau
un test :
[code:1]
$GetIndex= {
$Result= [math]::Floor($_/ 20)
if ( ($_ % 20) -ne 0 )
{ $Result +=1 }
return $Result
}
1..20| % $GetIndex #1
21..40| % $GetIndex #2
41..60| % $GetIndex
61..80| % $GetIndex
81..100| % $GetIndex
101..120| % $GetIndex
121..140| % $GetIndex
141..160| % $GetIndex
161..180| % $GetIndex
181..200| % $GetIndex
201..220| % $GetIndex
221..240| % $GetIndex
241..260| % $GetIndex #13
[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 2 ans 9 mois #24633 par JPO91
Réponse de JPO91 sur le sujet Re:problème de cerveau
Merci pour ce retour je vais tenter tout ça !
Je viens de voir l'existence de RUNSPACE.

Bonne journée.
Cordialement,
Jonathan<br><br>Message édité par: JPO91, à: 1/12/17 16:04

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

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