5

Tôi cố gắng để chạy một kịch bản PowerShell mà truy vấn cho các tài khoản đó hết hiệu lực trong vòng 7 ngày, Tôi hiện đang cóPowershell tìm người sử dụng hết hạn trong 7 ngày

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

Tuy nhiên khi tôi thực hiện thay đổi sau đây, nó dường như có một số rắc rối và tôi sẽ nhận được một tệp CSV trống. Cuối cùng tôi muốn tài khoản hết hạn sau 7 ngày, không nhiều hơn, không ít hơn.

$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

Ai đó có thể cho tôi biết tôi đang làm gì sai không? Tôi đã cố gắng di chuyển "Where-Object {$ _. AccountExpirationDate-like $ a}" mảnh xung quanh, hoặc "-match" thay vì "-like", tuy nhiên những havn't landed tôi nhiều thành công. Tôi đang đi sai với điều này?

Trả lời

9

Cập nhật: Bạn có thể nhận các tài khoản nếu bạn chuyển một giá trị chuỗi, chuyển số nguyên khởi tạo khoảng thời gian lên 7 lần!

Search-ADAccount -AccountExpiring -TimeSpan "7" 

tùy chọn hợp lệ khác:

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

Có thể là một lỗi, nó không hoạt động đối với tôi là tốt. Dưới đây là một cách giải quyết:

$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

Đây là câu trả lời gần nhất cho đến nay, tôi đã không nhận các kết quả mong muốn, nhưng nhờ sự giúp đỡ của bạn đã nhận được gần hơn: $ NeverExpires = 9223372036854775807; $ ExpringIn = (Get-Date) .AddDays (7); foreach ($ item in Get -ADUser -Filter * Tài khoản -PropertiesExpires | Đối tượng {$ _. AccountExpires -ne $ NeverExpires-và [datetime] :: FromFileTime ([int64] :: Parse ($ _. AccountExpires)) -lt $ ExpringIn} | chọn đối tượng SamAccountName, accountExpires) {Write-Host $ item.SamAccountName ([datetime] :: FromFileTime (($ item.accountExpires). "msDS-UserPasswordExpiryTimeComputed"))} – perlnoob

+0

Xin chào, tôi có thể lấy lệnh ở đâu "Get- ADUser "từ? –

+0

Đây là một phần của mô-đun AD là một phần của RSAT (Công cụ quản trị máy chủ từ xa). http://www.microsoft.com/en-us/download/details.aspx?id=7887 –

2

Thuộc tính được sử dụng là accountExpires và nhanh trong pacquet 100 nano giây kể từ 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] 

bạn có thể chuyển nó sang [DATETIME] như thế này:

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

mardi 22 mai 0412 22:00:00 
1

Mặc dù đây là chủ đề cũ .. Hãy để tôi thêm ghi chú nhanh và chú ý cẩn thận ..

Yêu cầu tài khoản được 7 ngày. 7 ngày và 2 giờ sẽ không là 7 ngày và do đó sẽ không khớp với truy vấn (có thể là lý do tại sao CSV của bạn trống).

Do đó, bạn sẽ luôn muốn nói tài khoản có nhiều hơn 7 ngày và ít hơn 8 (v.v) để nắm bắt tất cả những gì nằm trong ngày thứ 7. vv ...

Bên cạnh đó, các mã trên
[datetime] (Get-ADuser user1 -Properties accountExpires) .accountExpires
cho tôi một lỗi
Không thể chuyển đổi giá trị "9223372036854775807" để gõ "System.DateTime". Lỗi: "Mật khẩu phải nằm trong khoảng giữa DateTime.MinValue.Ticks và DateTime.MaxValue.Ticks.Tên Parameter: tíc tắc"

Bạn cũng có thể xem xét http://social.technet.microsoft.com/Forums/scriptcenter/en-US/b70113b1-a043-4543-afa0-dbba5757d035/powershell-windows-2008-getaduser-accountexpirationdate-returns-wrong-result?forum=ITCG

Các vấn đề liên quan