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

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

    --
    Snyper
    0
  2. 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
    1. 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
      1. BSE technique > Snyper98 Mensajes publicados 891 Estado Miembro
         
        exactamente
        0
    2. 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
    3. 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