2013-07-13 2 views
-3

사용자가 터미널 서버에 로그인 (및 로그 오프) 할 때를 모니터링해야합니다. 당연히 보안 로그가이 정보를 알려줄 수는 있지만 더 많은 정보를 제공합니다!Powershell - 감사 이벤트 로그

PowerShell은 Get-EventLog를 사용할 수 있지만 실제로 이벤트, 시간, 사용자 로그인 ID 및 로그 오프 ID 만 기록하도록하는 것이 현명합니까? 아니면 너무 많이 묻는 것입니까?

감사합니다.

+0

"예"또는 "아니오"(이 경우 BTW)는 대답이 아니라고 예상하지 않는 한 예/아니오 질문을해서는 안됩니다. –

+0

[서버 오류] (http://serverfault.com/)에 적합 할 수 있습니다. –

답변

1

귀하의 질문에서 로그인이 발생했을 때 ("사용자가 로그인 할 때 모니터링해야하는지") 또는 나중에 "Get-EventLog"가 제안하는 로그를 검사할지 여부를 묻는 것은 명확하지 않습니다 .

나중에 가정합니다.

이렇게하면 약간의 실험이 필요합니다. 보고자하는 메시지에 대한 이벤트 로그 (eventvwr.msc)를보십시오. 나는 TS를 설치하지 않았지만 당신이보고 싶은 TS 문제가 두 가지 메시지가 있다고 생각합니다. 둘 다의 예를 찾으십시오. 이 두 메시지 각각에 대해 이벤트 ID, 작업 범주 및 원본을 기록하십시오. 다음을 실행하십시오 :

get-eventlog -instanceid <event id> -logname <logname> 

"logname"은 아마도 "system"또는 "security"이지만, TS에는 자체 로그가있을 수 있습니다. '이벤트 ID'는 작성한 두 가지 중 하나입니다. 이것이 원하는 정보를 제공한다면 최종 스크립트는 로그온 이벤트와 다른 로그 오프 이벤트를위한 두 개의 get-eventlog 명령 일 것입니다. 이벤트가 올바른 이벤트이지만 "장황하다"면 이벤트 메시지에서 원하는 정보 (일반 표현식 (help_regular_expressions) 도움말)를 사용하거나 -split 연산자 (help_split 도움말)를 사용하여 다양한 정보를 가져올 수 있습니다. String 클래스 ([string] | get-memeber)의 메서드를 사용합니다. 예를 들어 : get-eventlog -source "Terminal Services" ...을 :

$eventmsg = get-eventlog -instanceid 4648 -logname security | select-object -first 1 

# breaks the message into 3 parts. The middle part is the account name 
    $eventmsg.message -split "Account Name:" -split "Account Domain: | 
# select the middle part, which is the account name 
    select-object -first 1 -skip 1 |  
# assign account name to a variable 
    set-variable accountName # (don't use $ with set-variable) 

# Do similar set of operations to get $logonTime, $domain, and whatever else 

# Write message containing info you want to see: 
"User $domain/$accountName, logged in, at $time`n" 

가 아닌 TS 로그온/로그 오프 이벤트를 받고하는 경우, 필터링, 소스를 (위에서 아래로 두었다있는) 사용할 수 있습니다. (I는 "터미널 서비스"실제로 소스 이름임을 알 수 없습니다. 당신이 정보를 두었다 첫 번째 단계에서 그것을 알아 낸 것입니다.)


BTW, 이외에 요구에 필요한 정보 ("예/아니오"vs "어떻게해야합니까")가 무엇인지 확인해야하며 유스 케이스가 명확한 지 확인하는 것이 좋습니다. 내 대답은 질문의 길이가 약 4 배인데, 그 이유는 귀하의 질문이 간결한 대답을 다루기에 충분하지 않기 때문입니다.