Problema con el script de PowerShell

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

  1. ¿Cuál es el problema con el primero?

    --
    Snyper
    0
    1. 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
      1. Entonces, en resumen, muestra todos los usuarios, sin distinción de si la contraseña va a caducar.
        0
      2. De acuerdo, entonces buscaré un poco y te diré (tengo que ejecutar el script en mi cabeza jaja).
        0
      3. 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