엔터프라이즈 데스크탑 추적

엔터프라이즈 데스크탑 추적

내 업무 중 하나는 특정 OU에 있는 컴퓨터의 경우 실제로 사용 중인 항목 = AD에 나열된 항목 = SCCM에 나열된 항목인지 확인하는 것입니다. 이는 250,000대의 PC가 있는 환경을 위한 것이지만 특히 한 부서의 70,000대에 관심이 있습니다. AD를 SCCM과 비교하는 것은 매우 쉽지만 실제로 존재하지 않는 컴퓨터를 추적하는 것은 더 어렵습니다. 나는 이것을 알아내기 위한 창의적인 방법을 생각하려고 노력하고 있습니다.

제 질문은: X일 동안 로그인하지 않은 컴퓨터에 대해 Powershell을 사용하여 AD를 쿼리하기 위해 존재하지 않는 컴퓨터를 찾는 좋은 방법이 있을까요?

나는 다음과 같이 powershell에서 훨씬 더 복잡한 작업에 대해 생각했습니다. AD에서 dnshostnames를 가져와 내 OU에 있는 모든 호스트를 Ping하고 성공하려면 목록에서 제거합니다. 일주일 동안 6시간마다 이 명령을 실행하여 ping에 성공한 시스템을 계속 제거합니다. 노트북은 다르게 처리해야 합니다.

다른 아이디어나 제안 등이 있나요?

답변1

Patrick의 포괄적인 제안을 변형하여 복제된 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

다음과 같은 것이 필요한 것 같습니다.oldcmp:http://www.joeware.net/freetools/tools/oldcmp/

마지막으로 로그인하지 않은 컴퓨터에 대해 지정된 도메인 또는 조직 단위를 검색합니다.엑스일 이내에 해당 컴퓨터 계정을 비활성화할 수 있는 보고 기능이나 기능을 제공합니다.

Active Directory의 도구와 표현은 도메인이 알고 있는 내용만 나타내므로 보고 프로세스를 구축해야 합니다.외부Active Directory 환경에 추가하여 실제로 조직을 떠났으며 제거해야 하는지 확인하는 데 사용되지 않은 것으로 보고된 시스템을 추적할 수 있습니다. 여기서 가장 좋은 예는 실제로 랩톱입니다. 실제로는 랩톱이 오프라인에서 사용 중이라는 사실이 숨겨지는데도 도구에서는 랩톱을 사용하지 않는 것으로 보고할 수 있습니다.

기계가 마지막으로 하트비트를 제공할 수 있었던 시간을 조사하기 위해 SCCM의 보고서와 관련된 유사한 접근 방식을 사용할 수 있습니다. 기계에 작동하는 SCCM 클라이언트가 있는 경우 이는 보고서를 가져와서 핑을 시도하는 것(엄청나게 노동 집약적이고 거짓 긍정 결과가 발생하기 쉬운 기술)보다 더 나은 접근 방식일 것입니다.

답변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일보다 오래된 컴퓨터 계정을 찾으면 이는 이 기간 동안 로그온하지 않은 컴퓨터입니다. 이 수치는 'lastLogon'이 아닌 곳에 복제되므로 이는 대규모 다중 DC 네트워크에 적합합니다.

위 스크립트의 줄을 수정하여 '.lastLogon'을 제거하고 '.whenChanged'로 바꾸세요.

Quest AD를 설치할 수 없는 경우 RSAT가 설치된 컴퓨터(또는 DC)를 사용하고 Get-ADComputer cmdlet('Import-Module ActiveDirectory' 유형)을 사용해야 합니다.

향후 사용을 추적하는 세 번째 옵션은 로그온 스크립트를 사용하는 것입니다. 나는 몇 년 전에 클라이언트에서 이 작업을 수행했고 잘 작동했습니다. 비록 우리가 ~70K가 아닌 몇 백 대의 컴퓨터를 사용하고 있었지만 말입니다.

당시 로그온 스크립트는 .BAT 파일이었습니다. 다음 줄(예: LogonTrack.BAT)을 사용하여 NETLOGON에서 새 .BAT를 만듭니다.

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

70,000명의 사용자가 사용할 수 있는 로그온 배치 파일 끝에 한 줄을 추가합니다.

call LogonTrack.BAT

이렇게 하면 컴퓨터 이름이 포함된 파일이 생성되며, 파일 날짜는 매핑된 위치의 마지막 로그온 날짜입니다.

나는 이것을 권장하지 않지만 일반적으로 가능한 경우 로그 다이빙을 피하지만 이 정보에 대한 이벤트 로그를 감사할 수 있습니다. 당신은 필요할 것이다이벤트 4624.

마지막으로 나도 사용한다LAN 스위퍼클라이언트에서는 훌륭합니다. 오래된 컴퓨터에 대한 훌륭한 보고가 있습니다. 하지만 별도의 설치와 서버가 필요한 유료 제품이기 때문에 별 도움이 되지 않을 수도 있습니다. 게다가 250K 시스템의 경우에는 그냥 방치되어 있던 용도가 변경된 VM이 아니라 상당히 강력한 백엔드가 필요합니다.

관련 정보