다음을 통해 공유


Runbook 출력 및 메시지

대부분의 자동화 Runbook은 사용자에게 오류 메시지 또는 다른 워크플로에서 사용하려는 복잡한 개체와 같은 일종의 출력을 갖습니다. Windows PowerShell은 스크립트나 워크플로에서 출력을 보내기 위한 여러 스트림 을 제공합니다. 서비스 관리 자동화는 이러한 각 스트림에서 다르게 작동하며 Runbook을 만들 때 각각을 사용하는 방법에 대한 모범 사례를 따라야 합니다.

다음 표에는 각 스트림과 게시된 Runbook을 실행할 때 그리고 Runbook을 테스트할 때 관리 포털에서 해당 스트림의 동작에 대한 간략한 설명이 나와 있습니다. 각 스트림에 대한 자세한 내용은 후속 섹션에서 제공합니다.

스트림 설명 게시된 날짜 테스트
출력 다른 Runbook에서 사용하기 위한 개체입니다. 작업 기록에 작성됩니다. 테스트 출력 창에 표시됩니다.
Warning 사용자에 대한 경고 메시지입니다. 작업 기록에 작성됩니다. 테스트 출력 창에 표시됩니다.
Error 사용자에 대한 오류 메시지입니다. 예외와 달리 Runbook은 기본적으로 오류 메시지가 표시된 후에도 계속 실행됩니다. 작업 기록에 작성됩니다. 테스트 출력 창에 표시됩니다.
자세한 정보 표시 일반 또는 디버깅 정보를 제공하는 메시지입니다. Runbook에 대해 자세한 정보 로깅이 설정되어 있는 경우에만 작업 기록에 작성됩니다. Runbook에서 $VerbosePreferenceContinue 로 설정되어 있는 경우에만 테스트 출력 창에 표시됩니다.
진행률 Runbook의 각 활동 전후에 레코드가 자동으로 생성됩니다. Runbook은 대화형 사용자용이므로 자체 진행률 레코드를 만들려고 시도해서는 안 됩니다. Runbook에 대해 진행률 로깅을 사용하도록 설정한 경우에만 작업 기록에 작성됩니다. 테스트 출력 창에 표시되지 않습니다.
디버그 대화형 사용자를 위한 메시지입니다. Runbook에서 사용하지 않아야 합니다. 작업 기록에 작성되지 않습니다. 테스트 출력 창에 작성되지 않습니다.

출력 스트림

출력 스트림은 정상적으로 실행되는 스크립트나 워크플로에 의해 작성되는 개체의 출력용입니다. Automation에서 이 스트림은 주로 현재 Runbook을 호출하는 부모 Runbook에서 사용하려는 개체에 사용됩니다. 부모 Runbook에서 인라인으로 Runbook을 호출 하면 출력 스트림의 데이터가 부모에게 반환됩니다. runbook이 다른 runbook에서 호출되지 않는다는 점을 알고 있는 경우 출력 스트림을 사용하여 다시 사용자에게 일반 정보를 전달해야 합니다. 일반적으로는 Verbose Stream 을 통해 사용자에게 일반 정보를 전달하는 것이 가장 좋습니다.

Write-Output 을 사용하거나 Runbook의 자체 줄에 개체를 배치하여 출력 스트림에 데이터를 쓸 수 있습니다.

#The following lines both write an object to the output stream.
Write-Object -InputObject $object
$object

함수에서 출력

Runbook에 포함된 함수에서 출력 스트림에 쓸 때 출력은 Runbook으로 다시 전달됩니다. Runbook이 해당 출력을 변수에 할당하는 경우 출력 스트림에 기록되지 않습니다. 함수 내에서 다른 스트림에 데이터를 쓰면 Runbook의 해당 스트림에 데이터가 작성됩니다.

다음 샘플 Runbook을 살펴보세요.

Workflow Test-Runbook
{
   Write-Verbose "Verbose outside of function"
   Write-Output "Output outside of function"
   $functionOutput = Test-Function

   Function Test-Function
   {
      Write-Verbose "Verbose inside of function"
      Write-Output "Output inside of function"
   }
}

Runbook 작업의 출력 스트림은 다음과 같습니다.

Output outside of function

Runbook 작업에 대한 자세한 정보 표시 스트림은 다음과 같습니다.

Verbose outside of function
Verbose inside of function

The $functionOutput variable would have the value:

Output inside of function

출력 데이터 형식 선언

워크플로는 OutputType 특성을 사용하여 해당 출력의 데이터 형식을 지정할 수 있습니다. 이 특성은 런타임 시 영향을 주지 않지만 runbook의 예상된 출력에서 디자인 타임에 runbook 작성자에게 표시를 제공합니다. Runbook용 도구 집합은 지속적으로 개선되므로 디자인 타임에 출력 데이터 형식을 선언하는 작업의 중요성도 높아졌습니다. 따라서 만드는 모든 Runbook에 이 선언을 포함하는 것이 좋습니다.

다음 샘플 runbook은 문자열 개체를 출력하고 해당 출력 형식의 선언을 포함합니다. Runbook이 특정 유형의 배열을 출력하면 형식의 배열과 달리 형식을 지정해야 합니다.

Workflow Test-Runbook
{
   [OutputType([string])]

   $output = "This is some string output."
   Write-Output $output
}

메시지 스트림

