Question Aide pour manipulation de chaine de caractère et +

Plus d'informations
il y a 13 ans 3 mois #13232 par DarKZoNe
Bonjour tout le monde! Je suis présentement un étudiant en stage dans un hôpital et je dois faire un script en PowerShell qui va mettre à jour les informations des utilisateurs dans l'Active Directory (Principalement le nom, prénom et l'adresse courriel) sur un Windows 2003 serveur SP 2 avec Powershell 2.0 . Mon problème est que le fichier .csv que j'ai reçu contient le nom ET le prénom dans le même champ \"Nom\"
Ex: Carrier , Yves

Bien qu'il est facile en Batch de régler ce problème, je n'ai aucune idée comment manipuler une chaine de caractère comme en Batch avec les délimiteurs.

De plus, je dois faire une recherche du nom d'usager dans l'active directory. La nomenclature utilisé est: 3 premières lettres du nom + 3 premières lettres du prénom + 01
Ex: caryve01 (notez que tout est en minuscule mais je sais déjà comment faire).

J'ai déjà un bout de script qui me permet de modifier les informations des utilisateurs mais le problème est que je dois écrire exactement où se trouve l'utilisateur alors qu'il peut se trouver dans 1 des 6 unités organisationnelle différentes (OU) plutôt que de faire une recherche dans tout le domaine.
Ex:
$objUser = [ADSI]“LDAP://CN=YvesCarrier,OU=TestOU,DC=TESTHSC,DC=COM”
$objUser.put(“mail”, “Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.”)
$objUser.setInfo()


Si quelqu'un peut m'aider, ce serais extrêmement apprécié! Merci d'avance!

PS: J'utilise un domaine fictif (TESTHSC.COM) sur une machine virtuelle. Donc je n'ai aucun problème à créer et supprimer des utilisateurs si nécessaire!<br><br>Message édité par: DarKZoNe, à: 6/12/12 15:07

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

Plus d'informations
il y a 13 ans 3 mois #13234 par Richard Lazaro
Alors le mieux, ça va être de séparer les différentes taches. Car là (je suis un peu fatigué) mais tout à l'air fouilli.

Pour éclater une chaine de caractère en fonction d'un delimiteur. Il faut utiliser la méthode Split() (cette méthode retourne un tableau)

[code:1]
$value = \&quot;Carrier , Yves\&quot;
$nom = $value.Split(',')[0]
$prenom = $value.Split(',')[1]
[/code:1]

mais donc, tu risques d'avoir des espaces à la fin du nom. Pour les enlever, il faut utiliser la méthode Trim()

[code:1]
$value = \&quot;Carrier , Yves\&quot;
$nom = $value.Split(',')[0].Trim()
$prenom = $value.Split(',')[1].Trim()
[/code:1]



Pour extraire un morceau du nom et prénom, il faut utiliser la méthode SubString() :

[code:1]
$nom.SubString(0,3)
$prenom.SubString(0,3)
[/code:1]

Mais attention, si tu as un nom ou prenom de moins de 3 lettres, cela va généré une erreur.

Je regarde pour la suite aprés ^^

Think-MS : (Get-Life).Days | %{ Learn-More }

\\&quot;Problems cannot be solved by the same level of thinking that created them.\\&quot; - Albert Einstein

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

Plus d'informations
il y a 13 ans 3 mois #13235 par DarKZoNe
Merci pour cette réponse très rapide! Je vais redonner des nouvelles lorsque j'aurai réussi!

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

Plus d'informations
il y a 13 ans 3 mois #13238 par SiSMik
Question à 2€.

Si tu fais un import-csv avec un delimiter spécifié à ',' ça marcherait pas aussi ?

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

Plus d'informations
il y a 13 ans 3 mois #13242 par DarKZoNe
benduru écrit:

Question à 2€.

Si tu fais un import-csv avec un delimiter spécifié à ',' ça marcherait pas aussi ?

Je ne sais pas, je vais essayer.

Étrangement, l'affichage ne se fait pas correctement

Voici la partie du code qui s'occupe des nom/prénom et courriel:

[code:1]# Importe la liste des utilisateurs à partir du fichier .CSV dans la variable $ListeUtilisateur

$ListeUtilisateur=IMPORT-CSV C:\Users\caryve01\Desktop\Listecompletesansaccents - Copie.csv
# Vérifie chaque ligne du fichier

FOREACH ($Person in $ListeUtilisateur) {

# Crée le prénom, nom et le courrier de l'utilisateur

$NomComplet=$Person.Nom

$Courriel=$Person.AdresseElectronique
$Nom=$NomComplet.Split(',')[0]
$Prenom=$NomComplet.Split(',')[1]

write-host

Write-Host ($Prenom) ($Nom) ($Courriel)

}[/code:1]


Lorsque j'exécute ce code, le variable $Prénom reste vide pour une raison inconnue.


PS: Concernant le paramètre -Delimiter, il ne semble y avoir aucune différence.

Message édité par: DarKZoNe, à: 6/12/12 17:11<br><br>Message édité par: DarKZoNe, à: 6/12/12 17:12

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

Plus d'informations
il y a 13 ans 3 mois #13243 par DarKZoNe
Voici le fichier avec lequel je dois travailler (évidement je n'ai laissé que mon nom pour cause de confidentialité!)
www.mediafire.com/view/?hq15g0iehtteye8

Message édité par: DarKZoNe, à: 6/12/12 17:36

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

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