# Active Directory

## Active Directory <a href="#manipulation" id="manipulation"></a>

Gestion de l'Active Directory avec le Powershell

### Raccourci recherche

Pour créer un **raccourci de recherche pour Active Directory** :

* Cliquez avec le bouton droit sur un espace vide de votre bureau et sélectionnez "Nouveau", puis "Raccourci".
* Dans le champ d'emplacement, entrez le chemin suivant :

```powershell
%SystemRoot%\system32\rundll32.exe dsquery,OpenQueryWindow
```

* Cliquez sur **"Suivant"** pour continuer.
* Donnez un nom à votre raccourci, par exemple **"Recherche AD"**, puis cliquez sur **"Terminer"**.

### Informations sur les ordinateurs

<pre class="language-powershell" data-full-width="true"><code class="lang-powershell">Get-ADComputer -Filter *                                 # Obtenez la liste des ordinateurs du domaine AD
Get-ADComputer -Filter * -Properties *                   # Obtenez les propriétés des ordinateurs
Get-ADComputer -Filter * -Properties * | Select Name     # Obtenez le nom des ordinateurs

# Comptez le nombre d’ordinateurs regroupés par la version du système d’exploitation
Get-ADComputer -Filter * -Properties * | group -Property operatingSystem | Select Name,Count

# Obtenez le dernier logon des ordinateurs
Get-ADComputer -Filter * -Properties * | Select Name, LastLogonDate

# Obtenez la liste des ordinateurs inactifs pour un nombre spécifique de jours.
$Days = 10
$Time = (Get-Date).Adddays(-($Days))
Get-ADComputer -Filter {LastLogonTimeStamp -lt $Time} -Properties * | Select Name, LastLogonDate

<strong># Obtenez tous les ordinateurs avec un texte spécifique dans le nom
</strong>Get-ADComputer -Filter { Name -like "*srv*"}
</code></pre>

### Création et activation d'un utilisateur <a href="#creation-et-activation-dun-utilisateur" id="creation-et-activation-dun-utilisateur"></a>

Pour créer un utilisateur, la commande à utiliser est `New-ADUser`. Il faut cependant un certain nombre d'informations, tel que le login, le mot de passe etc.&#x20;

Voici la *Syntaxe de création d'un utilisateur :*

{% code fullWidth="true" %}

```powershell
New-ADUser -Name "NOM Prénom" -SamAccountName <Login> -UserPrincipalName "login@domaine" -AccountPassword (ConvertTo-SecureString -AsPlainText <mdp> -Force) -PasswordNeverExpires $true -CannotChangePassword $true
```

{% endcode %}

* `-Name` : Indique le nom du compte, généralement le nom/prénom de la personne;
* `-SamAccountName` : Indique le Login de la personne, ce qu'elle va utiliser pour se connecter;
* `-UserPrincipalName` : Indique le nom complet de l'utilisateur dans l'AD (format login\@domaine);
* `-AccountPassword` : Renseigne le mot de passe. l'option `ConvertTo-SecureString` permet de convertir le mot de passe en clair dans un format chiffré, illisible par l'humain.
* `-PasswordNeverExpires` : Indique si l'on veut que les personnes changent leurs mot de passe à intervalle régulier.

{% hint style="info" %}
Pour se faire la main avec Active Directory, mieux vaut activer cette option. \
En production, il vaut mieux **désactiver** cette option.
{% endhint %}

* `-CannotChangePassword` : Indique si l'on autorise le changement du mot de passe directement par les utilisateurs.

> Cette option dépend de la politique interne de l'entreprise, et dépendera probablement du service auquel cette personne sera affectée.

{% hint style="success" %}
Cette option dépendra de la politique interne de l'entreprise ainsi que probablement du service auquel cette personne sera affectée.
{% endhint %}

On active ensuite ce compte :

```powershell
Enable-ADAccount <login>
```

{% hint style="info" %}
Nous pouvons également ajouter l'option `-Enable $true` dans la commande précédente pour activer le compte
{% endhint %}

### Obtenir la liste des utilisateurs Active Directory <a href="#creation-et-activation-dun-utilisateur" id="creation-et-activation-dun-utilisateur"></a>

`Get-ADUser -Filter *` . Permets de lister les utilisateurs Active Directory

{% hint style="warning" %}
Cette commande va renvoyer TOUTES les informations de l'utilisateur, ce qui n'est peut-être pas nécessaire.&#x20;
{% endhint %}

Nous pouvons donc sélectionner les champs que l'on veut récupérer. \
\&#xNAN;*Exemple de commande :*

```powershell
Get-ADUser -Filter * | select Name, samAccountName, UserPrincipalName
```

Cette commande va récupérer les champs **nom**, **login** et **nom complet de l'utilisateur** sur l'AD.

Nous pouvons également exporter les champs sélectionnés dans un fichier CSV en ajoutant la commande `| Export-Csv <nom_sortie.csv -Encoding UTF8`.

{% hint style="danger" %}
Attention : le | est important, puis que nous ajoutons cette commande à la suite de la précédent
{% endhint %}

### Comptes d’utilisateurs récents

Trouvez les comptes d’utilisateurs créés sur Active Directory au cours des 30 derniers jours.

{% code fullWidth="true" %}

```powershell
$Days = 30 # Modifier la valeur pour changer le nombre de jours
$Time = (Get-Date).Adddays(-($Days))
Get-ADUser -Filter * -Property whenCreated | Where {$_.whenCreated -gt $Time} | ft Name, WhenCreated
```

{% endcode %}

### Utilisateurs qui n’ont pas changé de mot de passe

Trouvez les utilisateurs dans Active Directory avec un mot de passe de plus de 30 jours.

{% code fullWidth="true" %}

```powershell
$Days = 30 # Modifier la valeur pour changer le nombre de jour
$Time = [DateTime]::Today.AddDays(-$Days)
Get-ADUser -Filter '(PasswordLastSet -lt $Time)' -Properties PasswordLastSet | ft Name,PasswordLastSet
```

{% endcode %}

### Ordinateurs inactifs

Trouvez les utilisateurs qui ne se sont pas connectés au Répertoire actif au cours des 30 derniers jours.

{% code fullWidth="true" %}

```powershell
$Days = 30
$Time = (Get-Date).Adddays(-($Days))
Get-ADUser -Filter {LastLogonTimeStamp -lt $Time} -Properties * | Select Name, LastLogonDat
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.chamallow.com/1.-technologie/os/windows11/active-directory.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
