Problema con el script de PowerShell
BSE technique
-
BSE technique -
BSE technique -
Bonjour,
Necesito ayuda, quiero implementar dos scripts, pero el primero no se ejecuta correctamente.
El primero lista las cuentas cuya contraseña está a punto de expirar.
El segundo muestra un pop-up al iniciar sesión del usuario.
Necesito ayuda, quiero implementar dos scripts, pero el primero no se ejecuta correctamente.
El primero lista las cuentas cuya contraseña está a punto de expirar.
import-module activedirectory # Obtener la fecha de hoy $fecha = Get-Date # Crear el archivo $archivo="C:\Windows\SYSVOL\sysvol\"NOM_DE_DOMAINE.lan"\scripts\users_expire.txt" Remove-Item $archivo -Force New-Item $archivo -ItemType file #ADD-content -path $archivo -value "sam;" ADD-content -path $archivo -value $fecha.DateTime $ListaUsuarios = Get-ADUser -SearchBase 'DC="NOM_DE_DOMAINE", DC=lan' -Filter * Foreach ($usuario in $ListaUsuarios) { $paraUsuario = $usuario.SamAccountName $Expiracion = {[datetime]::FromFileTime((Get-ADUser –Identity $paraUsuario -Properties "msDS-UserPasswordExpiryTimeComputed")."msDS-UserPasswordExpiryTimeComputed")} # Mostrar las fechas en Ticks $exp = $expiracion.Ticks $d = $fecha.Ticks # Calcular la diferencia en días $comp = $exp - $d # 12750000000000 = 15 días # Si $comp es menor o igual a 15 días, escribir if ($comp -le 12750000000000) { ADD-content -path $archivo -value $paraUsuario";" } } El segundo muestra un pop-up al iniciar sesión del usuario.
$conectar = $env:USERNAME $archivo = Import-Csv -Delimiter ";" -Path "\\SRV01\SYSVOL\"NOM_DE_DOMAINE.lan"\scripts\users_expire.txt" foreach ($linea in $archivo) { $l = $linea.sam if ($conectar -eq $l) { $wshell = New-Object -ComObject Wscript.Shell $wshell.Popup("Por favor, modifique su contraseña Ctrl + Alt + Supr > Cambiar una contraseña Gracias") } } exit
2 respuestas
aquí está el resultado del primer script en el doc "users_expire.txt"
jueves 16 de marzo de 2017 12:07:11
Administrador;
Invitado;
seguido de todos los nombres de usuario del AD seguido de un ";"
jueves 16 de marzo de 2017 12:07:11
Administrador;
Invitado;
seguido de todos los nombres de usuario del AD seguido de un ";"
He realizado algunas modificaciones que son las siguientes:
En el archivo de texto tengo una buena parte de los usuarios seguidos de un ";" pero todavía no tengo su expiración de contraseña.
También tuve otro problema durante las modificaciones:
Excepción al llamar a "FromFileTime" con "1" argumento(s): "FileTime Win32 no válido.
Nombre del parámetro: fileTime"
¿Puede haber una relación?
import-module activedirectory
# Obtener la fecha de hoy
$fecha = Get-Date
# Creación del archivo
$archivo="C:\Windows\SYSVOL\sysvol\CMPP.lan\scripts\users_expire.txt"
Remove-Item $archivo -Force
New-Item $archivo -ItemType file
#ADD-content -path $archivo -value "sam;"
ADD-content -path $archivo -value $fecha.DateTime
$ListaUsuarios = Get-ADUser -SearchBase 'DC=CMPP, DC=lan' -Filter *
$expiracion = 12750000000000
Foreach ($usuario in $ListaUsuarios)
{
$paraUsuario = $usuario.SamAccountName
$propio = Get-ADUser -Identity $paraUsuario -Properties "msDS-UserPasswordExpiryTimeComputed"
$valor = $propio."msDS-UserPasswordExpiryTimeComputed"
if ($valor -le $expiracion) {
ADD-content -path $archivo -value $paraUsuario";"
}
}
En el archivo de texto tengo una buena parte de los usuarios seguidos de un ";" pero todavía no tengo su expiración de contraseña.
También tuve otro problema durante las modificaciones:
Excepción al llamar a "FromFileTime" con "1" argumento(s): "FileTime Win32 no válido.
Nombre del parámetro: fileTime"
¿Puede haber una relación?