From d0cbe3dc22c48f0859cbe4a54ee60705a726cec8 Mon Sep 17 00:00:00 2001 From: damdupre Date: Wed, 7 Aug 2024 07:11:22 +0200 Subject: [PATCH 01/11] gestion pc via gpo --- gestion pc ou.md | 56 ++++++++++++++++++++++++++++++++++++++++ mapping.json | 44 +++++++++++++++++++++++++++++++ placepc.ps1 | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 167 insertions(+) create mode 100644 gestion pc ou.md create mode 100644 mapping.json create mode 100644 placepc.ps1 diff --git a/gestion pc ou.md b/gestion pc ou.md new file mode 100644 index 0000000..d5a2744 --- /dev/null +++ b/gestion pc ou.md @@ -0,0 +1,56 @@ +# Placement automatique des poste client +## Prérequi +- Script powreshell +- GPO +## Scriipt powershell +Le script s'executera lors de la jonction du poste client au domaine, il prendra la liste du fichier **mapping.json** qu'il faut modifier en fonction des services. +Ce script déterminera le service auquel l'ordinateur appartient et il déplacera l'objet ordinateur dans l'OU appropriée. +Le script et le fichier mapping doivent être dans un dossier partager accéssible au ordinateur du domaine. + +### 1. Création de la GPO : + + a. Ouvrez la console "Group Policy Management" (gpmc.msc). + b. Faites un clic droit sur votre domaine ou sur une OU spécifique. + c. Sélectionnez "Créer un objet GPO dans ce domaine,et le lier ici...". + d. Nommez la GPO . + +### 2. Configuration de la GPO : + + a. Éditez la nouvelle GPO. + b. Naviguez vers : Configuration ordinateur > Stratégies > Paramètres Windows > Scripts (Démarrage/Arrêt du système). + c. Double-cliquez sur "Demarrage". + d. Cliquez sur "Ajouter". + e. Dans "Nom du script", entrez : powershell.exe + f. Dans "Paramètres d scripts", entrez : -ExecutionPolicy Bypass -File ```"\\chemin vers le script.ps1"``` + +### 3. Configuration des permissions : + + a. Assurez-vous que les poste client ont accès en lecture au script et au dossier qui le contient. + b. Donnez les permissions nécessaires pour le dossier de logs et le fichier de configuration. + +### 4. Application de la GPO : + + a. Si vous avez créé la GPO au niveau du domaine, elle s'appliquera à tous les ordinateurs. + b. Pour cibler des OUs spécifiques, liez la GPO à ces OUs. + +## Application aux PC déjà joints au domaine : + + a. La GPO s'appliquera automatiquement lors du prochain redémarrage des PC. + b. Pour forcer l'application sans redémarrage : + - Sur chaque PC, ouvrez une invite de commande en tant qu'administrateur. + - Exécutez : `gpupdate /force` + - Puis exécutez : `shutdown /r /t 0` pour redémarrer directement(nécessaire pour les scripts de démarrage). + +### Vérification : + + a. Sur un PC test, exécutez `gpresult /r` pour vérifier que la GPO est appliquée. + b. Vérifiez les logs du script pour confirmer son exécution. + +### Dépannage : + + a. Utilisez "Group Policy Results" dans la console GPMC pour diagnostiquer les problèmes. + b. Vérifiez les journaux d'événements Windows sur les PC clients. + + +Cette approche permet non seulement d'appliquer la GPO aux nouveaux PC rejoignant le domaine, mais aussi de réorganiser les PC existants dans les bonnes OUs. + diff --git a/mapping.json b/mapping.json new file mode 100644 index 0000000..b95719f --- /dev/null +++ b/mapping.json @@ -0,0 +1,44 @@ +{ + "services": [ + { + "prefix": "Fin[0-9]{3}", + "name": "Direction Financiere" + }, + { + "prefix": "Ven[0-9]{3}", + "name": "Ventes et Developpement Commercial" + }, + { + "prefix": "Com[0-9]{3}", + "name": "Communication" + }, + { + "prefix": "RH[0-9]{3}", + "name": "RH" + }, + { + "prefix": "Dsi[0-9]{3}", + "name": "DSI" + }, + { + "prefix": "Jur[0-9]{3}", + "name": "Service Juridique" + }, + { + "prefix": "Dg[0-9]{3}", + "name": "Direction Generale" + }, + { + "prefix": "Mar[0-9]{3}", + "name": "Direction Marketing" + }, + { + "prefix": "RD[0-9]{3}", + "name": "R&D" + }, + { + "prefix": "Gen[0-9]{3}", + "name": "Service Generaux" + } + ] +} \ No newline at end of file diff --git a/placepc.ps1 b/placepc.ps1 new file mode 100644 index 0000000..45437cf --- /dev/null +++ b/placepc.ps1 @@ -0,0 +1,67 @@ +# Script de placement automatique des ordinateurs dans les OU appropriées +# Nom du fichier : PlacePC.ps1 + +# Importation du module Active Directory +Import-Module ActiveDirectory + +# Définition des variables +$computerName = $env:COMPUTERNAME +$domainName = "dams.lan" +$logPath = "\\WIN-SERV22\log$\placement_pc.log" +$configPath = "\\WIN-SERV22\ressources\mapping.json" + +# Fonction de journalisation +function Log-Message { + param([string]$message) + $logEntry = "$(Get-Date) - $message" + Add-Content -Path $logPath -Value $logEntry + Write-Host $logEntry +} + +# Chargement de la configuration +try { + $config = Get-Content $configPath -ErrorAction Stop | ConvertFrom-Json + Log-Message "Configuration chargée avec succès" +} +catch { + Log-Message "Erreur lors du chargement de la configuration : $_" + exit +} + +# Détermination du service +$service = $config.services | Where-Object { $computerName -like $_.prefix } | Select-Object -ExpandProperty name -First 1 + +if (-not $service) { + $service = "AutresServices" + Log-Message "Aucun service correspondant trouvé pour $computerName. Utilisation de 'AutresServices'" +} +else { + Log-Message "Service déterminé pour $computerName : $service" +} + +# Gestion des cas spéciaux +if ($computerName -like "SRV*") { + $ouPath = "OU=Serveurs,DC=$($domainName.Split('.')[0]),DC=$($domainName.Split('.')[1])" + Log-Message "Ordinateur $computerName identifié comme serveur" +} +else { + $ouPath = "OU=$service,OU=Ordinateurs,DC=$($domainName.Split('.')[0]),DC=$($domainName.Split('.')[1])" +} + +# Vérification de l'existence de l'OU et déplacement de l'objet +try { + if (Get-ADOrganizationalUnit -Filter "DistinguishedName -eq '$ouPath'" -ErrorAction Stop) { + $computerDN = (Get-ADComputer $computerName).DistinguishedName + Move-ADObject -Identity $computerDN -TargetPath $ouPath -ErrorAction Stop + Log-Message "Ordinateur $computerName déplacé avec succès dans $ouPath" + } + else { + throw "L'OU $ouPath n'existe pas" + } +} +catch { + Log-Message "Erreur lors du déplacement de l'ordinateur : $_" + Log-Message "L'ordinateur $computerName reste dans son emplacement actuel" +} + +Log-Message "Opération terminée pour $computerName" \ No newline at end of file From d9c32068456790c0144fe5acf5d76feb39deafb2 Mon Sep 17 00:00:00 2001 From: damdupre Date: Wed, 7 Aug 2024 16:10:29 +0200 Subject: [PATCH 02/11] Update gestion pc ou.md --- gestion pc ou.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gestion pc ou.md b/gestion pc ou.md index d5a2744..dbd53b6 100644 --- a/gestion pc ou.md +++ b/gestion pc ou.md @@ -1,3 +1,8 @@ +
+ +![logo](https://github.com/WildCodeSchool/TSSR-2405-P3-G3-BuildYourInfra-Ekoloclast/blob/s04/ressources/charte/ekoloclasttitreok.png) + +
# Placement automatique des poste client ## Prérequi - Script powreshell From 9995b03ee7001ec4e5ae361b6c4351131994eb51 Mon Sep 17 00:00:00 2001 From: jeromeD Date: Fri, 9 Aug 2024 10:05:00 +0200 Subject: [PATCH 03/11] Nouveau Script Semaine 5 --- Nouveau Script Semaine 5 | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Nouveau Script Semaine 5 diff --git a/Nouveau Script Semaine 5 b/Nouveau Script Semaine 5 new file mode 100644 index 0000000..e6af328 --- /dev/null +++ b/Nouveau Script Semaine 5 @@ -0,0 +1,7 @@ +#Mise a jour de l'Active Directory par l'intermediaire d'un fichier .CSV + +##Nouveau fichier .CSV avec des nouveaux employés ,des modifications d'utilisateurs et des changements de noms de departements + +Pour commencer je dois charger mon module active directory de mon serveur pour interagir avec lui a l'execution du script + + From 38c551930b988c3d8c2a358fe4967422057f5979 Mon Sep 17 00:00:00 2001 From: jeromeD Date: Fri, 9 Aug 2024 10:28:18 +0200 Subject: [PATCH 04/11] Nouveau Script Semaine 5 --- Nouveau Script Semaine 5 | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Nouveau Script Semaine 5 b/Nouveau Script Semaine 5 index e6af328..064f59a 100644 --- a/Nouveau Script Semaine 5 +++ b/Nouveau Script Semaine 5 @@ -4,4 +4,34 @@ Pour commencer je dois charger mon module active directory de mon serveur pour interagir avec lui a l'execution du script +![charg AD](https://github.com/user-attachments/assets/1e59f796-decd-4010-a1a9-f2ed7cd2ee2c) + + +Je commence par renommer les OU a modifier car avec le nouveau fichier .CSV les utilisateurs apparaissent avec le nouveau nom de leur OU et je depalce par la meme occasion l'OU "formation" dans le departement DSI + +![renom OU et deplacement](https://github.com/user-attachments/assets/8a867c82-31bd-4ec5-b36f-f4c47ceab827) + + +Je charge les deux fichiers .CSV pour trouver les employés qui sont partis et les nouveaux arrivants +Je crée egalement un fichier ,que je nomme employes_partis, avec le nom des employés qui ne sont plus dans l'entreprise + +![comparaison de fichiers](https://github.com/user-attachments/assets/2de7cba3-e92f-4f5a-84c7-6516c4b91dd0) + + +Nous avons decidé de changer le login des employés par la premiere lettre de leur prenom ainsi que leur nom suivis d'un nombre aleatoire + + +![login](https://github.com/user-attachments/assets/98af1091-39d5-431a-b3c7-339b9aa7c09b) + + +Je fais la mise a jour des employés dans mon Active Directory grace au fichier .CSV + +![MAJ AD](https://github.com/user-attachments/assets/e9eedce7-c2e7-4014-884b-b3f0ec5c1ac0) + + +Je termine en desactivant les comptes utilisateurs qui ne font plus partis de l'entreprise grace au fichier employes_partis créé precedemment + +![employes partis](https://github.com/user-attachments/assets/30bd957f-7b93-4f63-b163-56350a8ef99b) + + From 404d1a31126c8bc74f3293faaeec0765b3ac5afd Mon Sep 17 00:00:00 2001 From: jeromeD Date: Fri, 9 Aug 2024 11:23:06 +0200 Subject: [PATCH 05/11] Nouveau Script Semaine 5 --- Nouveau Script Semaine 5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Nouveau Script Semaine 5 b/Nouveau Script Semaine 5 index 064f59a..d7a04b1 100644 --- a/Nouveau Script Semaine 5 +++ b/Nouveau Script Semaine 5 @@ -1,4 +1,4 @@ -#Mise a jour de l'Active Directory par l'intermediaire d'un fichier .CSV +#Mise a jour de l'Active Directory par l'intermediaire d'un fichier .CSV ##Nouveau fichier .CSV avec des nouveaux employés ,des modifications d'utilisateurs et des changements de noms de departements From c17f1dc7c3490c391f349f5fcdd95b6b0eff74f7 Mon Sep 17 00:00:00 2001 From: damdupre Date: Thu, 5 Sep 2024 17:29:52 +0200 Subject: [PATCH 06/11] Create guide_script.md --- guide_script.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 guide_script.md diff --git a/guide_script.md b/guide_script.md new file mode 100644 index 0000000..52f81c2 --- /dev/null +++ b/guide_script.md @@ -0,0 +1,37 @@ +# Mise à jour de l'Active Directory par l'intermédiaire d'un fichier .CSV +## Introduction +Ce script est conçu pour mettre à jour l'Active Directory en utilisant un fichier .CSV. Le fichier .CSV contient des informations sur les nouveaux employés, les modifications d'utilisateurs existants et les changements de noms de départements. + +## Étapes du Script +1. Chargement du Module Active Directory +Le script commence par charger le module Active Directory sur le serveur. Cela permet d'interagir avec l'Active Directory pendant l'exécution du script. + +![charg AD](https://github.com/user-attachments/assets/1e59f796-decd-4010-a1a9-f2ed7cd2ee2c) + +2. Renommage des OU et Déplacement +Le script renomme les unités d'organisation (OU) à modifier. Les utilisateurs apparaissent avec le nouveau nom de leur OU dans le fichier .CSV. De plus, l'OU "formation" est déplacée dans le département DSI. + +![renom OU et deplacement](https://github.com/user-attachments/assets/8a867c82-31bd-4ec5-b36f-f4c47ceab827) + +3. Chargement des Fichiers .CSV et Comparaison +Le script charge deux fichiers .CSV : l'un contenant les informations actuelles et l'autre contenant les nouvelles informations. Il compare ces fichiers pour identifier les employés qui sont partis et les nouveaux arrivants. Un fichier nommé employes_partis est créé avec le nom des employés qui ne sont plus dans l'entreprise. + +![comparaison de fichiers](https://github.com/user-attachments/assets/2de7cba3-e92f-4f5a-84c7-6516c4b91dd0) + +4. Modification des Logins des Employés +Le script modifie les logins des employés. Les nouveaux logins sont générés en utilisant la première lettre du prénom de l'employé, suivie de leur nom et d'un nombre aléatoire. + +![login](https://github.com/user-attachments/assets/98af1091-39d5-431a-b3c7-339b9aa7c09b) + +5. Mise à Jour des Employés dans l'Active Directory +Le script met à jour les informations des employés dans l'Active Directory en utilisant les données du fichier .CSV. + +![MAJ AD](https://github.com/user-attachments/assets/e9eedce7-c2e7-4014-884b-b3f0ec5c1ac0) + +6. Désactivation des Comptes Utilisateurs Partis +Enfin, le script désactive les comptes des utilisateurs qui ne font plus partie de l'entreprise. Cette action est basée sur le fichier employes_partis créé précédemment. + +![employes partis](https://github.com/user-attachments/assets/30bd957f-7b93-4f63-b163-56350a8ef99b) + +Conclusion +Ce script automatise la mise à jour de l'Active Directory en utilisant un fichier .CSV, ce qui permet de gérer efficacement les nouveaux employés, les modifications d'utilisateurs et les changements de noms de départements. \ No newline at end of file From bb319c72fb65cd5e4b16ff1deac60bf47930fe46 Mon Sep 17 00:00:00 2001 From: damdupre Date: Thu, 5 Sep 2024 17:30:53 +0200 Subject: [PATCH 07/11] Rename Nouveau Script Semaine 5 to Mise a jour AD.ps1 --- Nouveau Script Semaine 5 => Mise a jour AD.ps1 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Nouveau Script Semaine 5 => Mise a jour AD.ps1 (100%) diff --git a/Nouveau Script Semaine 5 b/Mise a jour AD.ps1 similarity index 100% rename from Nouveau Script Semaine 5 rename to Mise a jour AD.ps1 From 506db12bbd7ab86c357aef1c0aed5f42eada55bc Mon Sep 17 00:00:00 2001 From: damdupre Date: Thu, 5 Sep 2024 17:31:27 +0200 Subject: [PATCH 08/11] Rename Mise a jour AD.ps1 to Mise a jour AD.md --- Mise a jour AD.ps1 => Mise a jour AD.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Mise a jour AD.ps1 => Mise a jour AD.md (100%) diff --git a/Mise a jour AD.ps1 b/Mise a jour AD.md similarity index 100% rename from Mise a jour AD.ps1 rename to Mise a jour AD.md From 81cdf477438330b70bb4dbdb7acb245355293b22 Mon Sep 17 00:00:00 2001 From: damdupre Date: Thu, 5 Sep 2024 17:32:41 +0200 Subject: [PATCH 09/11] Delete Mise a jour AD.md --- Mise a jour AD.md | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 Mise a jour AD.md diff --git a/Mise a jour AD.md b/Mise a jour AD.md deleted file mode 100644 index d7a04b1..0000000 --- a/Mise a jour AD.md +++ /dev/null @@ -1,37 +0,0 @@ -#Mise a jour de l'Active Directory par l'intermediaire d'un fichier .CSV - -##Nouveau fichier .CSV avec des nouveaux employés ,des modifications d'utilisateurs et des changements de noms de departements - -Pour commencer je dois charger mon module active directory de mon serveur pour interagir avec lui a l'execution du script - -![charg AD](https://github.com/user-attachments/assets/1e59f796-decd-4010-a1a9-f2ed7cd2ee2c) - - -Je commence par renommer les OU a modifier car avec le nouveau fichier .CSV les utilisateurs apparaissent avec le nouveau nom de leur OU et je depalce par la meme occasion l'OU "formation" dans le departement DSI - -![renom OU et deplacement](https://github.com/user-attachments/assets/8a867c82-31bd-4ec5-b36f-f4c47ceab827) - - -Je charge les deux fichiers .CSV pour trouver les employés qui sont partis et les nouveaux arrivants -Je crée egalement un fichier ,que je nomme employes_partis, avec le nom des employés qui ne sont plus dans l'entreprise - -![comparaison de fichiers](https://github.com/user-attachments/assets/2de7cba3-e92f-4f5a-84c7-6516c4b91dd0) - - -Nous avons decidé de changer le login des employés par la premiere lettre de leur prenom ainsi que leur nom suivis d'un nombre aleatoire - - -![login](https://github.com/user-attachments/assets/98af1091-39d5-431a-b3c7-339b9aa7c09b) - - -Je fais la mise a jour des employés dans mon Active Directory grace au fichier .CSV - -![MAJ AD](https://github.com/user-attachments/assets/e9eedce7-c2e7-4014-884b-b3f0ec5c1ac0) - - -Je termine en desactivant les comptes utilisateurs qui ne font plus partis de l'entreprise grace au fichier employes_partis créé precedemment - -![employes partis](https://github.com/user-attachments/assets/30bd957f-7b93-4f63-b163-56350a8ef99b) - - - From 422d7f246fe9148e735cef74d8b6dfafe17fd0f2 Mon Sep 17 00:00:00 2001 From: jeromeD Date: Wed, 11 Sep 2024 17:18:19 +0200 Subject: [PATCH 10/11] Add files via upload --- doc pour nouvelle liste AD.md | 206 ++++++++++++++++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 doc pour nouvelle liste AD.md diff --git a/doc pour nouvelle liste AD.md b/doc pour nouvelle liste AD.md new file mode 100644 index 0000000..74c617c --- /dev/null +++ b/doc pour nouvelle liste AD.md @@ -0,0 +1,206 @@ +
+ +![logo](https://github.com/WildCodeSchool/TSSR-2405-P3-G3-BuildYourInfra-Ekoloclast/blob/s04/ressources/charte/ekoloclasttitreok.png) + +
+ +# Documentation du Script PowerShell pour l'Ajout de Dossiers Personnels +Ce script PowerShell est destiné à automatiser la création de dossiers personnels pour les utilisateurs dans un environnement Active Directory. Il prend en charge l'importation de données utilisateurs depuis un fichier CSV et crée les dossiers correspondants dans une structure de répertoires basée sur les unités organisationnelles (OU) définies dans Active Directory. + +## Sommaire +1.[Vérification et Chargement du Module Active Directory](#1-vérification-et-chargement-du-module-active-directory) +2.[Importation des Données depuis le Fichier CSV](#2-importation-des-données-depuis-le-fichier-csv) +3.[Vérification de l'OU Parent dans Active Directory](#3-vérification-de-lou-parent-dans-active-directory) +4.[Création de Dossiers Basée sur la Structure des OU](#4-création-de-dossiers-basée-sur-la-structure-des-ou) +5.[Création des Dossiers Personnels des Utilisateurs](#5-création-des-dossiers-personnels-des-utilisateurs) +## 1. Vérification et Chargement du Module Active Directory +Code : + +```ps1 +if (-not (Get-Module -Name ActiveDirectory)) { + if (Get-Module -ListAvailable -Name ActiveDirectory) { + Import-Module -Name ActiveDirectory + } else { + Write-Host "Le module Active Directory n'est pas disponible sur ce système." + exit 1 + } +} + +Write-Host "Module Active Directory chargé avec succès." +``` +**Explication** : + +***Objectif*** : Vérifier que le module ActiveDirectory est disponible et le charger. Ce module est essentiel pour interagir avec les objets Active Directory dans PowerShell. + +**Fonctionnement** : + +La commande `Get-Module -Name ActiveDirectory` vérifie si le module est déjà chargé. +Si le module n'est pas chargé, le script essaie de le trouver avec `Get-Module -ListAvailable -Name ActiveDirectory` et l'importe si disponible. +Si le module n'est pas disponible, le script affiche un message d'erreur et s'arrête (exit 1). +**Conclusion** : Cette section garantit que le script dispose des outils nécessaires pour interagir avec Active Directory. + +## 2. Importation des Données depuis le Fichier CSV +Code : + +```ps1 +$csvFilePath = "C:\Users\Administrateur\Documents\Annexe4ok.txt" + +try { + $data = Import-Csv -Path $csvFilePath -Delimiter "," + $lineNumber = 1 + + foreach ($row in $data) { + if ($row -ne $null) { + Write-Host "Ligne $lineNumber :" + foreach ($prop in $row.PSObject.Properties) { + Write-Host " $($prop.Name) : $($prop.Value)" + } + } + $lineNumber++ + } +} catch { + Write-Host "Erreur lors de l'importation du fichier CSV : $_" +} +``` +**Explication** : + +***Objectif*** : Charger les informations des utilisateurs depuis un fichier CSV spécifié par $csvFilePath. + +**Fonctionnement** : + +Le fichier CSV est importé à l'aide de Import-Csv. +Chaque ligne du CSV représente un utilisateur, et les données sont affichées pour vérification. +Si une erreur se produit lors de l'importation du fichier, le script affiche un message d'erreur. + +***Conclusion*** : Cette section du script lit les données des utilisateurs et les prépare pour la création des dossiers. + +## 3. Vérification de l'OU Parent dans Active Directory +Code : + +```ps1 + +$parentOU = "OU=Paris,DC=Projet3,DC=lan" + +try { + $parentOUObject = Get-ADOrganizationalUnit -Identity $parentOU -ErrorAction Stop + Write-Host "L'OU parent '$parentOU' a été trouvé." +} catch { + Write-Host "Erreur : L'OU parent '$parentOU' n'a pas été trouvé. Vérifiez que le DN est correct." + exit 1 +} +``` +**Explication** : + +***Objectif*** : Vérifier l'existence de l'OU parent spécifiée dans Active Directory pour s'assurer que le script peut y accéder. + +**Fonctionnement** : + +La commande `Get-ADOrganizationalUnit -Identity $parentOU` tente de récupérer l'OU parent. +Si l'OU n'est pas trouvée, le script s'arrête avec un message d'erreur pour éviter de continuer sans une base valide. + +***Conclusion*** : Cette étape est cruciale pour garantir que le script peut correctement naviguer dans la structure d'Active Directory. + +## 4. Création de Dossiers Basée sur la Structure des OU +Code : + +```ps1 + +$baseFolderPath = "D:" + +function Create-FoldersForOUs { + param ( + [string]$currentOU, + [string]$currentPath + ) + + try { + $subOUs = Get-ADOrganizationalUnit -Filter * -SearchBase $currentOU -SearchScope OneLevel + } catch { + Write-Host "Erreur lors de l'obtention des sous-OUs de '$currentOU' : $_" + return + } + + foreach ($subOU in $subOUs) { + $ouName = $subOU.Name + $folderPath = Join-Path -Path $currentPath -ChildPath $ouName + + if (-Not (Test-Path -Path $folderPath)) { + try { + New-Item -Path $folderPath -ItemType Directory + Write-Host "Le dossier '$folderPath' a été créé." + } catch { + Write-Host "Erreur lors de la création du dossier '$folderPath': $_" + } + } else { + Write-Host "Le dossier '$folderPath' existe déjà." + } + + Create-FoldersForOUs -currentOU $subOU.DistinguishedName -currentPath $folderPath + } +} + +Create-FoldersForOUs -currentOU $parentOU -currentPath $baseFolderPath +``` +**Explication** : + +***Objectif*** : Créer une structure de dossiers basée sur les sous-OUs de l'OU parent dans Active Directory. + +***Fonctionnement*** : + +La fonction Create-FoldersForOUs est définie pour parcourir récursivement les sous-OUs et créer des dossiers correspondants sur le disque. +Chaque sous-OU devient un dossier sous le chemin spécifié par $currentPath. +Si un dossier existe déjà, il n'est pas recréé, et le script passe à l'OU suivante. + +***Conclusion*** : Cette section permet de refléter la structure de l'OU dans le système de fichiers, facilitant ainsi l'organisation des dossiers. + +## 5. Création des Dossiers Personnels des Utilisateurs +Code : + +```ps1 + +$personalFolderPath = "D:\Dossiers Individuels" + +if (-Not (Test-Path -Path $personalFolderPath)) { + try { + New-Item -Path $personalFolderPath -ItemType Directory + Write-Host "Le dossier de base '$personalFolderPath' a été créé." + } catch { + Write-Host "Erreur lors de la création du dossier de base '$personalFolderPath': $_" + exit 1 + } +} + +foreach ($row in $data) { + if ($row -ne $null) { + $username = $row.Prenom +" "+ $row.Nom + $folderPath = Join-Path -Path $personalFolderPath -ChildPath $username + + if (-Not (Test-Path -Path $folderPath)) { + try { + New-Item -Path $folderPath -ItemType Directory + Set-ADUser -Identity "$username" -HomeDirectory "\\WIN22P3\Dossiers Individuels$\$username" -HomeDrive "I:" + Write-Host "Le dossier '$folderPath' a été créé pour l'utilisateur '$username'." + } catch { + Write-Host "Erreur lors de la création du dossier '$folderPath' pour l'utilisateur '$username': $_" + } + } else { + Write-Host "Le dossier '$folderPath' pour l'utilisateur '$username' existe déjà." + } + } +} +``` +**Explication** : + +***Objectif*** : Créer un dossier personnel pour chaque utilisateur listé dans le fichier CSV sous un chemin de base spécifié. + +***Fonctionnement*** : + +Le script vérifie d'abord si le dossier de base pour les utilisateurs ($personalFolderPath) existe. +S'il n'existe pas, il est créé. +Pour chaque utilisateur dans le fichier CSV, un dossier est créé avec son nom, et ce dossier est assigné comme HomeDirectory dans Active Directory. +Si le dossier existe déjà pour un utilisateur, un message est affiché et le script passe à l'utilisateur suivant. + +***Conclusion*** : Cette étape finalise le processus en créant les dossiers utilisateurs et en configurant leur HomeDirectory dans Active Directory. + +### Conclusion +Ce script est un outil puissant pour les administrateurs système, leur permettant de créer et d'organiser des dossiers utilisateurs en fonction des structures d'Active Directory et des informations extraites d'un fichier CSV. \ No newline at end of file From f35d952ef553154d17387c9f495dbff80a9e0fad Mon Sep 17 00:00:00 2001 From: jeromeD Date: Wed, 11 Sep 2024 17:20:05 +0200 Subject: [PATCH 11/11] Doc pour nouvelle liste AD.md --- doc pour nouvelle liste AD.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc pour nouvelle liste AD.md b/doc pour nouvelle liste AD.md index 74c617c..fa9856d 100644 --- a/doc pour nouvelle liste AD.md +++ b/doc pour nouvelle liste AD.md @@ -8,11 +8,11 @@ Ce script PowerShell est destiné à automatiser la création de dossiers personnels pour les utilisateurs dans un environnement Active Directory. Il prend en charge l'importation de données utilisateurs depuis un fichier CSV et crée les dossiers correspondants dans une structure de répertoires basée sur les unités organisationnelles (OU) définies dans Active Directory. ## Sommaire -1.[Vérification et Chargement du Module Active Directory](#1-vérification-et-chargement-du-module-active-directory) -2.[Importation des Données depuis le Fichier CSV](#2-importation-des-données-depuis-le-fichier-csv) -3.[Vérification de l'OU Parent dans Active Directory](#3-vérification-de-lou-parent-dans-active-directory) -4.[Création de Dossiers Basée sur la Structure des OU](#4-création-de-dossiers-basée-sur-la-structure-des-ou) -5.[Création des Dossiers Personnels des Utilisateurs](#5-création-des-dossiers-personnels-des-utilisateurs) +1.[Vérification et Chargement du Module Active Directory](#1-vérification-et-chargement-du-module-active-directory) +2.[Importation des Données depuis le Fichier CSV](#2-importation-des-données-depuis-le-fichier-csv) +3.[Vérification de l'OU Parent dans Active Directory](#3-vérification-de-lou-parent-dans-active-directory) +4.[Création de Dossiers Basée sur la Structure des OU](#4-création-de-dossiers-basée-sur-la-structure-des-ou) +5.[Création des Dossiers Personnels des Utilisateurs](#5-création-des-dossiers-personnels-des-utilisateurs) ## 1. Vérification et Chargement du Module Active Directory Code : @@ -203,4 +203,4 @@ Si le dossier existe déjà pour un utilisateur, un message est affiché et le s ***Conclusion*** : Cette étape finalise le processus en créant les dossiers utilisateurs et en configurant leur HomeDirectory dans Active Directory. ### Conclusion -Ce script est un outil puissant pour les administrateurs système, leur permettant de créer et d'organiser des dossiers utilisateurs en fonction des structures d'Active Directory et des informations extraites d'un fichier CSV. \ No newline at end of file +Ce script est un outil puissant pour les administrateurs système, leur permettant de créer et d'organiser des dossiers utilisateurs en fonction des structures d'Active Directory et des informations extraites d'un fichier CSV.