Question problème de cerveau
- Jpo
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 5 ans 10 mois #24540
par Jpo
problème de cerveau a été créé par Jpo
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
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6298
- Remerciements reçus 68
il y a 5 ans 10 mois #24628
par Laurent Dardenne
Tutoriels PowerShell
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
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6298
- Remerciements reçus 68
il y a 5 ans 10 mois #24629
par Laurent Dardenne
Tutoriels PowerShell
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]
[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.
- Jpo
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 5 ans 10 mois #24633
par Jpo
Réponse de Jpo 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
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.051 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- problème de cerveau