Utilisation "import-module activedirectory"

pbh974 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Dans un domaine AD, je souhaite exécuter un script à l'ouverture de session des utilisateurs en Powershell (via GPO) afin de leur envoyer un message si la date de changement de leur mot de passe dépasse un certain nombre de jour (60 jours).
En local sur un DC pas de problème le script fonctionne correctement, mais quand le script est exécuté sur le poste de l'utilisateur (à l'ouverture de session via la GPO) cela ne fonctionne pas car il n'y a pas d'accès au module "ActiveDirectory" (la fonctionnalité RSAT n'est pas installée sur les postes des utilisateurs et je ne souhaites pas l'installer naturellement) . Du coup j'ai invariablement le message :

import-module : Le module "ActiveDirectory" spécifié n'a pas été chargé, car aucun fichier de module valide n'a été trouvé dans un répertoire de module.

Voici le code de mon script :

import-module ActiveDirectory

$Seuil_maxi = 60

$name_user = $env:USERNAME

$user_current = Get-ADUser -filter {SamAccountName -eq $name_user } -properties SamAccountName, passwordlastset, passwordneverexpires | select-object Name, passwordlastset, SamAccountName

if (-not ([string]::IsNullOrEmpty($user_current.passwordlastset)))
{
            $last_change_pwd = Get-Date $user_current.passwordlastset -Format "dd/MM/yyyy"
            $Date_du_jour = (Get-Date).ToString("dd/MM/yyyy")
            $ts = New-TimeSpan -Start $last_change_pwd -End $Date_du_jour

            # Affichage du message d'information
        if ($ts.Days -gt $Seuil_maxi) {
            powershell -WindowStyle hidden -Command "& {Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.MessageBox]::Show('Bonjour, veuillez changer votre mot de passe', 'Info Users', 'Ok', [System.Windows.Forms.MessageBoxIcon]::Information);}"
        }
}

Pour info le script a été positionné dans le netlogon du domaine et tous les utilisateurs peuvent l'exécuter naturellement.
Quelqu'un aurait-il une solution pour importer le module "ActiveDirectory" qui me permettrait d'utiliser la fonction "Get-ADUser "? Ou éventuellement une autre façon de faire...

Merci d'avance


EDIT: Discussion déplacée dans le forum PowerShell
EDIT² : Ajout des BALISES DE CODE

3 réponses

choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
0
pbh974 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Choubaka,
Merci pour ta réponse, mais mon problème ne vient pas d'une impossibilité de définir une stratégie d'expiration de mot de passe (la GPO par défaut du domaine fait ça très bien). Nous avons constaté que plusieurs utilisateur on l'option "le mot de passe n'expire jamais" et la la GPO n'y peux rien (ce paramètre prime sur la GPO). Il s'agit de pouvoir vérifier à l'ouverture de session des utilisateurs depuis combien de temps ils n'ont pas changés leur mot de passe via la commande "Get-aduser", sauf que cela ne fonctionne pas sur les postes des utilisateurs car ils n'ont pas le module RSAT d'installé sur leur poste et je ne souhaites pas l'installer sur tous les postes (donc pas accès au module activedirectory).
0
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
Bonjour
En effet, mais malheureusement RSAT doit absolument être installé .. Plus d'infos ci-dessous.

https://www.it-connect.fr/chapitres/installer-le-module-active-directory-sur-windows-10-et-windows-server/
0