Usuário com melhor resposta
Recuperar informações da conta do usuário

Pergunta
-
Respostas
-
Não testei este script, ainda estou desenvolvendo, por favor me avisem sobre valores errados que vcs possam a vir encontrar.
Script em PowerShell(.ps1), vocês precisam apenas alterar o caminha de saida (primeira linha)
$ArquivoSaida = "C:\temp\usuarios.txt" $strFilter = "(&(objectCategory=person)(objectClass=user))" #Cria Hash Vazio $hash = @{} ###################### # Recupera o nome de cada DC $StrDCs = [System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain() | foreach{$_.DomainControllers| foreach{$_.Name}} $StrDCs | foreach-object { $StrEachDC = "LDAP://"+$_.split(".")[0] $objDomain = New-Object System.DirectoryServices.DirectoryEntry $StrEachDC $objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = $objDomain $objSearcher.PageSize = 1000 $objSearcher.Filter = $strFilter $objSearcher.SearchScope = "Subtree" $colProplist = "name","sAMAccountName","lastlogon","whenCreated" foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)} $colResults = $objSearcher.FindAll() foreach ($objResult in $colResults){ $Usuario = $objResult.Properties; $dtLogon = $lastlogon =[DateTime]::FromFileTime([Int64]::Parse($Usuario.lastlogon)) $dtCreated= $Usuario.whencreated[0] $usr=$Usuario.samaccountname[0] #Monta Array $arrTmp = ($Usuario.name[0],$dtCreated,$dtLogon) if (-not $Hash.ContainsKey($usr)) { $hash.Add($usr, $arrTmp) } else { if ($dt -gt $hash[$usr]){$hash[$usr] = $arrTmp} } } } #Escreve em arquivo "Conta;Nome;Data Criação;Último Logon" | out-file -filepath $ArquivoSaida foreach ($key in $hash.keys){ $Linha = $key+";"+$hash.item($key)[0]+";"+$hash.item($key)[1]+";"+$hash.item($key)[2] $Linha | out-file -filepath $ArquivoSaida -append }
Fábio de Paula Junior- Sugerido como Resposta Fábio JrModerator quarta-feira, 26 de outubro de 2011 10:31
- Marcado como Resposta Fábio JrModerator quinta-feira, 27 de outubro de 2011 10:51
Todas as Respostas
-
Pessoal bom dia,
Preciso gerar um lista de preferencia .xls do AD 2003 com os seguintes ítens:Login, nome, data de criação login, data do último logon.
Alguém com um script para me ajudar?
Abraço.- Mesclado Fábio JrModerator segunda-feira, 24 de outubro de 2011 11:25 Mesma dúvida
-
Não testei este script, ainda estou desenvolvendo, por favor me avisem sobre valores errados que vcs possam a vir encontrar.
Script em PowerShell(.ps1), vocês precisam apenas alterar o caminha de saida (primeira linha)
$ArquivoSaida = "C:\temp\usuarios.txt" $strFilter = "(&(objectCategory=person)(objectClass=user))" #Cria Hash Vazio $hash = @{} ###################### # Recupera o nome de cada DC $StrDCs = [System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain() | foreach{$_.DomainControllers| foreach{$_.Name}} $StrDCs | foreach-object { $StrEachDC = "LDAP://"+$_.split(".")[0] $objDomain = New-Object System.DirectoryServices.DirectoryEntry $StrEachDC $objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = $objDomain $objSearcher.PageSize = 1000 $objSearcher.Filter = $strFilter $objSearcher.SearchScope = "Subtree" $colProplist = "name","sAMAccountName","lastlogon","whenCreated" foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)} $colResults = $objSearcher.FindAll() foreach ($objResult in $colResults){ $Usuario = $objResult.Properties; $dtLogon = $lastlogon =[DateTime]::FromFileTime([Int64]::Parse($Usuario.lastlogon)) $dtCreated= $Usuario.whencreated[0] $usr=$Usuario.samaccountname[0] #Monta Array $arrTmp = ($Usuario.name[0],$dtCreated,$dtLogon) if (-not $Hash.ContainsKey($usr)) { $hash.Add($usr, $arrTmp) } else { if ($dt -gt $hash[$usr]){$hash[$usr] = $arrTmp} } } } #Escreve em arquivo "Conta;Nome;Data Criação;Último Logon" | out-file -filepath $ArquivoSaida foreach ($key in $hash.keys){ $Linha = $key+";"+$hash.item($key)[0]+";"+$hash.item($key)[1]+";"+$hash.item($key)[2] $Linha | out-file -filepath $ArquivoSaida -append }
Fábio de Paula Junior- Sugerido como Resposta Fábio JrModerator quarta-feira, 26 de outubro de 2011 10:31
- Marcado como Resposta Fábio JrModerator quinta-feira, 27 de outubro de 2011 10:51
-
Bom dia Fabio Jr.
Recebi o retorno do comando:
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.PS C:\Documents and Settings\user\ coleta.ps1
The term 'coleta.ps1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:11
+ coleta.ps1 <<<<
+ CategoryInfo : ObjectNotFound: (coleta.ps1:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundExceptionPS C:\Documents and Settings\user> cd desktop
PS C:\Documents and Settings\user\desktop> coleta.ps1
The term 'coleta.ps1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:11
+ coleta.ps1 <<<<
+ CategoryInfo : ObjectNotFound: (coleta.ps1:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Suggestion [3,General]: The command coleta.ps1 was not found, but does exist in the current location. Windows PowerShell
doesn't load commands from the current location by default. If you trust this command, instead type ".\coleta.ps1". See
"get-help about_Command_Precedence" for more details. -
Para executar script Powershell é um pouco diferente.
De dentro do prompt do power shell ao invés de :
PS C:\Documents and Settings\user\desktop> coleta.ps1
adicione .\:
PS C:\Documents and Settings\user\desktop> .\coleta.ps1
Parecido com Linux.
Fábio de Paula Junior -
Running Windows PowerShell Scripts
http://technet.microsoft.com/en-us/library/ee176949.aspx
Fábio de Paula Junior -
-
-
-
-
-
O server restringiu? Sem o erro exato fica dificil mas suponho que seja a politica de execução de script.
Abra um prompt do powershell como administrador e execute o comando: Set-ExecutionPolicy Unrestricted
Ref.: http://technet.microsoft.com/en-us/library/ee176961.aspx
Fábio de Paula Junior -