Question Comparer user et computer dans active directory

Plus d'informations
il y a 10 ans 8 mois #20458 par Fred
Bonjour à tous,
Je suis en train de travailler sur un script de sauvegarde à la fermeture de session utilisateur.
Pour éviter les doublons et ne sauvegarder que l'utilisateur X de la machine X, je tente par powershell d'indiquer que si, dans active directory, le nom de l'utilisateur X apparait dans le champs description de l'ordinateur X, alors il peut lancer la sauvegarde ... sinon fin du script.
J'ai bien testé mes 2 variables séparemment et elles me renvoient les bonnes informations, seulement je cale completement sur la maniere de comparer les chaines de caracteres.
J'ai essayé -match -like -contains ...mais sans résultat hélas ...
Voici mon script pour l'instant :

REM


# verifier concordance user et computer dans AD #
powershell Import-Module ActiveDirectory
$description=Get-ADComputer $env:computername -properties description
$username=Get-ADUser $env:username

if description -notcontains username (goto fin)

pause
:fin


Message édité par: fred31200, à: 13/07/15 14:44<br><br>Message édité par: fred31200, à: 13/07/15 14:46

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

Plus d'informations
il y a 10 ans 8 mois #20460 par Laurent Dardenne
Salut,
donnes-nous un exemple des chaînes qui doivent correspondre et celle qui ne le doivent pas.
S'il existe une règle portant sur le champ description, de la connaitre n'est pas inutile dans ce contexte.

Tutoriels PowerShell

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

Plus d'informations
il y a 10 ans 8 mois #20461 par Fred
pour donner un exemple concret :
en français :
Si la chaine \&quot;DUPONT Stéphane\&quot; apparait dans la chaine de caractère du champs description de l'ordinateur dans active directory alors continue le script sinon fin.

Ca donnerait un truc comme ça avec les variables que j'ai utilisé :

if (champs_description_de_ordinateur_1 -notcontains \&quot;DUPONT Stéphane\&quot;) {goto fin}


Tu indiques que la règle portant sur le champs description n'est pas utile mais pourtant c'est le seul élément sur lequel je m'appuie dans active directory donc je ne comprend pas très bien ?

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

Plus d'informations
il y a 10 ans 8 mois #20465 par Laurent Dardenne
fred31200 écrit:

je ne comprend pas très bien ?

Je demandais de l'expliciter si besoin.

Pour le code tu peux faire ceci :
[code:1]
#insensible à la casse
'Description DUPONT Stéphane *--'.IndexOf('DUPONT StéphanE', [System.StringComparison]::O
rdinalIgnoreCase) -gt 0
#True

'Description DUPONT Stéphane *--'.IndexOf('DUPONT Robert', [System.StringComparison]::O
rdinalIgnoreCase) -gt 0
#False
[/code:1]
La méthode String.Contains() étant sensible à la casse.

Tu peux aussi utiliser l'opérateur -Match, sous réserve d'échapper les caractères du mot recherché :
[code:1]
[regex]::Escape('M. Dupont Rene')
[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 10 ans 8 mois #20466 par Fred
Ok dans le code que tu me proposes, la variable est rentrée en dur mais si je remplace l'utilisateur par la variable que j'ai généré cela fonctionne aussi ?
exemple :

#insensible à la casse
'description *--'.IndexOf('username', [System.StringComparison]::O
rdinalIgnoreCase) -gt 0
#True

'description *--'.IndexOf('*', [System.StringComparison]::O
rdinalIgnoreCase) -gt 0
#False


(description et username etant les variable que j'essai de récupérer depuis active directory.)

Merci pour ton aide en tout cas et la piste de recherche que tu m'apportes.

Pour expliquer le contexte plus precisément, je souhaite mettre un script de sauvegarde a la fermeture de session utilisateur. Seulement je veux que le script ne se lance que pour l'utilisateur qui utilise le pc. or pour l'instant mon probleme c'est que si j'installe le script sur plusieurs postes et que l'utilisateur se connecte sur un autre pc ou le script est installé ...la sauvegarde se lance et écrase celle de son pc habituel.. je ne sais pas si je suis très clair mais j'essaies en tout cas ^^

Message édité par: fred31200, à: 14/07/15 18:44

Message édité par: fred31200, à: 14/07/15 18:45

Message édité par: fred31200, à: 14/07/15 18:50<br><br>Message édité par: fred31200, à: 14/07/15 18:51

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

Plus d'informations
il y a 10 ans 8 mois #20467 par Laurent Dardenne
fred31200 écrit:

si je remplace l'utilisateur par la variable que j'ai généré cela fonctionne aussi ?

Oui, sous réserve que la variable ou la propriété de la variable que tu cible soit du type String.
fred31200 écrit:

je ne sais pas si je suis très clair

C'est limpide :)

Tutoriels PowerShell

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

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