Problème script powershell

BSE technique -  
 BSE technique -
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
A voir également:

2 réponses

Snyper98 Messages postés 634 Date d'inscription   Statut Membre Dernière intervention   97
 
Quel est le problème avec le premier ?
0
BSE technique
 
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 ";"
0
Snyper98 Messages postés 634 Date d'inscription   Statut Membre Dernière intervention   97
 
Donc en gros il affiche tous les utilisateurs, sans distinction de si le mot de passe va expirer ?
0
BSE technique > Snyper98 Messages postés 634 Date d'inscription   Statut Membre Dernière intervention  
 
exactement
0
Snyper98 Messages postés 634 Date d'inscription   Statut Membre Dernière intervention   97
 
D'accord, alors je cherche un peu et je te redis (il faut que j'exécute le script dans me tête haha)
0
BSE technique
 
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 ?
0