3

6 か月間ログインしていないすべてのアカウントを一覧表示しようとしています。

PowerShell を実際に使用するのはこれが初めてで、この時点で自分のニーズに合わせて他の人のスクリプトを編集しているだけです。

検索を、コンピューターのみとユーザーのみの 2 つのリストに分けたいと考えています。

6 か月を超えたコンピュータのコード。

Search-ADAccount -accountinactive -computersonly | where {$_.lastlogondate -lt (get-date).addmonths(-6)} | FT Name,LastLogonDate

6 か月以外のユーザー向けのコード。

Search-ADAccount -accountinactive -usersonly | where {$_.lastlogondate -lt (get-date).addmonths(-6)} | FT Name,LastLogonDate

ただし、これらは機能しておらず、すべてのアカウントを吐き出しているだけです。また、-6 を任意の数値に変更しても実際には効果がないことにも気付きました。提案?

4

4 に答える 4

2

非アクティブなユーザーをカテゴリ別に追跡する方法については、こちらを参照してください (ログオン ステータス、無効なユーザー、パスワードの有効期限が切れたユーザー、アカウントの有効期限が切れたユーザー、ログオンしていないユーザー、削除されたユーザーなど)。

http://www.adsysnet.com/asn-active-directory-inactive-account-tracker-features.aspx

于 2013-11-21T09:43:54.340 に答える
1

テストは問題ありません (私の AD で動作しています) 唯一のことは、$_.lastlogondate が null であるオブジェクトを削除する必要があることです。

試す :

Search-ADAccount -accountinactive -usersonly  | where {! ($_.lastlogondate -lt (get-date).addMonths(-6))} | ft Name,lastlogondate

編集:

lastLogon 属性は Active Directory に複製されないため、各ドメイン コントローラーの Active Directory のコピーに異なる値を格納できます。1 つの解決策は、すべてのドメイン コントローラーをループして、そのようなユーザーのリストを作成することです。しかし、私は別の解決策があると確信しています!

于 2012-05-03T20:21:40.437 に答える
0

-AccountInactiveスイッチと一緒に日付または期間を渡す必要があると思います。そうすることでカスタムフィルターが不要になるはずなので、次のようなものを試してください(テストされていません):

Search-ADAccount -accountinactive -datetime (get-date).AddMonths(-6) -computersonly | ft Name,LastLogonDate
Search-ADAccount -accountinactive -datetime (get-date).AddMonths(-6) -userssonly | ft Name,LastLogonDate
于 2012-05-03T20:01:25.817 に答える
0
$sixMonths = (Get-Date).AddMonths(-6)
Search-ADAccount -accountinactive -usersonly -datetime "$sixMonths"
于 2012-05-03T20:04:42.153 に答える