2016-09-21 18 views
-1

我在微軟腳本中心網站上發現了這個代碼。找到舊的AD機器

Import-Module ActiveDirectory 
$domain = "ourdomain.org" 
$DaysInactive = 90 
$time = (Get-Date).Adddays(-($DaysInactive)) 
$sourceOU = 'OU=All_Workstations,DC=ourdomain,DC=org' 
Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} -Properties LastLogonTimeStamp -SearchBase $sourceOU | 
    Select-Object Name,@{Name="Stamp"; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp)}} | 
    Export-Csv "c:\temp\OLD_Computers.csv" -NoTypeInformation 

我運行了這段代碼,它創建了CSV文件。然後我運行一個ping腳本來對付它找到的計算機名稱。有一半的機器在線並可以ping通。
那麼什麼構成「無效」?如果我的一半機器仍然在線,並且可以ping通它們,那麼這個腳本似乎沒有什麼用處。

+1

什麼構成不活動 - 如果lastLogonTimestamp在90天內沒有更新。什麼更新它? https://blogs.technet.microsoft.com/askds/2009/04/15/the-lastlogontimestamp-attribute-what-it-was-designed-for-and-how-it-works/說它是交互式登錄,網絡和服務登錄。沒有人使用電腦嗎?您的AD複製是否被破壞?您的域名不在2003域功能級別或更高?你確定這些名字的IP地址指向那些實際的計算機,而不是其他計算機或其他東西嗎? – TessellatingHeckler

+2

+1 @TessellatingHeckler關於2003+和AD-repl的評論。問題。另外:1.這是一個AD /計算機管​​理問題,屬於服務器故障。 2.你確定它們是同一臺計算機,而不是早已被清除的舊DNS記錄嗎? 。嘗試檢查'pwdlastset'也。它每30天更新一次(或密碼策略的時間間隔),除非有人在客戶端 –

回答

0

嘗試使用替代的lastLogonTimestamp

Import-Module ActiveDirectory 
$domain = "ourdomain.org" 
$DaysInactive = 90 
$time = (Get-Date).Adddays(-($DaysInactive)) 
$sourceOU = 'OU=All_Workstations,DC=ourdomain,DC=org' 
Get-ADComputer -Filter {LastLogonDate -lt $time} -Properties LastLogonDate -SearchBase $sourceOU | 
Select-Object Name,@{Name="Stamp"; Expression={[DateTime]::FromFileTime($_.lastLogonDate)}} | 
Export-Csv "c:\temp\OLD_Computers.csv" -NoTypeInformation 
+0

上禁用它,謝謝。對不起,我已經回到這篇文章已經有一段時間了。但....即使這個代碼(使用LastLogonDate)不起作用。我收到了幾百臺機器的清單,然後我ping了這個清單,一半機器在線。 – mqh7

+0

我在完成前打入輸入。我知道我們用更新的硬件取代了許多筆記本電腦/臺式機,並且新硬件獲得了新名稱(基於資產標籤信息),因此舊計算機將從環境中移除。 。沒有辦法準確找到AD中「死記錄」的機器嗎? – mqh7

+0

這是我用來在我的域上找到舊電腦的代碼 –