Outils pour utilisateurs

Outils du site


ubu:wsa

Power Shell


Exercices Windows Server Chapitre 2

Questions 1 à 4

  1. Tester le script donné dans le chapitre 2.
    Votre script devra être commenté !
  2. Créer un script supprimant les utilisateurs créées à la question 1 (à partir du même fichier d’utilisateur)
    Votre script devra être commenté !
  3. Modifier le script de la question 1 de façon à ce qu’il permettre l’envoi du nom du fichier d’utilisateur sous forme de paramètre.
    Utiliser le nom actuel (import.csv) comme nom par défaut.
    Votre script devra être commenté !
  4. Modifier le script de la question 2 de façon à ce qu’il permettre l’envoi du nom du fichier d’utilisateur sous forme de paramètre.
    Utiliser le nom actuel (import.csv) comme nom par défaut.
    Votre script devra être commenté !
  • # script qui crée les utilisateurs d'un fichier csv donne en paramètre
  • # par défaut utilise le fichier import.csv du dossier courant
  • # l'option DeleteUsers (fausse par defaut) permet de supprimer les utilisateurs au lieu de les créer
  • # l'option DeleteADOUs (fausse par defaut) permet de supprimer les AD OUs
  • # cette option peut seulement être activée si l'option DeleteUsers est activée
  • # (il faut d'abord que les utilisateurs aient été supprimés avant de supprimer les OUs)
  • # l'option
param(
  [parameter(Mandatory=$false)]
    [string]$File = ".\import.csv",
  [parameter(Mandatory=$false)]
    [ValidateSet($true,$false)]
    $DeleteUsers = $false,
  [parameter(Mandatory=$false)]
    [ValidateSet($true,$false)]
    $DeleteADOUs = $false
)

Import-Module ActiveDirectory
Import-Module 'Microsoft.PowerShell.Security'

$users = Import-Csv -Delimiter ";" -Path $File


if (-Not $DeleteUsers -And $DeleteADOUs) {
  write-host -foregroundcolor red "Les ADOUs ne peuvent être supprimées sans supprimer les utilisateurs"
}

if ($DeleteUsers) {

  foreach ($user in $users) {
    $login = $user.firstName + "." + $user.lastName
    try {
      Remove-ADUser -Identity $login -Confirm:$false
      write-host -foregroundcolor green "Utilisateur supprimé : $login"
    } catch {
      write-host -foregroundcolor red "Utilisateur non supprimé : $login"
    }
  }

  if ($DeleteADOUs) {
    Get-ADOrganizationalUnit -Identity "OU=Paris,OU=Employés,DC=archi-2019,DC=local" | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $false
    Remove-ADOrganizationalUnit -Identity "OU=Paris,OU=Employés,DC=archi-2019,DC=local" -Confirm:$false
    Get-ADOrganizationalUnit -Identity "OU=Londres,OU=Employés,DC=archi-2019,DC=local" | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $false
    Remove-ADOrganizationalUnit -Identity "OU=Londres,OU=Employés,DC=archi-2019,DC=local" -Confirm:$false
    Get-ADOrganizationalUnit -Identity "OU=Berlin,OU=Employés,DC=archi-2019,DC=local" | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $false
    Remove-ADOrganizationalUnit -Identity "OU=Berlin,OU=Employés,DC=archi-2019,DC=local" -Confirm:$false
    Get-ADOrganizationalUnit -Identity "OU=Employés,DC=archi-2019,DC=local" | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $false
    Remove-ADOrganizationalUnit -Identity "OU=Employés,DC=archi-2019,DC=local" -Confirm:$false
  }
} else {

New-ADOrganizationalUnit -Name "Employés" -Path "DC=archi-2019,DC=local"
New-ADOrganizationalUnit -Name "Londres" -Path "OU=Employés,DC=archi-2019,DC=local"
New-ADOrganizationalUnit -Name "Paris" -Path "OU=Employés,DC=archi-2019,DC=local"
New-ADOrganizationalUnit -Name "Berlin" -Path "OU=Employés,DC=archi-2019,DC=local"

foreach ($user in $users){

    $name = $user.firstName + " " + $user.lastName
    $fname = $user.firstName
    $lname = $user.lastName
    $login = $user.firstName + "." + $user.lastName
    $Uoffice = $user.office
    $Upassword = $user.password
    $dept = $user.department

    switch($user.office){
        "Paris" {$office = "OU=Paris,OU=Employés,DC=archi-2019,DC=local"}
        "Berlin" {$office = "OU=Berlin,OU=Employés,DC=archi-2019,DC=local"}
        "Londres" {$office = "OU=Londres,OU=Employés,DC=archi-2019,DC=local"}
        default {$office = $null}
    }

    try {
      New-ADUser -Name $name -SamAccountName $login -UserPrincipalName $login -DisplayName $name -GivenName $fname -Surname $lname -AccountPassword (ConvertTo-SecureString $Upassword -AsPlainText -Force) -City $Uoffice -Path $office -Department $dept -Enabled $true
      echo "Utilisateur ajouté : $name"
    } catch {
      write-host -foregroundcolor red "Utilisateur non ajouté : $name"
    }
  }
}
.\create-users.ps1
Get-ADOrganizationalUnit
Get-ADUser
.\create-users.ps1
Get-ADOrganizationalUnit
Get-ADUser
.\create-users.ps1

