web-dev-qa-db-ja.com

過去26週間以内にドメインに接続したWindows XP)を実行しているシステムを検索するDSQuery

XP)を実行している、過去26週間以内にドメインに接続したシステムを教えてくれる単一のdsqueryを作成しようとしているので、段階的に廃止する必要があるものを把握できます。次の2か月。

私が現在直面している問題は、Windowsを実行しているシステムを見つけるためにdsqueryを実行すると、XPシステムのリストが返されることです。その多くは、アクティブではないことがわかっています。 ADオブジェクトとして削除されます(これは別の問題です。ベストプラクティス/セキュリティの講義を控えてください...一度に1つずつ)。

以下のクエリを使用して、Windows XPを実行しているシステムを検索し、それをテキストファイルに出力します。

dsquery * domainroot -filter "(&(objectCategory=computer)(operatingSystem=Windows XP*))" -limit 1000 > c:\XP_Machines.txt

上記の出力のどのシステムが過去26週間以内にネットワークに接続したかを示すクエリに追加したいと思います。

実行できる過去26週間に接続されていないシステムを見つけることを知っています。

dsquery computer -inactive 26

ただし、Windows XPを実行しているシステム出力のサブセットとして、過去26週間にアクティブになっているシステムを見つける方法がわかりません。

よろしくお願いします。

注: PowerShellを使用してこれを行うためのより良い方法があれば、私もそれを受け入れます。

2
Windows Ninja

LastLogonTimestamp属性をフィルターに追加し、6か月前のlastLogonTimestampの数値を取得します。例:

dsquery * domainRoot -filter "(&(objectCategory=computer)(operatingSystem=Windows XP*)(lastLogonTimestamp<=130200503900000000))" -limit 1000

130200503900000000は2013-08-0320:39:50の値です

PowerShellでは、次のように数値fileTimeを取得できます。

[datetime]::Now.AddDays(-180).ToFileTime()  

http://blogs.technet.com/b/ashleymcglone/archive/2013/12/20/back-to-the-future-working-with-date-data-types-in-active-directory- powershell.aspx

3
Greg Askew