Question
Déplacement user dans Group
- Dupont
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 48
- Remerciements reçus 0
il y a 11 ans 2 semaines #19185
par Dupont
Réponse de Dupont sur le sujet Re:Déplacement user dans Group
Pour récupérer la première ligne , j'ai pas de soucis , je m'y prends comme ça :
[code:1]$Header = @()
$Group = @()
$File = \"C:\Projet2\Group.csv\"
Import-Csv -Delimiter \",\" -Encoding UTF8 -Path \"C:\Projet2\Group.csv\"
$FirstLigne = Get-Content $File | Select-Object -Index 1
$Header = $FirstLigne.Split(\",\"«»)
$Users = $Header[0][/code:1]
C'est pour la boucle j'ai énormément de mal à trouver une façon de dire \" Tant que le fichier contient des lignes --> Faire les instructions \" et j'ai du mal aussi à récupérer le SamAccountName de chaque utilisateur et la valeur affectée à savoir le 0 ou le 1 pour un fichier de ce genre :
#TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser
sAMAccountName,GroupeTest,Groupe2,Groupe3
montoloj69d,0,1,0
PontaroF74d,1,0,1
pothierv69d,1,1,1
EcomardM74d,0,0,0
richardm69d,1,1,0
LegrisA74d,1,0,1
boisselb69d,1,0,0
CourdieM74d,0,0,0
pocacham69d,1,1,0
BayettoS74d,1,0,1
J'essaie comme ça mais bon :
[code:1]$i = 1
# Tant que le script n'a pas parcouru toutes les lignes
foreach ($ligne in Get-Content $File )
{
if ($i -eq 1) {}
if ($i -gt 2)
{
echo \"\"
}
$i++
}[/code:1]<br><br>Message édité par: KaAzZ01, à: 5/03/15 10:25
[code:1]$Header = @()
$Group = @()
$File = \"C:\Projet2\Group.csv\"
Import-Csv -Delimiter \",\" -Encoding UTF8 -Path \"C:\Projet2\Group.csv\"
$FirstLigne = Get-Content $File | Select-Object -Index 1
$Header = $FirstLigne.Split(\",\"«»)
$Users = $Header[0][/code:1]
C'est pour la boucle j'ai énormément de mal à trouver une façon de dire \" Tant que le fichier contient des lignes --> Faire les instructions \" et j'ai du mal aussi à récupérer le SamAccountName de chaque utilisateur et la valeur affectée à savoir le 0 ou le 1 pour un fichier de ce genre :
#TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser
sAMAccountName,GroupeTest,Groupe2,Groupe3
montoloj69d,0,1,0
PontaroF74d,1,0,1
pothierv69d,1,1,1
EcomardM74d,0,0,0
richardm69d,1,1,0
LegrisA74d,1,0,1
boisselb69d,1,0,0
CourdieM74d,0,0,0
pocacham69d,1,1,0
BayettoS74d,1,0,1
J'essaie comme ça mais bon :
[code:1]$i = 1
# Tant que le script n'a pas parcouru toutes les lignes
foreach ($ligne in Get-Content $File )
{
if ($i -eq 1) {}
if ($i -gt 2)
{
echo \"\"
}
$i++
}[/code:1]<br><br>Message édité par: KaAzZ01, à: 5/03/15 10:25
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 2 semaines #19186
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Déplacement user dans Group
KaAzZ01 écrit:
[code:1]
$File='c:\temp\Datas.csv'
@'
sAMAccountName,GroupeTest,Groupe2,Groupe3
montoloj69d,0,1,0
PontaroF74d,1,0,1
pothierv69d,1,1,1
'@ > $File
$NbUser=0
foreach ($Data in Import-Csv -Delimiter \",\" -Encoding UTF8 -Path $File )
{
if ($NbUser -eq 0)
{
$Groupe=$Data
Write-Warning \"Info de groupe: $Groupe\"
}
else
{
$Data.sAMAccountName
}
$NbUser++
}
if ($NbUser -eq 0)
{ Write-Error \"Fichier vide\" }
elseif ($NbUser -eq 1)
{ Write-Error \"Un seul objet\" }
[/code:1]
Si tu manipules un fichier structuré, autant utiliser le cmdlet associé même si tu interprétes différemment son contenu.
Tu y étais presque :J'essaie comme ça mais bon :
[code:1]
$File='c:\temp\Datas.csv'
@'
sAMAccountName,GroupeTest,Groupe2,Groupe3
montoloj69d,0,1,0
PontaroF74d,1,0,1
pothierv69d,1,1,1
'@ > $File
$NbUser=0
foreach ($Data in Import-Csv -Delimiter \",\" -Encoding UTF8 -Path $File )
{
if ($NbUser -eq 0)
{
$Groupe=$Data
Write-Warning \"Info de groupe: $Groupe\"
}
else
{
$Data.sAMAccountName
}
$NbUser++
}
if ($NbUser -eq 0)
{ Write-Error \"Fichier vide\" }
elseif ($NbUser -eq 1)
{ Write-Error \"Un seul objet\" }
[/code:1]
Si tu manipules un fichier structuré, autant utiliser le cmdlet associé même si tu interprétes différemment son contenu.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Dupont
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 48
- Remerciements reçus 0
il y a 11 ans 2 semaines #19189
par Dupont
Réponse de Dupont sur le sujet Re:Déplacement user dans Group
Merci ça fait un peu avancer le schmilblik mais j'ai l'impression que comme ça je dois traiter mes noms de groupes en \"dur\" et pas en variable , du moins j'arrive pas après à interagir avec le tableau genre $Group = @() de rang N car le but c'est que Jinette à l'accueil puisse ajouter des colonnes et exécuter toujours le même script. Je n'y parviens pas...
[code:1]foreach ($Data in Import-Csv -Delimiter \",\" -Encoding UTF8 -Path $File )
{
if ($NbUser -eq 0)
{
$Groupe=$Data
}
else
{
if ($Data.GroupeTest -eq 1 -and !(Get-ADGroupMember -Identity $Data.sAMAccountName | where {$_.SamAccountName -eq $Data.SamAccountName})) {
Add-ADGroupMember -Identity $Data.GroupeTest -Members $Data.SamAccountName -Verbose
}
if ($Data.GroupeTest -eq 0 -and !(Get-ADGroupMember -Identity $Data.sAMAccountName | where {$_.SamAccountName -eq $Data.SamAccountName})) {
Remove-ADGroupMember -Identity $Data.GroupeTest -Members $Data.SamAccountName -Verbose
}
}
$NbUser++
}[/code:1]
Je ferais un truc de ce genre la avec deux if par groupe( la je pense pas que ca fonctionne ) mais je devrais faire un truc du genre deux if quelque soit le nombre de colonnes et récupérer le tableau mais j'ai aucune idée de comment me dépatouiller.
[code:1]foreach ($Data in Import-Csv -Delimiter \",\" -Encoding UTF8 -Path $File )
{
if ($NbUser -eq 0)
{
$Groupe=$Data
}
else
{
if ($Data.GroupeTest -eq 1 -and !(Get-ADGroupMember -Identity $Data.sAMAccountName | where {$_.SamAccountName -eq $Data.SamAccountName})) {
Add-ADGroupMember -Identity $Data.GroupeTest -Members $Data.SamAccountName -Verbose
}
if ($Data.GroupeTest -eq 0 -and !(Get-ADGroupMember -Identity $Data.sAMAccountName | where {$_.SamAccountName -eq $Data.SamAccountName})) {
Remove-ADGroupMember -Identity $Data.GroupeTest -Members $Data.SamAccountName -Verbose
}
}
$NbUser++
}[/code:1]
Je ferais un truc de ce genre la avec deux if par groupe( la je pense pas que ca fonctionne ) mais je devrais faire un truc du genre deux if quelque soit le nombre de colonnes et récupérer le tableau mais j'ai aucune idée de comment me dépatouiller.
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 11 ans 2 semaines #19190
par Philippe
Réponse de Philippe sur le sujet Re:Déplacement user dans Group
salut KaAzZ01
si c'est pour Jinette
:
[code:1]$File = \"C:\Projet2\Group.csv\"
$fichier = Import-Csv -Encoding UTF8 -Delimiter \",\" $File
$PremiereLigne = Get-Content $File | Select-Object -Index 1
$EnTete = $PremiereLigne.Split(\",\"«»)
foreach ($ligne in $fichier) { #Tant que le fichier n'est pas fini
# Write-Host $ligne.sAMAccountName -NoNewline
foreach ($groupe in $EnTete[1..$EnTete.Count]) {
$DansGroupeOuPas = $ligne.\"$groupe\"
if ($DansGroupeOuPas -eq 1 -and !(Get-ADGroupMember -Identity $Groupe | where {$_.SamAccountName -eq $ligne.SamAccountName})) {
Write-Host \" ajoute l'utilisateur $($ligne.sAMAccountName) au goupe $groupe\"
#Add-ADGroupMember -Identity $Groupe -Members $Utilisateur -Verbose
}
if ($DansGroupeOuPas -eq 0 -and (Get-ADGroupMember -Identity $Groupe | where {$_.SamAccountName -eq $ligne.SamAccountName})) {
Write-Host \" supprime l'utilisateur du goupe $groupe\"
#Remove-ADGroupMember -Identity $Groupe -Members $Utilisateur -Verbose
}
}
}[/code:1]
ta plus rien a faire !
si c'est pour Jinette
[code:1]$File = \"C:\Projet2\Group.csv\"
$fichier = Import-Csv -Encoding UTF8 -Delimiter \",\" $File
$PremiereLigne = Get-Content $File | Select-Object -Index 1
$EnTete = $PremiereLigne.Split(\",\"«»)
foreach ($ligne in $fichier) { #Tant que le fichier n'est pas fini
# Write-Host $ligne.sAMAccountName -NoNewline
foreach ($groupe in $EnTete[1..$EnTete.Count]) {
$DansGroupeOuPas = $ligne.\"$groupe\"
if ($DansGroupeOuPas -eq 1 -and !(Get-ADGroupMember -Identity $Groupe | where {$_.SamAccountName -eq $ligne.SamAccountName})) {
Write-Host \" ajoute l'utilisateur $($ligne.sAMAccountName) au goupe $groupe\"
#Add-ADGroupMember -Identity $Groupe -Members $Utilisateur -Verbose
}
if ($DansGroupeOuPas -eq 0 -and (Get-ADGroupMember -Identity $Groupe | where {$_.SamAccountName -eq $ligne.SamAccountName})) {
Write-Host \" supprime l'utilisateur du goupe $groupe\"
#Remove-ADGroupMember -Identity $Groupe -Members $Utilisateur -Verbose
}
}
}[/code:1]
ta plus rien a faire !
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 2 semaines #19194
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Déplacement user dans Group
KaAzZ01 écrit:
Donne nous juste une ligne d'exemple et le résultat attendu.du moins j'arrive pas après à interagir avec le tableau genre $Group = @() de rang N
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Dupont
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 48
- Remerciements reçus 0
il y a 11 ans 2 semaines #19196
par Dupont
Réponse de Dupont sur le sujet Re:Déplacement user dans Group
Ah merci à toi c'est super !
Pour récupérer toute une ligne je ne connaissais pas le : [1..$EnTete.Count] , j'avais jamais vu avant mais c'est juste ce dont j'avais besoin !
Mon stage sans cette communauté n'aurait pas été si agréable ! Merci encore à toi et 6ragtus .
Juste p'tite question : Pour le shell vous répondrez aussi ou vous rejetez catégoriquement tout ce qui n'est pas du PowerShell ?
Ou si vous êtes actifs sur un fofo pour le shell je prendrais bien le nom
Pour récupérer toute une ligne je ne connaissais pas le : [1..$EnTete.Count] , j'avais jamais vu avant mais c'est juste ce dont j'avais besoin !
Mon stage sans cette communauté n'aurait pas été si agréable ! Merci encore à toi et 6ragtus .
Juste p'tite question : Pour le shell vous répondrez aussi ou vous rejetez catégoriquement tout ce qui n'est pas du PowerShell ?
Ou si vous êtes actifs sur un fofo pour le shell je prendrais bien le nom
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.065 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Déplacement user dans Group