Question 5
Créer un script qui lira le fichier csv passé en paramètre (nom par défaut : import.csv). Ce fichier sera au même format que import.csv.
Votre script créera un second fichier csv (à votre nom, passé en paramètre également) qui contiendra les mêmes données sauf le nom utilisateur qui sera préfixé des 3 premières lettres de votre nom.
ex : Kristina Chung deviendra Kristina DupChung si vous vous appelez Dupond

  • 3 paramètres optionnels : le fichier à modifier, le nom du nouveau fichier et la string à ajouter au début du nom
param(
  [parameter(Mandatory=$false)]
    [string]$File = ".\import.csv",
  [parameter(Mandatory=$false)]
    [string]$Modif = "Bin",
  [parameter(Mandatory=$false)]
    [string]$NewFile = "import2"
)

($csv = Import-Csv -Delimiter ";" -Path $File) | ForEach-Object {
  $_.lastName = $Modif + $_.lastName
}
$csv | Export-Csv "$NewFile.csv" -Delimiter ";"

lancement de la commande sans paramètres : le fichier import.csv est modifié avec “Bin” et enregistré dans import2.csv

.\new-csv.ps1
ls
cat .\import2.csv

lancement de la commande avec paramètres : le fichier import2.csv est modifié avec “La” et enregistré dans import3.csv

.\new-csv.ps1
cat .\import3.csv


Q3


Créer un script en POWERSHELL qui prend en paramètre obligatoire une variable “department”.

Votre script utilisera le fichier csv à votre nom de login situé dans votre répertoire personnel sur le serveur qui contient des lignes comme ceci : “firstName”;“lastName”;“office”;“password”;“department” (voir le fichier .csv à votre nom de login situé dans votre répertoire personnel sur le serveur)

Votre script créera des utilisateurs au nom de login “firstName.lastName” (où firstName et LastName prendront les valeurs des champs correspondants du fichier csv) et avec un mot de passe password (où password prendra la valeur du champ password du fichier csv) sur le domaine archi-2019.local en les attribuant à l’unité organisationnelle “Employes” et dans la sous-unité Londres, Paris ou Berlin suivant la valeur du champ “office” présent dans le fichier .csv pour chaque utilisateur et ce UNIQUEMENT lorsque le champ “department” du fichier .csv prendra la valeur de la variable “department” reçue en paramètre !

