다음을 통해 공유


Runbook 출력 및 메시지

중요

이 버전의 SMA(서비스 관리 자동화)는 지원이 종료되었습니다. SMA 2022로 업그레이드하는 것이 좋습니다.

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

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

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

출력 스트림

출력 스트림은 정상적으로 실행되는 스크립트나 워크플로에 의해 작성되는 개체의 출력용입니다. Automation에서 이 스트림은 기본적으로 현재 Runbook을 호출하는 부모 Runbook에서 사용하기 위한 개체에 사용됩니다. 부모 Runbook에서 인라인으로 Runbook을 호출하면 출력 스트림의 데이터가 부모에게 반환됩니다. runbook이 다른 runbook에서 호출되지 않는다는 점을 알고 있는 경우 출력 스트림을 사용하여 다시 사용자에게 일반 정보를 전달해야 합니다. 그러나 모범 사례로 일반적으로 자세한 정보 표시 스트림 을 사용하여 사용자에게 일반 정보를 전달해야 합니다.

쓰기 출력 을 사용하거나 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를 Stop으로 설정합니다.

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에서 유효한 값만을 포함합니다. 추가 값은 Service Management Automation 외부의 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를 시작한 다음 완료되기를 기다립니다. 완료되면 해당 출력 스트림을 작업에서 수집합니다.

$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

다음 단계

자동화 Runbook을 작성합니다.