Question Modification massive d'attributs

Plus d'informations
il y a 6 ans 4 mois #29351 par Walter
Réponse de Walter sur le sujet Re:Modification massive d'attributs
ça n'a pas l'air de fonctionner malheureusement.

Voila le message que j'ai si j'enlève les pipelines (si ça peut aider)


image.noelshack.com/fichiers/2019/43/7/1...ndows-powershell.jpg

Message édité par: Wbishop13, à: 27/10/19 16:15<br><br>Message édité par: Wbishop13, à: 27/10/19 16:16

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

  • matteu
  • Visiteur
  • Visiteur
il y a 6 ans 4 mois #29352 par matteu
Réponse de matteu sur le sujet Re:Modification massive d'attributs
Bonjour,

Je me suis penché sur votre problème.

Voici le code fonctionnel :
[code:1]
Import-Module ActiveDIrectory
import-csv C:\ANNUAIRE\SOLOAD.csv -Delimiter \&quot;;\&quot;| foreach {
set-ADuser -identity $_.sAMAccountName -Replace @{extensionAttribute8=\&quot;$($_.extensionAttribute8)\&quot;}
}[/code:1]

J'ai remanier un peu votre script.
-Il est nécessaire de spécifier le séparateur des champs du CSV qui dans votre cas est un \&quot;;\&quot; alors que par défaut import-csv utilise la \&quot;,\&quot;.
docs.microsoft.com/en-us/powershell/modu...sv?view=powershell-6

-La commande remplacera le champ extensionAttribute8 présent par celui du fichier CSV.

A améliorer :

1)Journalisation :
Actuellement il n'y a rien qui log les changements effectués. Cela serait mieux d'envoyer vers un fichier que l'utilisateur \&quot;X\&quot; a bien l'attribut8 qui a été mis à jour par la valeur \&quot;Y\&quot; quand ça fonctionne et qu'il y a eu une erreur lorsque cela ne fonctionne pas.

2)Gestion d'erreur :
-Si le compte qui exécute le script n'a pas les droits
-Si vous faites une erreur dans le fichier CSV et qu'un compte utilisateur n'existe pas par exemple, le script ne traitera pas cet utilisateur.


N'hésitez pas si vous avez d'autres besoin, je me ferai un plaisir de vous aider car je cherche justement des exercices :)

En espérant vous avoir aider :)<br><br>Message édité par: matteu, à: 28/10/19 16:46

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

Plus d'informations
il y a 6 ans 4 mois #29358 par Walter
Réponse de Walter sur le sujet Re:Modification massive d'attributs
Merci beaucoup, je suis justement un tout nouvel arrivant dans le domaine du powershell.
Comment journaliser mes actions ? J'avoue que ça m'aiderais, les modifs pouvant mettre du temps à être effectives sur l'AD

Autre chose, tatonnant vraiment, on est bien d'accord que ces commandes modifieront les attributs, uniquement si le sAMAccount name présent sur l'AD est identique à celui présent dans le fichier ?


Cordialement

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

Plus d'informations
il y a 6 ans 4 mois #29359 par Walter
Réponse de Walter sur le sujet Re:Modification massive d'attributs
Malheureusement voila l'erreur qui me remonte

image.noelshack.com/fichiers/2019/44/2/1...ndows-powershell.jpg

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

  • matteu
  • Visiteur
  • Visiteur
il y a 6 ans 4 mois #29361 par matteu
Réponse de matteu sur le sujet Re:Modification massive d'attributs
Vous n'avez pas du tout utiliser le dernier modèle de script que je vous ai fourni puisqu'il n'y a pas de get dans le mien.

Si l'utilisateur n'existe pas dans l'AD, il y aura une erreur.<br><br>Message édité par: matteu, à: 29/10/19 16:27

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

  • matteu
  • Visiteur
  • Visiteur
il y a 6 ans 4 mois #29363 par matteu
Réponse de matteu sur le sujet Re:Modification massive d'attributs
Voilà une version avec journalisation.
Je suis désolé, ce n'est pas du tout parfait et très probablement perfectible. Je ne sais pas vraiment quelle est la bonne façon de faire donc j'ai fais un peu comme je pense.


Il est nécessaire que vous modifier les variable logfile et csv file pour les faire correspondre à ce que vous souhaitez.

[code:1]

#Date actuelle
$date = (Get-Date).toString(\&quot;ddMMyy_HHmmss\&quot;«»)
#Emplacement du fichier de log
$Logfile = \&quot;C:\ChangeAttribute8_$date.log\&quot;
#Emplacement du fichier CSV qui contient les comptes AD et la valeur de l'attribut extensionAttribute8
$CSVFile = \&quot;c:\users.csv\&quot;

#Fonction qui permet de journaliser les actions dans le fichier de log
#Si un paramètre info est passé, alors la fonction inscrira information dans la ligne du fichier
#Si un paramètre error est passé, alors la fonction inscrira error dans la ligne du fichier
Function LogWrite
{
Param ([string]$logstring,[string]$logErrorLevel)
$TimeStamp = (Get-Date).toString(\&quot;dd/MM/yy HH:mm:«»ss\&quot;«»)

if ($logErrorLevel)
{
if($logErrorLevel -eq \&quot;info\&quot;«»)
{
Add-content $Logfile -value \&quot;$TimeStamp - INFORMATION - $logstring\&quot;
}
if ($logErrorLevel -eq \&quot;error\&quot;«»)
{
Add-content $Logfile -value \&quot;$TimeStamp - ERROR - $logstring\&quot;
}
}
else
{
Add-content $Logfile -value \&quot;$TimeStamp $logstring\&quot;
}
}

Import-Module ActiveDIrectory

#Initialisation du fichier
LogWrite \&quot;
\&quot;
LogWrite \&quot;Lancement du script\&quot;
LogWrite \&quot;
\&quot;
LogWrite -logstring \&quot;Preparation de l'import du fichier CSV $CSVFile\&quot; -logErrorLevel \&quot;info\&quot;

import-csv $CSVFile -Delimiter \&quot;;\&quot; | foreach {
LogWrite -logstring \&quot;Preparation du traitement pour le compte $($_.sAMAccountName)\&quot; -logErrorLevel \&quot;info\&quot;
#Mofidication de l'attribut extensionAttribute8
set-ADuser -identity $_.sAMAccountName -Replace @{extensionAttribute8=\&quot;$($_.extensionAttribute8)\&quot;}
#Si la commande a réussi on écrit que c'est ok dans le fichier, sinon on affiche l'erreur.
if ($?)
{
LogWrite -logstring \&quot;La valeur extensionAttribute8 a ete correctement mise a jour par $($_.extensionAttribute8) pour le compte $($_.sAMAccountName).\&quot; -logErrorLevel \&quot;info\&quot;
}
else
{
LogWrite -logstring \&quot;La valeur extensionAttribute8 n'a pas ete mise a jour par $($_.extensionAttribute8) pour le compte $($_.sAMAccountName).\&quot; -logErrorLevel \&quot;error\&quot;
LogWrite -logstring \&quot;L'erreur est : $Error[0]\&quot; -logErrorLevel \&quot;error\&quot;
}
}

LogWrite \&quot;
\&quot;
LogWrite \&quot;Fin du traitement du fichier CSV\&quot;
LogWrite \&quot;
\&quot;
[/code:1]

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

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