5

Próbuję uruchomić skrypt powershell że zapytania dla kont, które wygasają w ciągu 7 dni, obecnie mamPowerShell znaleźć użytkownicy wygasające w ciągu 7 dni

$a = (get-date).AddDays(7) ; Search-ADAccount -AccountExpiring -TimeSpan "7" | Select-Object SamAccountName,AccountExpirationDate | Sort-Object AccountExpirationDate | Export-Csv 7_days.csv

Jednak kiedy wprowadzić następujące zmiany, wydaje się, że pewne kłopoty i ostatecznie otrzymuję pusty plik CSV. Ostatecznie chcę, aby konto wygasało w ciągu 7 dni, nie więcej, nie mniej.

$a = (get-date).AddDays(7) ; Search-ADAccount -AccountExpiring -TimeSpan "7" | Select-Object SamAccountName,AccountExpirationDate | Sort-Object AccountExpirationDate | Where-Object {$_.AccountExpirationDate -like $a } | Export-Csv 7_days.csv

Czy ktoś może mi powiedzieć, co robię źle? Próbowałem przenieść element "Where-Object {$ _. AccountExpirationDate-like $ a}", lub "-match" zamiast "like", jednak nie przyniosły mi one dużego sukcesu. Gdzie się z tym nie zgadzam?

Odpowiedz

9

Aktualizacja: Możesz uzyskać rachunki, jeśli przekazujesz wartość ciągu, przekazując liczbę całkowitą inicjalizuje czas do 7 ticks!

Search-ADAccount -AccountExpiring -TimeSpan "7" 

inne ważne opcje:

Search-ADAccount -AccountExpiring -TimeSpan (New-TimeSpan -Days 7) 
Search-ADAccount -AccountExpiring -TimeSpan ([TimeSpan]::FromDays(7)) 

Może być to błąd, to nie działa dla mnie. Oto obejście:

$NeverExpires = 9223372036854775807 
$ExpringIn = (Get-Date).AddDays(7) 

Get-ADUser -Filter * -Properties accountExpires | 
Where-Object {$_.accountExpires -ne $NeverExpires -and [datetime]::FromFileTime([int64]::Parse($_.accountExpires)) -lt $ExpringIn } 
+0

Jest to najbliżej odpowiedź tak daleko, że nie dostał pożądany wynik jeszcze, ale dzięki twojej pomocy zbliżyłeś się: $ NeverExpires = 9223372036854775807; $ ExpringIn = (Get-Date) .AddDays (7); foreach ($ item in Get -AdUser -Filter * -Properties accountExpires | Where-Object {$ _. AccountExpires -ne $ NeverExpires -i [datetime] :: FromFileTime ([int64] :: Parse ($ _. AccountExpires)) -lt $ ExpringIn} | select-object SamAccountName, accountExpires) {Write-Host $ item.SamAccountName ([datetime] :: FromFileTime (($ item.accountExpires). "msDS-UserPasswordExpiryTimeComputed"))} – perlnoob

+0

Witam, gdzie mogę uzyskać cmdlet "Get- ADUser "z? –

+0

Jest to część modułu AD, który jest częścią RSAT (Remote Server Administration Tools). http://www.microsoft.com/en-us/download/details.aspx?id=7887 –

2

Atrybut używany jest accountExpires i ekspresowych w Pacquet 100 nanosekunda od 1600

PS C:\Windows\system32> Get-ADuser user1 -Properties accountExpires 


accountExpires : 129821976000000000 
DistinguishedName : CN=user1 users,OU=OUTest,DC=dom,DC=fr 
Enabled   : True 
GivenName   : user1 
Name    : user1 users 
ObjectClass  : user 
ObjectGUID  : b1bef798-8e36-45ff-ad11-e79f89769efc 
SamAccountName : user1 
SID    : S-1-5-21-3115856885-816991240-3296679909-1146 
Surname   : Users 
UserPrincipalName : [email protected] 

można przekonwertować go do [dateTime] tak:

PS> [datetime](Get-ADuser user1 -Properties accountExpires).accountExpires 

mardi 22 mai 0412 22:00:00 
1

Chociaż jest to stary wątek. Pozwólcie, że dodaję krótką notatkę i słowo ostrożności.

Bardzo prosimy o konta, które mają 7 dni. 7 dni i 2 godziny nie będą miały 7 dni, a zatem nie będą pasować do zapytania (być może dlatego Twój CSV jest pusty).

Dlatego zawsze będziesz chciał powiedzieć konto, które trwa dłużej niż 7 dni, a mniej niż 8 (itp.), Aby złapać wszystkich, które są w ciągu 7 dnia. etc ...

Dodatkowo, powyższy kod
[datetime] (Get-ADuser user1 -Properties accountExpires) .accountExpires
dają mi błąd
Nie można przekonwertować wartości "9223372036854775807" do wpisz "System.DateTime". Błąd: "Znaczniki muszą należeć do DateTime.MinValue.Ticks i DateTime.MaxValue.Ticks.Nazwa Parametr: kleszcze”

Można również sprawdzić http://social.technet.microsoft.com/Forums/scriptcenter/en-US/b70113b1-a043-4543-afa0-dbba5757d035/powershell-windows-2008-getaduser-accountexpirationdate-returns-wrong-result?forum=ITCG

Powiązane problemy