Signaler

Problème script powershell

Posez votre question BSE technique - Dernière réponse le 21 mars 2017 à 08:32 par 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
Afficher la suite 
Utile
+0
plus moins
Quel est le problème avec le premier ?
Donnez votre avis
Utile
+0
plus moins
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 558Messages postés mardi 2 février 2010Date d'inscription 30 mars 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 ?
Répondre
BSE technique- 16 mars 2017 à 16:13
exactement
Répondre
Snyper98 558Messages postés mardi 2 février 2010Date d'inscription 30 mars 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)
Répondre
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 ?
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !