about_Eventlogs

업데이트 날짜: 2012년 8월

적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0

항목

about_Eventlogs

간단한 설명

Windows PowerShell®은(는) Windows PowerShell 이벤트를 기록하는 "Windows PowerShell"이라고 하는 Windows 이벤트 로그를 만듭니다. 이벤트 뷰어 또는 Get-EventLog cmdlet 등의 이벤트를 가져오는 cmdlet을 사용하면 이 로그를 볼 수 있습니다. 기본적으로, Windows PowerShell 엔진과 공급자 이벤트는 이벤트 로그에 기록되지만 이벤트 로그 기본 설정 변수를 사용하여 이벤트 로그를 사용자 지정할 수 있습니다. 예를 들어, Windows PowerShell 명령에 대한 이벤트를 추가할 수 있습니다.

자세한 설명

Windows PowerShell 이벤트 로그는 프로그램 엔진의 시작 및 정지와 Windows PowerShell 공급자의 시작 및 정지 등 Windows PowerShell 연산자의 세부 정보를 기록합니다. 또한 Windows PowerShell 명령에 대한 세부 정보를 기록할 수 있습니다.

Windows PowerShell 이벤트 로그는 응용 프로그램 및 서비스 로그 그룹에 있습니다. Windows PowerShell 로그는 Windows 이벤트 기술을 사용하지 않는 클래식 이벤트 로그입니다. 로그를 보려면 Get-EventLog와 같은 클래식 이벤트 기록을 위해 만들어진 cmdlet을 사용합니다.

WINDOWS POWERSHELL 이벤트 로그 보기

이벤트 뷰어에서 또는 Get-EventLog 및 Get-WmiObject cmdlet을 사용하여 Windows PowerShell 이벤트 로그를 볼 수 있습니다. Windows PowerShell 로그의 콘텐츠를 보려면 다음을 입력합니다.

  Get-EventLog -LogName "Windows PowerShell"

이벤트와 해당 속성을 검사하려면 Sort-Object cmdlet, Group-Object cmdlet, Format 동사(Format cmdlet)가 포함된 cmdlet을 사용합니다.

예를 들어, 이벤트 ID별로 그룹화된 로그의 이벤트를 보려면 다음을 입력합니다.

  Get-EventLog "Windows PowerShell" | Format-Table -GroupBy EventID

또는 다음을 입력합니다.

  Get-EventLog "Windows PowerShell" | Sort-Object EventID `
            | Group-Object EventID

모든 클래식 이벤트 로그를 보려면 다음을 입력합니다.

  Get-EventLog -List

또한 Get-WmiObject cmdlet를 사용하면 이벤트 관련 Windows Management Instumentation(WMI) 클래스를 사용하여 이벤트 로그를 검사할 수 있습니다. 예를 들어, 이벤트 로그 파일의 모든 속성을 보려면 다음을 입력합니다.

  Get-WmiObject Win32_NTEventLogFile | where `
            {$_.LogFileName -eq "Windows PowerShell"} | Format-List -Property * 

Win32 event-related WMI 클래스를 찾으려면 다음을 입력합니다.

Get-WmiObject -List | where {$_.Name -like "win32*event*"}

자세한 내용은 "Get-Help Get-EventLog" 및 "Get-Help Get-WmiObject"를 입력하세요.

WINDOWS POWERSHELL 이벤트 로그의 이벤트 선택

이벤트 로그 기본 설정 변수를 사용하면 어떤 이벤트가 Windows PowerShell 이벤트 로그에 기록되었는지 확인할 수 있습니다.

6개의 로그 기본 설정 변수가 있습니다. 두 개의 변수는 세 개의 로깅 구성 요소 즉, 엔진(Windows PowerShell 프로그램), 공급자, 명령 각각에 대한 것입니다. LifeCycleEvent 변수는 일반적인 시작 및 정지 이벤트를 기록합니다. Health 변수는 오류 이벤트를 기록합니다.

다음 표에서는 이벤트 로그 기본 설정 변수를 보여줍니다.

          Variable                     Description
          --------------------------   ----------------------------------------

  $LogEngineLifeCycleEvent     Logs starting and stopping of
                                       Windows PowerShell.

  $LogEngineHealthEvent        Logs Windows PowerShell program errors.

  $LogProviderLifeCycleEvent   Logs starting and stopping of 
                                       Windows PowerShell providers.

  $LogProviderHealthEvent      Logs Windows PowerShell provider errors.

  $LogCommandLifeCycleEvent    Logs starting and completion of commands.

  $LogCommandHealthEvent       Logs command errors.

(Windows PowerShell 공급자에 대한 자세한 내용을 보려면 다음을 입력합니다. "Get-Help about_providers".)

기본적으로 다음 이벤트 유형만 사용할 수 있습니다.

  $LogEngineLifeCycleEvent
  $LogEngineHealthEvent
  $LogProviderLifeCycleEvent
  $LogProviderHealthEvent