출력 스트림과 달리 메시지 스트림은 사용자에게 정보를 전달하기 위한 것입니다. 다양한 종류의 정보에 대한 여러 메시지 스트림이 있으며 각 스트림은 Automation에서 다르게 처리됩니다.

다음 메시지 스트림에 대해 자세히 알아보려면 필요한 탭을 선택합니다.

경고 및 오류 스트림은 Runbook에서 발생하는 문제를 기록하는 데 사용됩니다. Runbook이 실행될 때 작업 기록에 기록되며 Runbook을 테스트할 때 관리 포털의 테스트 출력 창에 포함됩니다. 기본적으로 Runbook은 경고나 오류가 발생한 후에도 계속 실행됩니다. 메시지를 만들기 전에 Runbook에서 기본 설정 변수 를 설정하여 경고 또는 오류 시 Runbook이 일시 중단되도록 지정할 수 있습니다. 예를 들어 runbook이 예외와 마찬가지로 오류로 인해 일시 중단이 발생하려면 $ErrorActionPreference 를 중지로 설정합니다.

Write-Warning 또는 Write-Error cmdlet을 사용하여 경고 또는 오류 메시지를 만듭니다. 활동 시에도 이러한 스트림에 데이터를 쓸 수 있습니다.

#The following lines create a warning message and then an error message that will suspend the runbook.

$ErrorActionPreference = "Stop"
Write-Warning -Message "This is a warning message."
Write-Error -Message "This is an error message that will stop the runbook because of the preference variable."

진행률 레코드

관리 포털의 Runbook 구성 탭에서 진행률 레코드를 기록하도록 Runbook을 구성하면 각 활동 실행 전과 후에 레코드가 작업 기록에 작성됩니다. 대부분의 경우에는 성능을 최대화하기 위해 Runbook의 진행률 레코드를 기록하지 않는 기본 설정을 유지해야 합니다. Runbook을 디버그하거나 문제를 해결해야 할 때만 이 옵션을 설정하세요. Runbook을 테스트할 때 Runbook이 진행률 레코드를 기록하도록 구성된 경우에도 진행률 메시지가 표시되지 않습니다.

Write-Progress cmdlet은 대화형 사용자와 함께 사용하기 위한 것이므로 Runbook에서 유효하지 않습니다.

기본 설정 변수

Windows PowerShell은 기본 설정 변수 를 사용하여 다른 출력 스트림에 전송된 데이터에 대응하는 방법을 결정합니다. Runbook에서 이러한 변수를 설정하여 다른 스트림으로 전송되는 데이터에 Runbook이 응답하는 방식을 제어할 수 있습니다.

다음 테이블은 유효 및 기본값으로 runbook에서 사용할 수 있는 기본 설정 변수를 나열 합니다.

참고 항목

이 표에는 Runbook에서 유효한 값만 포함됩니다. 추가 값은 서비스 관리 자동화 외부의 Windows PowerShell에서 사용되는 경우 기본 설정 변수에 유효합니다.

변수 기본값 유효한 값
WarningPreference 계속 중지
계속
SilentlyContinue
ErrorActionPreference 계속 중지
계속
SilentlyContinue
VerbosePreference SilentlyContinue 중지
계속
SilentlyContinue

다음 테이블은 runbook에서 유효한 기본 설정 변수 값에 대한 동작을 나열합니다.

동작
계속 메시지를 기록하고 Runbook 실행을 계속합니다.
SilentlyContinue 메시지를 기록하지 않고 Runbook 실행을 계속합니다. 이 동작은 메시지를 무시하는 것과 같습니다.
중지 메시지를 기록하고 Runbook을 일시 중단합니다.

Runbook 출력 및 메시지 검색

관리 포털

관리 포털의 Runbook 작업 탭에서 Runbook 작업의 세부 정보를 확인할 수 있습니다. 작업의 요약 에는 작업에 대한 일반 정보 및 예외(발생한 경우)와 함께 입력 매개 변수 및 Output Stream 이 표시됩니다. Runbook이 상세 레코드와 진행률 레코드를 기록하도록 구성된 경우 기록 에는 자세한 정보 스트림 및 Warning and Error Streams and Verbose Stream 와 함께 출력 스트림의 메시지와 Progress Records 이 포함됩니다.

Windows PowerShell

Windows PowerShell에서 Get-SmaJobOutput cmdlet을 사용하여 Runbook에서 출력과 메시지를 검색할 수 있습니다. 이 cmdlet에는 작업의 ID가 필요하며 반환할 스트림을 지정하는 Stream 매개 변수가 포함됩니다. 작업에 대한 모든 스트림을 반환하려는 경우 Any 를 지정하면 됩니다.

다음 예제에서는 샘플 Runbook을 시작한 다음 해당 Runbook이 완료될 때까지 기다립니다. Runbook이 완료되면 해당 출력 스트림이 작업에서 수집됩니다.

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
$job = Start-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName

$doLoop = $true
While ($doLoop) {
   $job = Get-SmaJob -WebServiceEndpoint $webServer -Port $port -Id $job.Id
   $status = $job.Status
   $doLoop = (($status -ne "Completed") -and ($status -ne "Failed") -and ($status -ne "Suspended") -and ($status -ne "Stopped")
}

Get-SmaJobOutput -WebServiceEndpoint $webServer -Port $port -Id $job.Id -Stream Output

다음 단계

Automation Runbook을 작성합니다.