Problème script powershell

BSE technique - 16 mars 2017 à 14:24 - Dernière réponse :  BSE technique
- 21 mars 2017 à 08:32
Bonjour,

J'aurais besoin d'un coup de main, je voudrais mettre en place deux scripts mais le premier ne s'effectue pas correctement.


Le premier liste les comptes dont le mot de passe va bientôt expirer.


import-module activedirectory
# Récupérer la date du jour
$date = Get-Date
# Création du fichier 
$fichier="C:\Windows\SYSVOL\sysvol\"NOM_DE_DOMAINE.lan"\scripts\users_expire.txt"
Remove-Item $fichier -Force
New-Item $fichier -ItemType file
#ADD-content -path $fichier -value "sam;"
ADD-content -path $fichier -value $date.DateTime
$Listusers = Get-ADUser -SearchBase 'DC="NOM_DE_DOMAINE", DC=lan' -Filter *
Foreach ($user in $Listusers)
{
$foruser = $user.SamAccountName
$Expiration = {[datetime]::FromFileTime((Get-ADUser –Identity $foruser -Properties "msDS-UserPasswordExpiryTimeComputed")."msDS-UserPasswordExpiryTimeComputed")}
# Afficher les dates en Ticks
$exp = $expiration.Ticks
$d = $date.Ticks
# Calculer la différence de jours
$comp = $exp - $d
# 12750000000000 = 15 jours
# Si $comp est inférieur à 15 jours, ecrire
if ($comp -le 12750000000000) {
ADD-content -path $fichier -value $foruser";"
}
}



Le deuxième affiche un pop à l'ouverture de la session utilisateur.

$connect = $env:USERNAME
$fichier = Import-Csv -Delimiter ";" -Path "\\SRV01\SYSVOL\"NOM_DE_DOMAINE.lan"\scripts\users_expire.txt"
foreach ($line in $fichier)
{
$l = $line.sam
if ($connect -eq $l) {
$wshell = New-Object -ComObject Wscript.Shell
$wshell.Popup("Veuillez modifier votre mot de passe Ctrl + Alt + Suppr > Modifier un mot de passe Merci")
}
}
exit
Afficher la suite 

6 réponses

Répondre au sujet
Snyper98 625 Messages postés mardi 2 février 2010Date d'inscription 30 octobre 2017 Dernière intervention - 16 mars 2017 à 14:45
0
Utile
Quel est le problème avec le premier ?
Commenter la réponse de Snyper98
BSE technique - 16 mars 2017 à 15:30
0
Utile
4
voila le résultat du 1er script dans le doc "users_expire.txt"

jeudi 16 mars 2017 12:07:11
Administrateur;
Invité;


suivi de tous les noms d'utilisateurs de l'AD suivi d'un ";"
Snyper98 625 Messages postés mardi 2 février 2010Date d'inscription 30 octobre 2017 Dernière intervention - 16 mars 2017 à 16:04
Donc en gros il affiche tous les utilisateurs, sans distinction de si le mot de passe va expirer ?
BSE technique > Snyper98 625 Messages postés mardi 2 février 2010Date d'inscription 30 octobre 2017 Dernière intervention - 16 mars 2017 à 16:13
exactement
Snyper98 625 Messages postés mardi 2 février 2010Date d'inscription 30 octobre 2017 Dernière intervention - 17 mars 2017 à 07:55
D'accord, alors je cherche un peu et je te redis (il faut que j'exécute le script dans me tête haha)
BSE technique - 21 mars 2017 à 08:32
j'ai effectué quelques modification que voici:

import-module activedirectory
# Récupérer la date du jour
$date = Get-Date
# Création du fichier
$fichier="C:\Windows\SYSVOL\sysvol\CMPP.lan\scripts\users_expire.txt"
Remove-Item $fichier -Force
New-Item $fichier -ItemType file
#ADD-content -path $fichier -value "sam;"
ADD-content -path $fichier -value $date.DateTime
$Listusers = Get-ADUser -SearchBase 'DC=CMPP, DC=lan' -Filter *
$expiration = 12750000000000
Foreach ($user in $Listusers)
{
$foruser = $user.SamAccountName
$proper = Get-ADUser -Identity $foruser -Properties "msDS-UserPasswordExpiryTimeComputed"
$value = $proper."msDS-UserPasswordExpiryTimeComputed"
if ($value -le $expiration) {
ADD-content -path $fichier -value $foruser";"
}
}


dans le fichier texte j'ai une bonne partie des users suivi d'un ";" mais je n'ai toujours pas leur expiration de MDP.

J'ai aussi eu un autre problème pendant les modification :

Exception lors de l'appel de « FromFileTime » avec « 1 » argument(s) : « FileTime Win32 non valide.
Nom du paramètre : fileTime »

peut il y avoir un rapport ?
Commenter la réponse de BSE technique