이벤트 유형을 사용하려면 $true의 해당 이벤트 유형에 대한 기본 설정 변수를 설정하세요. 예를 들어, 명령 수명 주기 이벤트를 사용하려면 다음을 입력합니다.

  $LogCommandLifeCycleEvent

또는 다음을 입력합니다.

  $LogCommandLifeCycleEvent = $true

이벤트 유형을 사용하지 않으려면 $false의 해당 이벤트 유형에 대한 기본 설정 변수를 설정하세요. 예를 들어, 명령 수명 주기 이벤트를 사용하지 않으려면 다음을 입력합니다.

  $LogProviderLifeCycleEvent = $false

Windows PowerShell 엔진과 핵심 공급자가 시작되었음을 나타내는 이벤트를 제외한 모든 이벤트를 사용할 수 없습니다. 이들 이벤트는 Windows PowerShell 프로필이 실행되기 전에 그리고 호스트 프로그램이 명령을 받을 준비가 되기 전에 생성됩니다.

변수 설정은 현재 Windows PowerShell 세션에만 적용됩니다. 이를 모든 Windows PowerShell 세션에 적용하려면 이를 Windows PowerShell 프로필에 추가하세요.

모듈 이벤트 로깅

Windows PowerShell 3.0부터 Windows PowerShell 모듈 및 스냅인의 LogPipelineExecutionDetails 속성을 TRUE로 설정하여 모듈 및 스냅인에 cmdlet 및 함수에 대한 실행 이벤트를 기록할 수 있습니다. Windows PowerShell 2.0에서 이 기능은 스냅인에 대해서만 사용할 수 있습니다.

LogPipelineExecutionDetails 속성 값이 TRUE($True)인 경우 Windows PowerShell은(는) 세션의 cmdlet과 함수 실행 이벤트를 이벤트 뷰어의 Windows PowerShell 로그에 씁니다. 이 설정은 현재 세션에서만 적용됩니다.

모듈에서 cmdlet과 함수의 실행 이벤트 로깅을 사용하려면 다음 명령 시퀀스를 사용하세요.

        Import-Module <ModuleName>
        $m = Get-Module <ModuleName>
        $m.LogPipelineExecutionDetails = $True

스냅인에서 cmdlet의 실행 이벤트 로깅을 사용하려면 다음 명령 시퀀스를 사용하세요.

        $m = Get-PSSnapin <SnapInName> [-Registered]
        $m.LogPipelineExecutionDetails = $True

로깅을 사용하지 않으려면, 동일한 명령 시퀀스를 사용하여 속성 값을 FALSE($False)로 설정하세요.

또한 "Turn on Module Logging" 그룹 정책 설정을 사용하여 모듈 및 스냅인 로깅을 사용하거나 사용하지 않을 수 있습니다. 정책 값에는 모듈과 스냅인 이름 목록이 있습니다. 와일드카드가 지원됩니다.

"Turn on Module Logging"이 모듈에 설정되면 모듈의 LogPipelineExecutionDetails 속성 값은 모든 세션에서 TRUE가 되고 변경할 수 없습니다.

The Turn On Module Logging 그룹 정책 설정은 다음과 같은 그룹 정책 경로에 있습니다.

        Computer Configuration\Administrative Templates\Windows Components\Windows PowerShell
        User Configuration\Administrative Templates\Windows Components\Windows PowerShell

사용자 구성 정책은 컴퓨터 구성 정책보다 우선하며, 두 정책은 모듈 및 스냅인의 LogPipelineExecutionDetails 속성 값보다 우선합니다.

이 그룹 정책 설정에 대한 자세한 내용은 Group_Policy_Settings (https://go.microsoft.com/fwlink/?LinkID=251696)(영문)를 참조하세요.

보안 및 감사

Windows PowerShell 이벤트 로그는 활동을 나타내고 문제 해결에 대한 작업 세부 정보를 제공합니다.

그러나 대부분의 Windows 기반 응용 프로그램 이벤트 로그처럼 Windows PowerShell 이벤트 로그는 안전하게 설계되지 않았습니다. 따라서 보안을 감사하거나 기밀 또는 비공개 정보를 기록하는 데에 사용해서는 안 됩니다.

이벤트 로그는 사용자가 읽고 이해하도록 되어 있습니다. 사용자는 로그로부터 읽고 로그에 쓸 수 있습니다. 악의적인 사용자가 로컬 또는 원격 컴퓨터의 이벤트 로그를 읽고 잘못된 데이터를 기록한 다음 자신의 활동이 기록되지 않게 할 수 있습니다.

참고

모듈 작성자는 자신의 모듈에 로깅 기능을 추가할 수 있습니다. 자세한 내용은 MSDN(https://go.microsoft.com/fwlink/?LinkID=144916)의 "Windows PowerShell 모듈 쓰기"를 참조하세요.

참고 항목

Get-EventLog

Get-WmiObject

about_Group_Policy_Settings

about_Preference_Variables