Question
Modification description groupes AD
- Damien Berthaud
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 1 an 11 mois #32872
par Damien Berthaud
Modification description groupes AD a été créé par Damien Berthaud
Bonjour,
Je suis assez débutant en Powershell mais j'ai un sujet a traiter qui est assez complexe pour moi.
On doit modifier la description des groupes AD d'un O.U
Ils sont nommés en "GL_XXX_application" et il faut que je garde que le nom de l'application.
Checker les groupes etc ça va mais réussir à isoler le nom du groupe et enlever des caractères, je ne vois pas du tout comment faire.
Le nom du groupe et nommé pareil mais on ne doit pas le modifier donc je ne peux pas prendre le nom du groupe pour le mettre sur la description...
Si quelqu'un pouvez m'aiguiller.
Merci beaucoup à vous
Je suis assez débutant en Powershell mais j'ai un sujet a traiter qui est assez complexe pour moi.
On doit modifier la description des groupes AD d'un O.U
Ils sont nommés en "GL_XXX_application" et il faut que je garde que le nom de l'application.
Checker les groupes etc ça va mais réussir à isoler le nom du groupe et enlever des caractères, je ne vois pas du tout comment faire.
Le nom du groupe et nommé pareil mais on ne doit pas le modifier donc je ne peux pas prendre le nom du groupe pour le mettre sur la description...
Si quelqu'un pouvez m'aiguiller.
Merci beaucoup à vous
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 1 an 11 mois #32873
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Modification description groupes AD
Salut,
une solution basée sur une expression régulière (regex) :
Mais le problème est de connaitre la convention de nommage pour définir correctement la regex et savoir que faire pour les noms de groupes qui ne respectent pas cette convention.
note : tu peux renommer les noms de capture 'partie1' etc.
une solution basée sur une expression régulière (regex) :
$s="GL_XXX_application"
if ($s -match '^(?<partie1>.*?)_(?<partie2>.*?)_(?<partie3>.*?)$')
{$matches}
else
{ Write-error "'description hors norme : '$s'" }
#$matches renvoie une hashtable:
# Name Value
# ---- -----
# partie3 application
# partie1 GL
# partie2 XXX
# 0 GL_XXX_application
$matches.partie3
Mais le problème est de connaitre la convention de nommage pour définir correctement la regex et savoir que faire pour les noms de groupes qui ne respectent pas cette convention.
note : tu peux renommer les noms de capture 'partie1' etc.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Damien Berthaud
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 1 an 11 mois #32875
par Damien Berthaud
Réponse de Damien Berthaud sur le sujet Modification description groupes AD
O_o c'est magique ! il faut que je me penche sur les regex pour ma culture (si tu as des sites )
Effectivement j'en ai qui ont 5 parties et d'autres 6... j'ai essayé un like à la place du match mais non
Effectivement j'en ai qui ont 5 parties et d'autres 6... j'ai essayé un like à la place du match mais non
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 1 an 11 mois - il y a 1 an 11 mois #32876
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Modification description groupes AD
>> j'ai essayé un like à la place du match mais non
L'opérateur -Like recherche une correspondance ou pas, et c'est tout.
Une regex peut renvoyer un ou + groupes, contenir des alternatives, effectuer une recherches débutant par la fin (sous dotnet), des conditions, être sensible ou non à la casse,...
Bref rien à voir
La doc C#
learn.microsoft.com/fr-fr/dotnet/standar...uage-quick-reference
et celui-ci, niveau avancé, mais explique la notion de consommation dans une regex :
stormimon.developpez.com/dotnet/expressions-regulieres/
>>Effectivement j'en ai qui ont 5 parties et d'autres 6
Reste à connaitre pour chaque cas l'emplacement du texte que tu comptes extraire.
De plus il faut s'assurer que le délimiteur '_' est bien un délimiteur et qu'on ne le retrouvera pas dans du texte.
L'opérateur -Like recherche une correspondance ou pas, et c'est tout.
Une regex peut renvoyer un ou + groupes, contenir des alternatives, effectuer une recherches débutant par la fin (sous dotnet), des conditions, être sensible ou non à la casse,...
Bref rien à voir
La doc C#
learn.microsoft.com/fr-fr/dotnet/standar...uage-quick-reference
et celui-ci, niveau avancé, mais explique la notion de consommation dans une regex :
stormimon.developpez.com/dotnet/expressions-regulieres/
>>Effectivement j'en ai qui ont 5 parties et d'autres 6
Reste à connaitre pour chaque cas l'emplacement du texte que tu comptes extraire.
De plus il faut s'assurer que le délimiteur '_' est bien un délimiteur et qu'on ne le retrouvera pas dans du texte.
Tutoriels PowerShell
Dernière édition: il y a 1 an 11 mois par Laurent Dardenne.
Connexion ou Créer un compte pour participer à la conversation.
- Damien Berthaud
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 1 an 11 mois - il y a 1 an 11 mois #32877
par Damien Berthaud
Réponse de Damien Berthaud sur le sujet Modification description groupes AD
>> Reste à connaitre pour chaque cas l'emplacement du texte que tu comptes extraire.
Hum je vois. enfaite, des groupes d'applications ont 5 parties GL_APP_SCCM_APP_application et d'autres où la version à changée, sont nommées GL_APP_SCCM_APP_application_M1. donc dans tous les cas, c'est la cinquième partie qu'il me faut mais si je met 6 parties, le remplacement part en live et il me colle plus la bonne "partie" sur la description de ceux qui n'en n'ont que 5...
Ne serait-ce pas plus simple de supprimer le début (16 caractères) et la fin (3 caractères SEULEMENT si "_M*" existe ? (oui car il y a des _M1, _M2 etc se serait trop facile sinon )
>>De plus il faut s'assurer que le délimiteur '_' est bien un délimiteur et qu'on ne le retrouvera pas dans du texte.
'_' est bien un délimiteur et seulement un délimiteur dans le nommage des groupes
Voilà ce que je tente pour le moment :
[:code]
If ($s -contains '_M*')
{
$s1 = $s.substring(16,$s.length -16)
$s2 = $s1.substring(0,$s1.length -3)
Set-ADGroup $svGroup -description $appli.substring(0,$s1.length -3)
}
else
{
continue
}
[:code]
mais il ne trouve pas le _M* pour le moment
Hum je vois. enfaite, des groupes d'applications ont 5 parties GL_APP_SCCM_APP_application et d'autres où la version à changée, sont nommées GL_APP_SCCM_APP_application_M1. donc dans tous les cas, c'est la cinquième partie qu'il me faut mais si je met 6 parties, le remplacement part en live et il me colle plus la bonne "partie" sur la description de ceux qui n'en n'ont que 5...
Ne serait-ce pas plus simple de supprimer le début (16 caractères) et la fin (3 caractères SEULEMENT si "_M*" existe ? (oui car il y a des _M1, _M2 etc se serait trop facile sinon )
>>De plus il faut s'assurer que le délimiteur '_' est bien un délimiteur et qu'on ne le retrouvera pas dans du texte.
'_' est bien un délimiteur et seulement un délimiteur dans le nommage des groupes
Voilà ce que je tente pour le moment :
[:code]
If ($s -contains '_M*')
{
$s1 = $s.substring(16,$s.length -16)
$s2 = $s1.substring(0,$s1.length -3)
Set-ADGroup $svGroup -description $appli.substring(0,$s1.length -3)
}
else
{
continue
}
[:code]
mais il ne trouve pas le _M* pour le moment
Dernière édition: il y a 1 an 11 mois par Damien Berthaud.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 1 an 11 mois #32880
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Modification description groupes AD
>>Ne serait-ce pas plus simple de supprimer le début (16 caractères) et la fin (3 caractères SEULEMENT si "_M*" existe ? (oui car il y a des _M1, _M2 etc se serait trop facile sinon )
Peut être, mais je ne connais pas ton environnement, ni les données à analyser.
Une solution :
>>mais il ne trouve pas le _M* pour le moment
L'opérateur -Contains ne gère pas les jokers, comme -Like le propose.
Peut être, mais je ne connais pas ton environnement, ni les données à analyser.
Une solution :
$ErrorView='CategoryView'
$T='Hors norme_test','GL_APP_SCCM_APP','GL_APP_SCCM_APP_applicationUN','GL_APP_SCCM_APP_applicationDEUX_M1'
Foreach ($GroupName in $T) {
# ((?<Postfixe>_.*){0,1})$ : Capture nommée optionnelle ({0,1}), présente en fin de chaîne ('$').
if ($GroupName -match '^(?<partie1>.*?)_(?<partie2>.*?)_(?<partie3>.*?)_(?<partie4>.*?)_(?<Application>.*?)((?<Postfixe>_.*){0,1})$')
{
#$matches
Write-host "Application : '$($matches.Application)'"
# ici $Matches.0 = $groupName
If ($matches.postFixe -ne $null)
{ write-warning "postfixe ('$($matches.Postfixe)') présent pour '$($Matches.0)'" }
}
else
{ Write-Error -Message 'Nommage de groupe hors norme' -Category InvalidData -TargetObject $GroupName }
}
>>mais il ne trouve pas le _M* pour le moment
L'opérateur -Contains ne gère pas les jokers, comme -Like le propose.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.122 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Modification description groupes AD