(NB : pour pouvoir tester votre script, n'oubliez pas de créer également un script qui efface les utilisateurs présents dans votre fichier .csv)

Voici un exemple de sortie de Q3 :
.\Q3.ps1 Accounting
Utilisateur ajoute : ThHALou Rosenthal, department Accounting
Utilisateur ajoute : ThHAChr Bowden, department Accounting
Utilisateur ajoute : ThHADar Barton, department Accounting
Utilisateur ajoute : ThHAHar Underwood, department Accounting
Utilisateur ajoute : ThHAWil Jones, department Accounting

Réponses :

  • A. Donner le code de votre Script :
  • B. Montrer que vos utilisateurs existent bien et qu’au moins un utilisateur peut se logger :

A. Donner le code de votre Script :
# script qui crée les utilisateurs d'un fichier csv placé dans le répertoire courant
# crée les utilisateurs du département donné en paramètre
# l'option Delete (fausse par défaut) permet de supprimer les utilisateurs au lieu de les créer

param(
  # paramètre obligatoire : département pour lequel on souhaite créer les utilisateurs
  [parameter(Mandatory=$true)]
    [string]$Dept,
  # paramètre facultatif pour les tests : permet de supprimer les utilisateurs
  [parameter(Mandatory=$false)]
    [ValidateSet($true,$false)]
    $Delete = $false
)

# imports nécessaires à l'utilisation d'AD
Import-Module ActiveDirectory
Import-Module 'Microsoft.PowerShell.Security'

# import des utilisateurs du fichier csv dans la variable users
$users = Import-Csv -Delimiter ";" -Path .\LaBINACCHI.csv

if ($Delete) { # SUPPRESSION

  # boucle sur tous les utilisateurs
  foreach ($user in $users) {
    # comparaison insensible à la casse
    if ($user.department -eq $Dept) {
      $login = $user.firstName + "." + $user.lastName

      # suppression de l'utilisateur
      try {
        # supprime l'utilisateur sans demander de confirmation manuelle
        Remove-ADUser -Identity $login -Confirm:$false
        write-host -foregroundcolor green "Utilisateur supprimé : $login"
      } catch {
        write-host -foregroundcolor red "Utilisateur non supprimé : $login"
      }
    }
  }
} else { # CREATION
  foreach ($user in $users) {

    # comparaison insensible à la casse
    if ($user.department -eq $Dept) {

      $name = $user.firstName + " " + $user.lastName
      $fname = $user.firstName
      $lname = $user.lastName
      $login = $user.firstName + "." + $user.lastName
      $Uoffice = $user.office
      $Upassword = $user.password
      $department = $user.department

      # attribution des OU en fonction de la colonne office du csv
      switch($user.office){
          "Paris" {$office = "OU=Paris,OU=Employés,DC=archi-2019,DC=local"}
          "Berlin" {$office = "OU=Berlin,OU=Employés,DC=archi-2019,DC=local"}
          "Londres" {$office = "OU=Londres,OU=Employés,DC=archi-2019,DC=local"}
          default {$office = $null}
      }

      try {
        New-ADUser -Name $name -SamAccountName $login -UserPrincipalName $login -DisplayName $name -GivenName $fname -Surname $lname -AccountPassword (ConvertTo-SecureString $Upassword -AsPlainText -Force) -City $Uoffice -Path $office -Department $department -Enabled $true
        write-host -foregroundcolor green "Utilisateur ajouté : $name (département $department)"
      } catch {
        write-host -foregroundcolor red "Utilisateur non ajouté : $name"
      }
    }
  }
}

Création des utilisateurs du département “direction” :

.\create-users.ps1 -Dept direction

B. Montrer que vos utilisateurs existent bien et qu’au moins un utilisateur peut se logger :
Vérification de leur existence :

Get-ADUser -Filter 'Name -like "*LaBI*"'

Connection avec un utilisateur :

ssh LaBIKri.Chung@192.168.2.190

Test 2


Ubuntu Serveur

ubu/wsa.txt · Dernière modification : de 127.0.0.1