Problème script powershell

Fermé
BSE technique - Modifié par Chris 94 le 16/03/2017 à 14:29
 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
A voir également:

2 réponses

Snyper98 Messages postés 629 Date d'inscription mardi 2 février 2010 Statut Membre Dernière intervention 8 septembre 2020 97
16 mars 2017 à 14:45
Quel est le problème avec le premier ?
0
BSE technique
16 mars 2017 à 15:30
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 629 Date d'inscription mardi 2 février 2010 Statut Membre Dernière intervention 8 septembre 2020 97
16 mars 2017 à 16:04
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 629 Date d'inscription mardi 2 février 2010 Statut Membre Dernière intervention 8 septembre 2020
16 mars 2017 à 16:13
exactement
0
Snyper98 Messages postés 629 Date d'inscription mardi 2 février 2010 Statut Membre Dernière intervention 8 septembre 2020 97
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)
0
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 ?
0