it-swarm-vi.tech

Powershell: Làm thế nào để tôi truy vấn pwdLastSet và nó có ý nghĩa gì không?

Tôi cần nhận được thay đổi mật khẩu cuối cùng cho một nhóm tài khoản trong nhóm bảo mật Active Directory và tôi cảm thấy đây là điều mà PowerShell nên làm.

Ngay bây giờ, tôi đã bị mắc kẹt trong cách đọc thuộc tính pwdLastSet từ tài khoản AD tôi đang xem. Thậm chí chạy một cái gì đó đơn giản như thế này:

[adsi] "LDAP://cn=user1,ou=Staff,ou=User Accounts,dc=ramalamadingdong,dc=net" | Format-List *

đưa ra kết quả cho pwdLastSet xuất hiện như thế này:

pwdLastSet            : {System.__ComObject}

Tôi cảm thấy như mình hiểu sai về điều này, vậy cách tốt nhất để truy vấn và sau đó định dạng đầu ra (giá trị dựa trên Windows Epoch và không thể đọc được của con người) của thuộc tính pwdLastSet?

17
Bob

Bạn cũng có thể làm điều này mà không cần một snap-in. Tôi đã thử điều này và nó đã làm việc:

[.__.] PS #> $ searcher = New-Object DirectoryService.DirectorySearcher [.__.] PS #> $ searcher.Filter = "(& (samaccountname = user1))" [.__.] PS #> $ results = $ searcher.findone () [.__.] PS #> [datetime] :: fromfiletime ($ results.properIES.pwdlastset [0]) [.__.] [.__.] Thứ tư, ngày 10 tháng 6 năm 2009 4: 32:08 CH [.__.] [.__.]

Tôi cũng nhận được Hệ thống .__ ComObject cho pwdLastSet nếu tôi có bộ đối tượng người dùng được đặt như thế này:
[.__.] $ user = [adsi] "LDAP: // cn = user1, ou = Nhân viên, ou = Tài khoản người dùng, dc = ramalamadingdong, dc = net"

Cần có một cách để sử dụng [System .__ ComObject] .InvokeMember () và phản chiếu để lấy giá trị pwdLastSet đó từ đối tượng người dùng $, nhưng tôi chưa thể hiểu đúng. Tôi chưa bao giờ tìm ra nó, vì vậy tôi đã sử dụng ví dụ trên và tiếp tục.

Nếu bạn sẽ làm nhiều việc với AD (hoặc Exchange hoặc SQL Server), bạn có thể muốn lấy snapin cho nó và sử dụng nó.

13
Bratch

Các lệnh AD sẵn có đi kèm với Windows 7/Windows Server 2008 R2 giờ đây có thể thực hiện việc này một cách đơn giản. Trên Windows 7 từ Lời nhắc của Powershell:

Import-Module ActiveDirectory
Get-ADUser 'user1' -properties PasswordLastSet | Format-List

Thuộc tính "PasswordLastSet" dường như là phiên bản dịch của thuộc tính "pwdLastSet" thực tế.

19
Neobyte

Có một cách dễ dàng hơn.

Đối tượng ADSI có một phương thức gọi là ConvertLargeIntegerToInt64. Lưu ý rằng đó là một phương thức của đối tượng ADSI và không Hệ thống .__ Comobject được trả về bằng cách truy vấn giá trị của dấu thời gian, vì vậy $ user.pwdLastSet.value.ConvertLargeIntegerToInt64 () sẽ không hoạt động. Bạn cần phải gọi nó như sau:

$user.ConvertLargeIntegerToInt64($user.pwdLastSet.value)

Điều đó sẽ giúp bạn có dấu thời gian LDAP, cần được chuyển đổi thành ngày có thể đọc được, như được giải thích bởi Bratch ở trên. Điều này sẽ hoạt động đối với bất kỳ giá trị thuộc tính dấu thời gian nào được cung cấp bởi nhà cung cấp ADSI và phương thức ConvertLargeIntegerToInt64 được (tôi tin) thể hiện bởi bất kỳ đối tượng nào đại diện cho một mục nhập thư mục.

Đặt tất cả lại với nhau, đây là cách bạn có được ngày khi mật khẩu được đặt lần cuối:

$user = [ADSI]'LDAP://cn=someusername,ou=someou,dc=somedomain,dc=com'
[datetime]::FromFileTime($user.ConvertLargeIntegerToInt64($user.pwdLastSet.value))
3
Adi Inbar

Đây là một cách dễ dàng để hiển thị Máy tính AD:

Get-ADComputer -Filter *  -Properties name,LastLogonDate,PasswordLastSet,modified,modifyTimeStamp |
  FT Name,DNSHostName,LastLogonDate,PasswordLastSet,modified,modifyTimeStamp | 
    Out-File Computers.csv
3
William

Thêm chức năng ConvertADSLUNDInteger vào tập lệnh của bạn, bạn có thể lấy nó ở đây:

PowerShell: Chuyển đổi Active Directory IADSLargeInteger thành System.Int64

Đây là cách bạn sẽ sử dụng nó:

$user = [adsi] "LDAP://cn=user1,ou=Staff,ou=User Accounts,dc=ramalamadingdong,dc=net"
[datetime]::FromFileTimeUtc((ConvertADSLargeInteger $user.pwdlastset.value))
1
Mike Pfeiffer

Cài đặt: http://www.quest.com/powershell/activeroles-server.aspx

quyền hạn mở

Chạy các lệnh sau:

add-PSSnapin Quest.activeroles.adman Management

Get-QADUser | ft displayname, PasswordLastSet

Lệnh đầu tiên tải snapin bạn vừa tải xuống. Bạn không cần phải làm điều này nếu bạn sử dụng phím tắt để tìm kiếm trong startmenu của bạn. Lệnh thứ hai nhận được danh sách tất cả và người dùng và thời gian mật khẩu được thay đổi lần cuối.

1
baz

có lẽ bạn nên xem xét bằng cách sử dụng thuộc tính passwordLastChanged. Xem tại đây để biết thêm thông tin: http://www.Microsoft.com/technet/scriptcenter/resource/qanda/aug06/hey0801.mspx

0
mrTomahawk