Flash info

 "Même s'il se fait mal un vrai Geek ne crie pas, il Twitte."

Arnaud Petitjean

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
JPO91
Utilisateur

PowerShelleur Débutant
Messages: 7
graphgraph
Karma: 0  
problème de cerveau - 28/11/17 15:39 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:

 # 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 }     {21..40 -contains $_} { $varI }     {41..60 -contains $_} { $varI }     {61..80 -contains $_} { $varI }     {81..100 -contains $_} { $varI }     {101..120 -contains $_} { $varI }     {121..140 -contains $_} { $varI }     {141..160 -contains $_} { $varI }     {161..180 -contains $_} { $varI }     {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) {                            {-contains $_} { sleep -second 60}         {-contains $_} { sleep -second 60}         {-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]         }     } }


Merci d'avance pour la lecture.

Bonne soirée.
Cordialement,
Jonathan
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5726
graph
Karma: 209  
Re:problème de cerveau - 29/11/17 09:10 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:

   [math]::round(20# cas différent  [math]::round(20 20)



Pour le second regarde les jobs
Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5726
graph
Karma: 209  
Re:problème de cerveau - 29/11/17 09:34 un test :
Code:

  $GetIndex= {   $Result= [math]::Floor($_20)    if ( ($_ 20) -ne 0 )   { $Result +=}  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

Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
JPO91
Utilisateur

PowerShelleur Débutant
Messages: 7
graphgraph
Karma: 0  
Re:problème de cerveau - 30/11/17 08:22 Merci pour ce retour je vais tenter tout ça !
Je viens de voir l'existence de RUNSPACE.

Bonne journée.
Cordialement,
Jonathan

Message édité par: JPO91, à: 1/12/17 16:04
  | | L'administrateur a désactivé l'accés public en écriture.
© 2020 PowerShell-Scripting.com