Windows bginfo para mostrar a data de expiração A.D?

3

Existe alguma maneira no bginfo para mostrar o número de dias antes que a senha do usuário A.D. precise ser alterada?

Por exemplo, você deve alterar sua senha em 10 dias.
A.D.D senha deve ser redefinida a cada 2 meses ou 60 dias.

    
por user353485 08.05.2016 / 19:56

4 respostas

3

O BGInfo suporta o seguinte para definir variáveis personalizadas:

Aprimeiracoisaquevemàmenteédefinirumscriptdelogonparaousuárioprimeiro.Algoqueencontraadatadeexpiraçãoegrava-aemumarquivonocomputadorlocal:

$Searcher=New-ObjectSystem.DirectoryServices.DirectorySearcher$Searcher.Filter="(sAMAccountName=$($Env:USERNAME))"
$Searcher.SearchRoot = "LDAP://$Env:USERDNSDOMAIN"
$Searcher.SearchScope = 'Subtree'
$ADAccount = $Searcher.FindAll()
$PwdLastSet = [DateTime]::FromFileTime($ADAccount.Properties.pwdlastset[0])
$PwdAge = (New-TimeSpan $PwdLastSet (Get-Date)).TotalDays
$NextPwdChange = 60 - $PwdAge
[Math]::Round($NextPwdChange, 0) | Out-File (Join-Path $Env:USERPROFILE 'pwdage.txt')

Isso descobrirá a última vez que a senha do usuário foi alterada, calculará a sua idade e gravará a diferença de 60 dias em um arquivo de texto na pasta do perfil do usuário. Então, se eu mudei minha senha 30 dias atrás, ela escreveria "30" no arquivo de texto porque tenho 30 dias para ir até a próxima mudança de senha.

Em seguida, você pode fazer com que o BGInfo consuma o conteúdo desse arquivo de texto.

    
por 08.05.2016 / 21:35
1

Obrigado pelo ótimo Script do PowerShell. Uma coisa que eu tive que mudar (codificação de txt de utf para ascii) porque o BGInfo não pode exibir arquivos UTF TXT.

$Searcher = New-Object System.DirectoryServices.DirectorySearcher
$Searcher.Filter = "(sAMAccountName=$($Env:USERNAME))"
$Searcher.SearchRoot = "LDAP://$Env:USERDNSDOMAIN"
$Searcher.SearchScope = 'Subtree'
$ADAccount = $Searcher.FindAll()
$PwdLastSet = [DateTime]::FromFileTime($ADAccount.Properties.pwdlastset[0])
$PwdAge = (New-TimeSpan $PwdLastSet (Get-Date)).TotalDays
$NextPwdChange = 60 - $PwdAge
[Math]::Round($NextPwdChange, 0) | Out-File -encoding {ascii} (Join-Path $Env:USERPROFILE 'pwdage.txt' )
    
por 19.05.2016 / 15:21
0

Eu só queria descartar uma pequena modificação do script Powershell sugerido, com base no msDS-UserPasswordExpiryTimeComputed propriedade. Ele tem o benefício de fornecer automaticamente a data / hora exatas quando a senha do usuário determinado expirará, mesmo considerando itens como políticas de senha refinadas, caso você esteja usando-as. Portanto, não há necessidade de codificar qualquer valor conhecido para sua política de senha existente e, se você alterar sua política, não será necessário atualizar o script.

$Searcher = [adsisearcher]"(&(sAMAccountName=$($Env:USERNAME))(sAMAccountType=805306368))"
$Searcher.PropertiesToLoad.Add("msDS-UserPasswordExpiryTimeComputed")
$ADAccount = $Searcher.FindOne()
$PwdExp = [DateTime]::FromFileTime($me.Properties.'msds-userpasswordexpirytimecomputed'[0])
$NextPwdChange = [Math]::Round(($PwdExp - (Get-Date)).TotalDays)
$NextPwdChange | Out-File -encoding {ascii} (Join-Path $Env:USERPROFILE 'pwdage.txt' )
    
por 29.05.2016 / 10:04
0

Sua ideia é boa, mas o script apresenta erros.

Erro

Também fiz um novo script que exibe a data de vencimento no formato DD: MM: AAAA HH: MM. Você só precisa modificar o valor de idade máximo da senha. Se você tiver usuários que não fazem logoff no final do dia, o BGInfo continuará exibindo os mesmos dias até a expiração da senha, o que resulta em um valor incorreto. Nós implementamos o seguinte script:

$Searcher = New-Object System.DirectoryServices.DirectorySearcher
$Searcher.Filter = "(sAMAccountName=$($Env:USERNAME))" 
$Searcher.SearchRoot = "LDAP://$Env:USERDNSDOMAIN" 
$Searcher.SearchScope = 'Subtree' 
$ADAccount = $Searcher.FindAll() 
$PwdLastSet = [datetime]::FromFileTime($ADAccount.Properties.pwdlastset[0])
$PwdExpire =$PwdLastSet.AddDays(60)
$PwdExpire = $PwdExpire.ToShortDateString() + " " + $PwdExpire.ToShortTimeString()
$PwdAge = (New-TimeSpan $PwdLastSet (Get-Date))
$NextPwdChange = $PwdAge
$PwdExpire | Out-File -encoding {ascii} (Join-Path $Env:USERPROFILE 'pwdage.txt' )

Também é importante criar 2 políticas (1 para o BGInfo e 1 para o PS-Script), pois, caso contrário, o PS-Script demorará muito para criar o arquivo .txt e o BGInfo não poderá exibir o valor na área de trabalho. Além disso, defina a configuração: Execute o PS-Scripts primeiro em Policy. Isso funcionou para nós.

    
por 31.05.2016 / 11:12