<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.projetoroot.com.br/index.php?action=history&amp;feed=atom&amp;title=Administra%C3%A7%C3%A3o_de_Active_Directory</id>
	<title>Administração de Active Directory - Histórico de revisão</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.projetoroot.com.br/index.php?action=history&amp;feed=atom&amp;title=Administra%C3%A7%C3%A3o_de_Active_Directory"/>
	<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Administra%C3%A7%C3%A3o_de_Active_Directory&amp;action=history"/>
	<updated>2026-06-04T00:48:07Z</updated>
	<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.projetoroot.com.br/index.php?title=Administra%C3%A7%C3%A3o_de_Active_Directory&amp;diff=979&amp;oldid=prev</id>
		<title>Diegocosta: Criou página com &#039;== Sobre == Olá! Visitante, reunimos aqui, informações sobre como otimizar alguns processos em ambientes que tenham Active Directory, seja em Windows quando em Linux.   == Comandos ==  Para verificar a data de expiração da senha de um usuário específico no Active Directory usando PowerShell, você pode usar o seguinte comando: Esse comando mostra a última vez que a senha foi alterada. Para calcular a expiração, é necessário saber a política de senha (normalm...&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.projetoroot.com.br/index.php?title=Administra%C3%A7%C3%A3o_de_Active_Directory&amp;diff=979&amp;oldid=prev"/>
		<updated>2025-05-26T14:07:25Z</updated>

		<summary type="html">&lt;p&gt;Criou página com &amp;#039;== Sobre == Olá! Visitante, reunimos aqui, informações sobre como otimizar alguns processos em ambientes que tenham Active Directory, seja em Windows quando em Linux.   == Comandos ==  Para verificar a data de expiração da senha de um usuário específico no Active Directory usando PowerShell, você pode usar o seguinte comando: Esse comando mostra a última vez que a senha foi alterada. Para calcular a expiração, é necessário saber a política de senha (normalm...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Sobre ==&lt;br /&gt;
Olá! Visitante, reunimos aqui, informações sobre como otimizar alguns processos em ambientes que tenham Active Directory, seja em Windows quando em Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comandos ==&lt;br /&gt;
&lt;br /&gt;
Para verificar a data de expiração da senha de um usuário específico no Active Directory usando PowerShell, você pode usar o seguinte comando:&lt;br /&gt;
Esse comando mostra a última vez que a senha foi alterada. Para calcular a expiração, é necessário saber a política de senha (normalmente 90 dias, por exemplo).&lt;br /&gt;
# Substitua &amp;#039;usuario&amp;#039; pelo nome de login ou UPN&lt;br /&gt;
 Get-ADUser -Identity &amp;quot;usuario&amp;quot; -Properties &amp;quot;PasswordLastSet&amp;quot; | Select-Object Name, PasswordLastSet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para Verificar se a senha expira ou não (PasswordNeverExpires)&lt;br /&gt;
 Get-ADUser -Identity &amp;quot;usuario&amp;quot; -Properties &amp;quot;PasswordNeverExpires&amp;quot; | Select-Object Name, PasswordNeverExpires&lt;br /&gt;
