追蹤企業桌面

追蹤企業桌面

我的部分工作是確保對於特定 OU 中的計算機,實際使用的內容 = AD 中列出的內容 = SCCM 中列出的內容。這是針對 250k PC 的環境,但我特別關心一個部門的 70k。將 AD 與 SCCM 進行比較非常容易,但追蹤實際上並不存在的電腦則更困難。我正在嘗試想出一些創意的方法來解決這個問題。

我的問題是:是否有一個好方法可以找到不存在的計算機,以使用 Powershell 查詢 AD 中 X 天未登入的計算機?

我在 powershell 中考慮了一個更複雜的任務,如下所示:從 AD Ping 我的 OU 中的所有主機中提取 dnshostnames,如果成功,請將它們從清單中刪除。例如一週內每 6 小時運行一次,繼續刪除 ping 成功的機器。我必須以不同的方式處理筆記型電腦。

還有其他想法、建議等嗎?

答案1

根據帕特里克綜合建議的變體,我將使用複製LastLogontimeStamp屬性來縮小搜尋範圍:

Import-Module ActiveDirectory
$threshold = (Get-Date).AddDays(-44)
$computers Get-ADComputer -Filter * -SearchBase "ou=desiredou,dc=domain,dc=tld" -Properties LastLogontimeStamp
$oldComps = $computers | where {[Date.Time]::FromFileTime($_.lastlogontimestamp) -lt $threshold}

$oldComps然後將保留所有至少 30 天內未登入的電腦。

44 天的閾值有點違反直覺,但為了防止大量複製更新LastLogontimeStamp,該屬性僅在其值早於 9 天時才會更新。如果該值過期 9 到 14 天,隨機過程將決定是否更新它。

這是一個很好的解釋:http://blogs.technet.com/b/askds/archive/2009/04/15/the-lastlogontimestamp-attribute-what-it-was-Designed-for-and-how-it-works.aspx

答案2

聽起來你需要類似的東西舊的CMP:http://www.joeware.net/freetools/tools/oldcmp/

這會搜尋為上次未登入的電腦指定的網域或組織單位X天,並為您提供報告或停用這些電腦帳戶的工具。

Active Directory 中的工具和表示僅代表網域所了解的內容,因此您仍需要建立報表流程外部的到 Active Directory 環境,使您能夠追蹤報告為尚未使用的計算機,以驗證它們實際上已離開組織並應將其刪除。這裡的一個主要例子確實是筆記型電腦:這些工具可能會將筆記型電腦報告為無法使用,而實際上這隱藏了筆記型電腦只是在離線使用的事實。

類似的方法可以使用 SCCM 中的報告來調查機器最後一次能夠發出心跳的時間;如果機器有正常運作的 SCCM 用戶端,這可以說是比提取報告並嘗試對它們執行 ping 操作更好的方法 - 這種技術將非常耗費人力並且容易出現誤報結果。

答案3

電腦 AD 物件具有 LastLogon 時間戳,它為您提供電腦目前狀態的有用指示器。

如果您能夠安裝第三方 cmdlet,則探索活動目錄cmdlet 非常有用。

$result = @()
$OU = "DC=ncp,DC=co,DC=uk"
Foreach($computer in (Get-QADComputer -SearchRoot "$ou" -sizelimit 0))
    {
    $result += "$((Get-QADComputer $computer -IncludeAllProperties).lastLogon), $computer"
    }

$result 將列出指定 OU 中的所有電腦及其上次登入日期,如下所示:

06/10/2013 08:48:25, NATTHN21$
05/13/2011 14:54:04, NATTHN02$
06/10/2013 08:42:51, NATRHN01$
06/10/2013 08:45:38, NCPHON01$

您需要針對該電腦可能登入的所有 DC 執行此命令。對於像你這樣規模的組織來說,這可能是不切實際的。

作為替代措施。電腦 AD 物件上的物件屬性「whenChanged」是電腦帳號密碼。這會在 30 天後自動更新(通常在 Win 2K 及更高版本中預設。檢查預設網域群組原則物件可以確認這一點)。

如果您發現電腦帳戶的「whenChanged」時間早於 30 天,則這些電腦在此期間未登入。這對於較大的多 DC 網路來說效果很好,因為這個數字在「lastLogon」不存在的地方被複製。

只需修改上面腳本中的行以刪除“.lastLogon”並將其替換為“.whenChanged”

如果您無法安裝 Quest AD,則需要使用安裝了 RSAT 的電腦(或 DC)並使用 Get-ADComputer cmdlet(鍵入「Import-Module ActiveDirectory」)。

追蹤未來使用的第三個選項是使用登入腳本。幾年前我在一個客戶那裡做過這個,效果很好,儘管我們有幾百台機器,而不是大約 70K。

當時我們的登入腳本是一個 .BAT 檔案。使用以下行在 NETLOGON 中建立新的 .BAT(例如 LogonTrack.BAT)

::LogonTrack.BAT
ECHO %date% >Z:\%computername%

在 70K 使用者可能使用的任何登入批次檔的末尾新增一行

call LogonTrack.BAT

這將建立一個具有電腦名稱的文件,文件日期是映射位置的上次登入日期。

我不建議這樣做,但您可以審核事件日誌以獲取此信息,儘管我通常會盡可能避免進行日誌潛水。你需要活動 4624

最後我也用區域網路掃描器在客戶那裡,這很棒。這對舊計算機有很好的報告。然而,作為一種付費產品,需要單獨安裝和伺服器,因此可能對您沒有任何好處。另外,對於 250K 系統,您需要一個相當強大的後端,而不是一個可以重新調整用途的現有虛擬機器。

相關內容