Problema con el script de PowerShell

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.

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

Snyper98 Mensajes publicados 891 Estado Miembro 97
 
¿Cuál es el problema con el primero?

--
Snyper
0
BSE technique
 
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 ";"
0
Snyper98 Mensajes publicados 891 Estado Miembro 97
 
Entonces, en resumen, muestra todos los usuarios, sin distinción de si la contraseña va a caducar.
0
BSE technique > Snyper98 Mensajes publicados 891 Estado Miembro
 
exactamente
0
Snyper98 Mensajes publicados 891 Estado Miembro 97
 
De acuerdo, entonces buscaré un poco y te diré (tengo que ejecutar el script en mi cabeza jaja).
0
BSE technique
 
He realizado algunas modificaciones que son las siguientes:

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?
0