&lt;br /&gt;
== Scripts ==&lt;br /&gt;
&lt;br /&gt;
Você pode usar este script PowerShell completo, que calcula exatamente isso com base na política do domínio, porem este este script é para pesquisar usuário por usuário, copie e salve como arquivo .bat e rode como administrador.&lt;br /&gt;
&lt;br /&gt;
 @echo off&lt;br /&gt;
 setlocal ENABLEDELAYEDEXPANSION&lt;br /&gt;
 &lt;br /&gt;
 :: Solicita o nome do usuário&lt;br /&gt;
 set /p USERNAME=Digite o login do usuario AD (SamAccountName ou UPN): &lt;br /&gt;
 &lt;br /&gt;
 :: Executa PowerShell para pegar a expiração da senha&lt;br /&gt;
 %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -Command ^&lt;br /&gt;
 &amp;quot;try { ^&lt;br /&gt;
     Import-Module ActiveDirectory -ErrorAction Stop; ^&lt;br /&gt;
     $user = Get-ADUser -Identity &amp;#039;%USERNAME%&amp;#039; -Properties &amp;#039;msDS-UserPasswordExpiryTimeComputed&amp;#039;,&amp;#039;PasswordNeverExpires&amp;#039;; ^&lt;br /&gt;
     if ($null -eq $user) { Write-Host &amp;#039;Usuario nao encontrado.&amp;#039;; exit 1 } ^&lt;br /&gt;
     if ($user.PasswordNeverExpires) { Write-Host &amp;#039;A senha deste usuario nunca expira.&amp;#039;; exit 0 } ^&lt;br /&gt;
     $expira = [datetime]::FromFileTime($user.&amp;#039;msDS-UserPasswordExpiryTimeComputed&amp;#039;); ^&lt;br /&gt;
     $dias = ($expira - (Get-Date)).Days; ^&lt;br /&gt;
     Write-Host &amp;#039;----------------------------------------------&amp;#039;; ^&lt;br /&gt;
     Write-Host &amp;#039;Usuario:       &amp;#039; $user.SamAccountName; ^&lt;br /&gt;
     Write-Host &amp;#039;Expira em:     &amp;#039; $expira.ToString(&amp;#039;dd/MM/yyyy HH:mm&amp;#039;); ^&lt;br /&gt;
     Write-Host &amp;#039;Dias restantes:&amp;#039; $dias; ^&lt;br /&gt;
     Write-Host &amp;#039;----------------------------------------------&amp;#039;; ^&lt;br /&gt;
 } catch { ^&lt;br /&gt;
     Write-Host &amp;#039;Erro ao consultar o usuario ou o dominio.&amp;#039; ^&lt;br /&gt;
 }&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 pause&lt;br /&gt;
&lt;br /&gt;
Para listar todos usuários com senha a expirar use este script, copie e salve como arquivo .ps1 e rode como administrador.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Verifica se módulo ActiveDirectory está disponível&lt;br /&gt;
 if (-not (Get-Module -ListAvailable -Name ActiveDirectory)) {&lt;br /&gt;
     Write-Host &amp;quot;O módulo ActiveDirectory não está instalado. Instale o RSAT.&amp;quot; -ForegroundColor Red&lt;br /&gt;
     Read-Host -Prompt &amp;quot;Pressione ENTER para sair&amp;quot;&lt;br /&gt;
     exit&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 Import-Module ActiveDirectory&lt;br /&gt;
 &lt;br /&gt;
 # Entrada: número de dias antes da expiração&lt;br /&gt;
 $dias = Read-Host &amp;quot;Digite o número de dias para listar usuários com senha prestes a expirar&amp;quot;&lt;br /&gt;
 if (-not [int]::TryParse($dias, [ref]0)) {&lt;br /&gt;
     Write-Host &amp;quot;Valor inválido. Informe um número inteiro.&amp;quot; -ForegroundColor Red&lt;br /&gt;
     Read-Host -Prompt &amp;quot;Pressione ENTER para sair&amp;quot;&lt;br /&gt;
     exit&lt;br /&gt;
 }&lt;br /&gt;
 $dias = [int]$dias&lt;br /&gt;
 &lt;br /&gt;
 $hoje = Get-Date&lt;br /&gt;
 $resultados = @()&lt;br /&gt;
 &lt;br /&gt;
 Write-Host &amp;quot;`nConsultando usuários do AD...`n&amp;quot; -ForegroundColor Cyan&lt;br /&gt;
 &lt;br /&gt;
 $usuarios = Get-ADUser -Filter * -Properties msDS-UserPasswordExpiryTimeComputed, PasswordNeverExpires, Enabled, DisplayName, Mail&lt;br /&gt;
 &lt;br /&gt;
 foreach ($u in $usuarios) {&lt;br /&gt;
     if ($u.Enabled -and -not $u.PasswordNeverExpires -and $u.&amp;#039;msDS-UserPasswordExpiryTimeComputed&amp;#039;) {&lt;br /&gt;
         $expira = [datetime]::FromFileTime($u.&amp;#039;msDS-UserPasswordExpiryTimeComputed&amp;#039;)&lt;br /&gt;
         $diasRest = ($expira - $hoje).Days&lt;br /&gt;
         if ($diasRest -ge 0 -and $diasRest -le $dias) {&lt;br /&gt;
             $resultados += [PSCustomObject]@{&lt;br /&gt;
                 Usuario        = $u.SamAccountName&lt;br /&gt;
                 Nome           = $u.DisplayName&lt;br /&gt;
                 Email          = $u.Mail&lt;br /&gt;
                 ExpiraEm       = $expira.ToString(&amp;quot;dd/MM/yyyy&amp;quot;)&lt;br /&gt;
                 DiasRestantes  = $diasRest&lt;br /&gt;
             }&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if ($resultados.Count -eq 0) {&lt;br /&gt;
     Write-Host &amp;quot;`nNenhum usuario com senha expirando em ate $dias dias.&amp;quot; -ForegroundColor Yellow&lt;br /&gt;
 } else {&lt;br /&gt;
     Write-Host &amp;quot;`nUsuarios com senha expirando em ate $dias dias:`n&amp;quot; -ForegroundColor Green&lt;br /&gt;
     $resultados | Sort-Object DiasRestantes | Format-Table -AutoSize&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Exportar?&lt;br /&gt;
 $exportar = Read-Host &amp;quot;`nDeseja exportar os resultados para arquivo? (S/N)&amp;quot;&lt;br /&gt;
 if ($exportar -match &amp;quot;^[Ss]$&amp;quot;) {&lt;br /&gt;
     $tipo = Read-Host &amp;quot;Escolha o formato: csv ou txt&amp;quot;&lt;br /&gt;
     $caminho = Read-Host &amp;quot;Digite o caminho completo para salvar (ex: C:\temp\expira.csv) OBS: precisa informar!&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
     try {&lt;br /&gt;
         if ($tipo -ieq &amp;quot;csv&amp;quot;) {&lt;br /&gt;
             $resultados | Export-Csv -Path $caminho -Encoding UTF8 -NoTypeInformation&lt;br /&gt;
         } elseif ($tipo -ieq &amp;quot;txt&amp;quot;) {&lt;br /&gt;
             $resultados | Out-File -FilePath $caminho -Encoding UTF8&lt;br /&gt;
         } else {&lt;br /&gt;
             Write-Host &amp;quot;Formato inválido. Nenhum arquivo exportado.&amp;quot; -ForegroundColor Red&lt;br /&gt;
         }&lt;br /&gt;
         if (Test-Path $caminho) {&lt;br /&gt;
             Write-Host &amp;quot;Arquivo exportado para: $caminho&amp;quot; -ForegroundColor Cyan&lt;br /&gt;
         }&lt;br /&gt;
     } catch {&lt;br /&gt;
         Write-Host &amp;quot;Erro ao exportar: $_&amp;quot; -ForegroundColor Red&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 Write-Host &amp;quot;`nConsulta finalizada.&amp;quot; -ForegroundColor Cyan&lt;br /&gt;
 Read-Host -Prompt &amp;quot;`nPressione ENTER para sair&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
* O que ele faz:&lt;br /&gt;
&lt;br /&gt;
Pergunta quantos dias quer buscar;&lt;br /&gt;
&lt;br /&gt;
Carrega todos os usuários do AD;&lt;br /&gt;
&lt;br /&gt;
Ignora usuários desabilitados ou com senha que nunca expira;&lt;br /&gt;
&lt;br /&gt;
Calcula quantos dias faltam para expirar;&lt;br /&gt;
&lt;br /&gt;
Pergunta se quer exportar para um arquivo csv ou txt&lt;/div&gt;</summary>
		<author><name>Diegocosta</name></author>
	</entry>
</feed>