Azure Automation での Runbook の実行Runbook execution in Azure Automation

Azure Automation で runbook を開始するときに、ジョブが作成されます。When you start a runbook in Azure Automation, a job is created. ジョブは、Runbook の単一の実行インスタンスです。A job is a single execution instance of a runbook. 各ジョブを実行する Azure Automation ワーカーが割り当てられます。An Azure Automation worker is assigned to run each job. ワーカーは多数の Azure アカウントで共有されますが、異なる Automation アカウントからのジョブは互いに分離されます。While workers are shared by many Azure accounts, jobs from different Automation accounts are isolated from one another. ジョブに対する要求をどのワーカーで処理するかを、制御することはできません。You don't have control over which worker services the request for your job. 1 つの Runbook で、多数のジョブを同時に実行することができます。A single runbook can have many jobs running at one time. 同じ Automation アカウントからのジョブの実行環境を再利用できます。The execution environment for jobs from the same Automation Account may be reused. 同時に実行するジョブが多いほど、同じサンドボックスにディスパッチする頻度が上がります。The more jobs you run at the same time, the more often they can be dispatched to the same sandbox. 同じサンドボックス プロセスで実行するジョブは、お互いに影響し合う可能性があります。1 つの例は、Disconnect-AzureRMAccount コマンドレットの実行です。Jobs running in the same sandbox process can affect each other, one example is running the Disconnect-AzureRMAccount cmdlet. このコマンドレットを実行すると、共有サンドボックス プロセス内の各 Runbook ジョブが切断されます。Running this cmdlet would disconnect each runbook job in the shared sandbox process. Azure Portal で Runbook の一覧を表示すると、各 Runbook に対して起動されたすべてのジョブの状態が一覧表示されます。When you view the list of runbooks in the Azure portal, it lists the status of all jobs that were started for each runbook. Runbook ごとにジョブの一覧を表示して、それぞれの状態を追跡できます。You can view the list of jobs for each runbook to track the status of each. ジョブのログは、最大 30 日間保存されます。Job logs are stored for a max of 30 days. ジョブのさまざまな状態の説明については、「ジョブの状態」をご覧ください。For a description of the different job statuses Job Statuses.

注意

個人データの表示または削除に関心がある場合は、「GDPR のための Azure データ サブジェクト要求」を参照してください。If you’re interested in viewing or deleting personal data, please see the Azure Data Subject Requests for the GDPR article. GDPR に関する全般情報については、Service Trust ポータルの GDPR に関するセクションをご覧ください。If you’re looking for general info about GDPR, see the GDPR section of the Service Trust portal.

次の図に、PowerShell Runbookグラフィカル Runbook、および PowerShell ワークフロー Runbook のための Runbook ジョブのライフサイクルを示します。The following diagram shows the lifecycle of a runbook job for PowerShell runbooks, Graphical runbooks and PowerShell Workflow runbooks.

ジョブの状態 - PowerShell Workflow

ジョブは、Azure サブスクリプションに接続することにより Azure リソースにアクセスします。Your jobs have access to your Azure resources by making a connection to your Azure subscription. データ センター内のリソースにパブリック クラウドからアクセスできる場合、ジョブはそれらのリソースにのみアクセスします。They only have access to resources in your data center if those resources are accessible from the public cloud.

Runbook を実行する場所Where to run your runbooks

Azure Automation の Runbook は、Azure のサンドボックスまたは Hybrid Runbook Worker のいずれかで実行できます。Runbooks in Azure Automation can run on either a sandbox in Azure or a Hybrid Runbook Worker. サンドボックスは、複数のジョブで使用できる Azure での共有環境です。A sandbox is a shared environment in Azure that can be used by multiple jobs. 同じサンドボックスを使用するジョブは、サンドボックスのリソース制限に縛られます。Jobs using the same sandbox are bound by the resource limitations of the sandbox. Hybrid Runbook Worker は、ロールをホストしているコンピューターで、環境内のリソースに対して Runbook を直接実行し、それらのローカル リソースを管理できます。Hybrid Runbook Workers can run runbooks directly on the computer that's hosting the role and against resources in the environment to manage those local resources. Runbook は Azure Automation で格納および管理された後、1 つ以上の割り当て済みコンピューターに配信されます。Runbooks are stored and managed in Azure Automation and then delivered to one or more assigned computers. ほとんどの Runbook は、Azure のサンドボックスで容易に実行できます。Most runbooks can easily be run in the Azure sandboxes. Runbook の実行のために、Azure サンドボックスよりも Hybrid Runbook を選択することが推奨される特定のシナリオがあります。There are specific scenarios where choosing a Hybrid Runbook over an Azure sandbox to execute your runbook may be recommended. 一部のシナリオの例を示した一覧については、次の表を参照してください。See the following table for a list of some example scenarios:

タスクTask 最適な選択肢Best Choice メモNotes
Azure リソースと統合するIntegrate with Azure resources Azure サンドボックスAzure Sandbox Azure でホストされ、認証がより簡単です。Hosted in azure, authentication is simpler. Azure VM で Hybrid Runbook Worker を使用している場合は、Azure リソース用のマネージド ID を使用できますIf you are using a Hybrid Runbook Worker on an Azure VM, you can use managed identities for Azure resources
最適なパフォーマンスで Azure リソースを管理するOptimal performance to manage azure resources Azure サンドボックスAzure Sandbox スクリプトは同じ環境内で実行されます。それが、待ち時間がより短いことにつながりますScript is run in the same environment, which in turn has less latency
運用コストを最小限に抑えるMinimize operational costs Azure サンドボックスAzure Sandbox コンピューティングのオーバーヘッドがなく、VM の必要がありませんThere is no compute overhead, no need for a VM
実行時間の長いスクリプトLong running script Hybrid Runbook WorkerHybrid Runbook Worker Azure のサンドボックスにはリソースの制限がありますAzure sandboxes have limitation on resources
ローカル サービスと相互作用するInteract with Local services Hybrid Runbook WorkerHybrid Runbook Worker ホスト マシンに直接アクセスできますCan have access directly to host machine
サード パーティ製ソフトウェアと実行可能ファイルが必要Require 3rd party software and executables Hybrid Runbook WorkerHybrid Runbook Worker OS を管理し、ソフトウェアをインストールできますYou manage the OS and can install software
Runbook でファイルまたはフォルダーを監視するMonitor a file or folder with a runbook Hybrid Runbook WorkerHybrid Runbook Worker Hybrid Runbook Worker で Watcher タスクを使用しますUse a Watcher task on a Hybrid Runbook worker
多量のリソースを消費するスクリプトResource intensive script Hybrid Runbook WorkerHybrid Runbook Worker Azure のサンドボックスにはリソースの制限がありますAzure sandboxes have limitation on resources
特定の要件でのモジュールの使用Using modules with specific requirements Hybrid Runbook WorkerHybrid Runbook Worker 次に例をいくつか示します。Some examples are:
WinSCP - winscp.exe への依存関係WinSCP - dependency on winscp.exe
IISAdministration - IIS を有効にする必要があるIISAdministration - Needs IIS to be enabled
インストーラーが必要なモジュールをインストールするInstall module that requires installer Hybrid Runbook WorkerHybrid Runbook Worker サンドボックス用のモジュールはコピー可能であることが必要ですModules for sandbox must be copiable
4.7.2 以外の .NET Framework が必要な Runbook またはモジュールの使用Using runbooks or modules that require .NET Framework different from 4.7.2 Hybrid Runbook WorkerHybrid Runbook Worker Automation のサンドボックスには .NET Framework 4.7.2 が備わっており、それをアップグレードする方法がありませんAutomation sandboxes have .NET Framework 4.7.2, and there is no way to upgrade it
昇格が必要なスクリプトScripts that require elevation Hybrid Runbook WorkerHybrid Runbook Worker サンド ボックスでは、昇格は許可されません。Sandboxes do not allow elevation. これを解決するには、Hybrid Runbook Worker を使用してください。UAC をオフにして、昇格が必要なコマンドを実行するときに Invoke-Command を使用できますTo solve this, use a Hybrid Runbook Worker and you can turn off UAC and use Invoke-Command when running the command that requires elevation
WMI へのアクセスが必要なスクリプトScripts that require access to WMI Hybrid Runbook WorkerHybrid Runbook Worker クラウドのサンドボックスで実行しているジョブには WMI へのアクセス権がありませんJobs running in sandboxes in the cloud do not have access to the WMI

Runbook の動作Runbook behavior

Runbook は、その内部で定義されているロジックに基づいて実行されます。Runbooks execute based on the logic that is defined inside them. Runbook は、中断された場合、先頭から再開されます。If a runbook is interrupted, the runbook restarts at the beginning. この動作のためには、一時的な問題があった場合の Runbook の再起動をサポートする方法で、Runbook が記述される必要があります。This behavior requires runbooks to be written in a way where they support being restarted if there were transient issues.

Azure サンドボックスで実行された Runbook から開始された PowerShell ジョブは完全言語モードで実行されないことがあります。PowerShell jobs started from a Runbook ran in an Azure sandbox may not run in the Full language mode. PowerShell 言語モードの詳細については、「PowerShell 言語モード」を参照してください。To learn more about PowerShell language modes, see PowerShell language modes. Azure Automation でジョブを操作する方法に関する詳細については、「PowerShell を使用したジョブの状態の取得」を参照してくださいFor additional details on how to interact with jobs in Azure Automation, see Retrieving job status with PowerShell

リソースの作成Creating resources

リソースを作成するスクリプトの場合、リソースの再作成を試みる前に、それが既に存在するかどうかを確認する必要があります。If your script creates resources, you should check to see if the resource already exists before attempting to create it again. 次の例で、基本となる例を示します。A basic example is shown in the following example:

$vmName = "WindowsVM1"
$resourceGroupName = "myResourceGroup"
$myCred = Get-AutomationPSCredential "MyCredential"
$vmExists = Get-AzureRmResource -Name $vmName -ResourceGroupName $resourceGroupName

if(!$vmExists)
    {
    Write-Output "VM $vmName does not exists, creating"
    New-AzureRmVM -Name $vmName -ResourceGroupName $resourceGroupName -Credential $myCred
    }
else
    {
    Write-Output "VM $vmName already exists, skipping"
    }

時間依存のスクリプトTime dependant scripts

Runbook の作成時に慎重に検討してください。Careful consideration should be made when authoring runbooks. 前述のように、Runbook は堅牢で、Runbook の再起動または失敗を引き起こす可能性のある一時的なエラーを処理できる方法で作成する必要があります。As mentioned earlier, runbooks need to be authored in a way that they're robust and can handle transient errors that may cause the runbook to restart or fail. Runbook は、失敗した場合には再試行されます。If a runbook fails, it is retried. Runbook が、通常は時間の制約内で実行される場合、実行時間を調べるロジックを Runbook 内に実装し、起動、シャットダウン、スケールアウトなどの操作が特定時間中にのみ実行されるようにする必要があります。If a runbook normally runs within a time constraint, logic to check the execution time should be implemented in the runbook to ensure operations like start up, shut down or scale out are run only during specific times.

進行状況の追跡Tracking progress

本質的にモジュラー形式である Runbook を作成することをお勧めします。It is a good practice to author runbooks to be modular in nature. これは、容易に再利用と再起動が可能なように Runbook のロジックを構築することを意味します。This means structuring the logic in the runbook such that it can be reused and restarted easily. Runbook の進行状況を追跡することは、問題がある場合に Runbook のロジックが正常に実行されることを保証する適切な方法です。Tracking progress in a runbook is a good way to ensure that the logic in a runbook executes correctly if there were issues. Runbook の進行状況を追跡する方法は、ストレージ アカウント、データベース、ファイル共有のような外部ソースを使用する方法など、いくつか考えられます。Some possible ways to track the progress of the runbook is by using an external source such as storage accounts, a database, or shared files. 外部から状態を追跡することで、Runbook のロジックを作成できます。Runbook の最後のアクションの状態をまずチェックします。By tracking the state externally, you can create logic in your runbook to first check the state of the last action the runbook took. その後、その結果に基づいて、Runbook 内の特定のタスクをスキップまたは続行するようにします。Then based off the results, either skip or continue specific tasks in the runbook.

同時実行ジョブの防止Prevent concurrent jobs

一部の Runbook は、複数のジョブにわたって同時に実行されると、おかしな動作をすることがあります。Some runbooks may behave strangely if they are running across multiple jobs at the same time. この場合、Runbook に既に実行中のジョブがあるかどうかをチェックするロジックを実装することが重要です。In this case, it's important to implement logic to check to see if a runbook already has a running job. この動作を実行可能な方法の基本例を、次の例に示します。A basic example of how you may do this behavior is shown in the following example:

# Authenticate to Azure
$connection = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzureRmAccount -ServicePrincipal -Tenant $connection.TenantID `
-ApplicationID $connection.ApplicationID -CertificateThumbprint $connection.CertificateThumbprint

$AzureContext = Select-AzureRmSubscription -SubscriptionId $connection.SubscriptionID

# Check for already running or new runbooks
$runbookName = "<RunbookName>"
$rgName = "<ResourceGroupName>"
$aaName = "<AutomationAccountName>"
$jobs = Get-AzureRmAutomationJob -ResourceGroupName $rgName -AutomationAccountName $aaName -RunbookName $runbookName -AzureRmContext $AzureContext

# If then check to see if it is already running
$runningCount = ($jobs | ? {$_.Status -eq "Running"}).count

If (($jobs.status -contains "Running" -And $runningCount -gt 1 ) -Or ($jobs.Status -eq "New")) {
    # Exit code
    Write-Output "Runbook is already running"
    Exit 1
} else {
    # Insert Your code here
}

複数のサブスクリプションの操作Working with multiple subscriptions

複数のサブスクリプションを扱う Runbook を作成するとき、Runbook が Disable-AzureRmContextAutosave コマンドレットを使用して、同じサンドボックスで実行している可能性がある別の Runbook から認証コンテキストを取得しないようにする必要があります。When authoring runbooks that deal with multiple subscriptions, your runbook needs use the Disable-AzureRmContextAutosave cmdlet to ensure that your authentication context is not retrieved from another runbook that may be running in the same sandbox. その後、AzureRMコマンドレットで -AzureRmContext パラメーターを使用して、それを適切なコンテキストに渡す必要があります。You then need to use the -AzureRmContext parameter on your AzureRM cmdlets and pass it your proper context.

# Ensures you do not inherit an AzureRMContext in your runbook
Disable-AzureRmContextAutosave –Scope Process

$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzureRmAccount -ServicePrincipal `
-Tenant $Conn.TenantID `
-ApplicationID $Conn.ApplicationID `
-CertificateThumbprint $Conn.CertificateThumbprint

$context = Get-AzureRmContext

$ChildRunbookName = 'ChildRunbookDemo'
$AutomationAccountName = 'myAutomationAccount'
$ResourceGroupName = 'myResourceGroup'

Start-AzureRmAutomationRunbook `
    -ResourceGroupName $ResourceGroupName `
    -AutomationAccountName $AutomationAccountName `
    -Name $ChildRunbookName `
    -DefaultProfile $context

例外の処理Handling exceptions

スクリプトを作成するときは、例外や潜在的に発生する間欠的エラーを処理できるようにすることが重要です。When authoring scripts, it is important to be able to handle exceptions and potential intermittent failures. 例外や間欠的な問題を Runbook で処理する方法をいくつか次に示します。The following are some different ways to handle exceptions or intermittent issues with your runbooks:

$ErrorActionPreference$ErrorActionPreference

$ErrorActionPreference ユーザー設定変数は、終了しないエラーに対して PowerShell が応答する方法を決定します。The $ErrorActionPreference preference variable determines how PowerShell responds to a non-terminating error. 終了するエラーは $ErrorActionPreference の影響を受けず、常に終了します。Terminating errors are not affected by $ErrorActionPreference, they always terminate. $ErrorActionPreference を使用すると、Get-ChildItem コマンドレットの PathNotFound のような通常は終了しないエラーによって、Runbook が完了できなくなります。By using $ErrorActionPreference, a normally non-terminating error like PathNotFound from the Get-ChildItem cmdlet will stop the runbook from completing. 次の例に、$ErrorActionPreference の使用方法を示します。The following example shows using $ErrorActionPreference. スクリプトが停止するため、最後の Write-Output 行は実行されません。The final Write-Output line will never execute as the script will stop.

$ErrorActionPreference = 'Stop'
Get-Childitem -path nofile.txt
Write-Output "This message will not show"

Try Catch FinallyTry Catch Finally

Try Catch は、終了するエラーを処理するために PowerShell スクリプトで使用されます。Try Catch is used in PowerShell scripts to help you handle terminating errors. Try Catch を使用すると、特定の例外または一般的な例外をキャッチできます。By using Try Catch, you can catch specific exceptions or general exceptions. Catch ステートメントは、エラーを追跡するため、またはエラーの処理を試行するために使用してください。The Catch statement should be used to track errors or used to try to handle the error. 次の例は、存在しないファイルをダウンロードしようとしています。The following example tries to download a file that does not exist. これは System.Net.WebException 例外をキャッチします。別の例外がある場合には、最後の値が返されます。It catches the System.Net.WebException exception, if there was another exception the last value is returned.

try
{
   $wc = new-object System.Net.WebClient
   $wc.DownloadFile("http://www.contoso.com/MyDoc.doc")
}
catch [System.Net.WebException]
{
    "Unable to download MyDoc.doc from http://www.contoso.com."
}
catch
{
    "An error occurred that could not be resolved."
}

ThrowThrow

Throw を使用すると、終了するエラーを生成できます。Throw can be used to generate a terminating error. これは、Runbook で独自のロジックを定義するときに役立ちます。This can be useful when defining your own logic in a runbook. スクリプトを停止したい特定の条件が満たされると、throw を使用してスクリプトを停止できます。If a certain criteria is met that should stop the script, you can use throw to stop the script. 次の例は、throw を使用して、必要な関数パラメーターをマシンに表示します。The following example shows machine a function parameter required by using throw.

function Get-ContosoFiles
{
  param ($path = $(throw "The Path parameter is required."))
  Get-ChildItem -Path $path\*.txt -recurse
}

実行可能ファイルの使用またはプロセスの呼び出しUsing executables or calling processes

Azure サンドボックスで実行される Runbook は、プロセス (.exe や subprocess.call など) の呼び出しをサポートしていません。Runbooks run in Azure sandboxes do not support calling processes (such as an .exe or subprocess.call). これは、Azure サンドボックスはコンテナーで実行される共有プロセスであり、基になっているすべての API にアクセスできるとは限らないためです。This is because Azure sandboxes are shared processes run in containers, which may not have access to all the underlying APIs. サード パーティー製ソフトウェアやサブ プロセスの呼び出しが必要なシナリオの場合は、Hybrid Runbook Worker で Runbook を実行することをお勧めします。For scenarios where you require 3rd party software or calling of sub processes, it is recommended you execute the runbook on a Hybrid Runbook Worker.

デバイスとアプリケーションの特性Device and application characteristics

Azure サンドボックスで実行される Runbook ジョブには、デバイスまたはアプリケーションの特性に対するアクセス権はありません。Runbook jobs run in Azure sandboxes do not have access to any device or application characteristics. Windows 上のパフォーマンス メトリックにクエリを実行するために使用される最も一般的な API は WMI です。The most common API used to query performance metrics on Windows is WMI. 一般的なメトリックとしてはメモリや CPU の使用率があります。Some of these common metrics are memory and CPU usage. ただし、どの API を使用するかは関係ありません。However, it does not matter what API is used. クラウドで実行するジョブには、デバイスとアプリケーションの特性を定義する業界標準である Common Information Model (CIM) 上に構築された Web Based Enterprise Management (WBEM) の Microsoft 実装に対するアクセス権はありません。Jobs running in the cloud do not have access to the Microsoft implementation of Web Based Enterprise Management (WBEM), which is built on the Common Information Model (CIM), which are the industry standards for defining device and application characteristics.

ジョブの状態Job statuses

次の表には、ジョブが取り得るさまざまな状態を説明します。The following table describes the different statuses that are possible for a job. PowerShell には、終了するエラーと終了しないエラーという、2 種類のエラーがあります。PowerShell has two types of errors, terminating and non-terminating errors. 終了するエラーは、発生した場合に Runbook の状態を [失敗] に設定します。Terminating errors set the runbook status to Failed if they occur. 終了しないエラーの場合、エラー発生後もスクリプトを継続できます。Non-terminating errors allow the script to continue even after they occur. 終了しないエラーの例では、実在しないパスで Get-ChildItem コマンドレットを使用しています。An example of a non-terminating error is using the Get-ChildItem cmdlet with a path that doesn't exist. PowerShell では、パスが存在しないことを確認して、エラーをスローし、次のフォルダーへと処理を継続します。PowerShell sees that the path doesn't exist, throws an error, and continues to the next folder. このエラーでは、Runbook の状態を [失敗] に設定せず、[完了] とマークすることが可能です。This error wouldn't set the runbook status to Failed and could be marked as Completed. 終了しないエラー時に Runbook を強制的に停止するには、コマンドレットで -ErrorAction Stop を使用できます。To force a runbook to stop on a non-terminating error, you can use -ErrorAction Stop on the cmdlet.

StatusStatus 説明Description
完了Completed ジョブは正常に完了しました。The job completed successfully.
失敗Failed グラフィカル Runbook と PowerShell Workflow Runbookでは、Runbook のコンパイルが失敗しました。For Graphical and PowerShell Workflow runbooks, the runbook failed to compile. PowerShell スクリプト Runbook では、Runbook の開始に失敗したか、ジョブで例外が発生しました。For PowerShell Script runbooks, the runbook failed to start or the job had an exception.
失敗、リソースを待機中Failed, waiting for resources ジョブは fair share の限界に 3 回到達し、毎回、同じチェックポイントから、または Runbook の先頭から起動したために、失敗しました。The job failed because it reached the fair share limit three times and started from the same checkpoint or from the start of the runbook each time.
キューに登録済みQueued ジョブは Automation ワーカー上のリソースが使用できるようになるのを待機しています。そうなれば、ジョブを起動できます。The job is waiting for resources on an Automation worker to come available so that it can be started.
開始中Starting ジョブがワーカーに割り当てられており、システムがジョブを起動しています。The job has been assigned to a worker, and the system is starting it.
再開中Resuming システムは、ジョブが停止された後、そのジョブを再開しています。The system is resuming the job after it was suspended.
実行中Running ジョブは実行中です。The job is running.
実行中、リソースを待機中Running, waiting for resources ジョブは fair share 制限に達したためにアンロードされました。The job has been unloaded because it reached the fair share limit. ジョブは最後のチェックポイントからすぐに再開します。It resumes shortly from its last checkpoint.
停止済みStopped ジョブは完了した後、ユーザーによって停止されました。The job was stopped by the user before it was completed.
停止中Stopping システムは、ジョブを停止しています。The system is stopping the job.
SuspendedSuspended ユーザーか、システムか、または Runbook 内のコマンドによってジョブは中断されました。The job was suspended by the user, by the system, or by a command in the runbook. Runbook にチェックポイントがない場合は、Runbook の先頭から開始されます。If a runbook doesn't have a checkpoint, it starts from the beginning of the runbook. チェックポイントがある場合は、最後のチェックポイントからもう一度再開できます。If it has a checkpoint, it can start again and resume from its last checkpoint. Runbook は、例外が発生した場合にシステムによってのみ中断されます。The runbook is only suspended by the system when an exception occurs. 既定では、ErrorActionPreference は、エラーでもジョブの実行を継続することを意味する Continue に設定されています。By default, ErrorActionPreference is set to Continue, meaning that the job keeps running on an error. このユーザー設定変数を Stop に設定すると、エラー発生時にジョブは中断します。If this preference variable is set to Stop, then the job suspends on an error. グラフィカル Runbook と PowerShell Workflow Runbook のみに適用されます。Applies to Graphical and PowerShell Workflow runbooks only.
中断中Suspending ユーザーの要求を受けてシステムはジョブを中断しようとしています。The system is trying to suspend the job at the request of the user. Runbook は、次のチェックポイントに到達してからでないと、中断できません。The runbook must reach its next checkpoint before it can be suspended. Runbook は、次のチェックポイントに到達してからでないと、中断できません。If it already passed its last checkpoint, then it completes before it can be suspended. グラフィカル Runbook と PowerShell Workflow Runbook のみに適用されます。Applies to Graphical and PowerShell Workflow runbooks only.

Azure Portal を使用したジョブの状態の表示Viewing job status from the Azure portal

すべての Runbook ジョブの状態の概要を表示したり、Azure portal での特定の Runbook ジョブの詳細にドリルダウンしたりできます。You can view a summarized status of all runbook jobs or drill into details of a specific runbook job in the Azure portal. Log Analytics ワークスペースとの統合を構成し、Runbook のジョブの状態やジョブ ストリームを転送することも可能です。You can also configure integration with your Log Analytics workspace to forward runbook job status and job streams. Azure Monitor ログとの統合の詳細については、「Automation から Azure Monitor ログにジョブの状態とジョブ ストリームを転送する」を参照してください。For more information about integrating with Azure Monitor logs, see Forward job status and job streams from Automation to Azure Monitor logs.

Automation Runbook ジョブの概要Automation runbook jobs summary

選択した Automation アカウントの右にある [ジョブの統計情報] タイルでは、すべての Runbook ジョブの概要を確認できます。On the right of your selected Automation account, you can see a summary of all the runbook jobs under Job Statistics tile.

[ジョブの統計情報] タイル

このタイルでは、実行されたすべてのジョブの数を確認できるほか、その状態がグラフィカルに表示されます。This tile displays a count and graphical representation of the job status for all jobs executed.

タイルをクリックすると、実行されたすべてのジョブの概要を示す一覧が含まれる [ジョブ] ページが表示されます。Clicking the tile presents the Jobs page, which includes a summarized list of all jobs executed. このページには、状態、開始時刻、および完了時刻が表示されます。This page shows the status, start times, and completion times.

Automation アカウントの [ジョブ] ページ

ジョブのリストをフィルター処理するには、[ジョブのフィルター] を選択します。特定の Runbook、ジョブの状態でフィルターしたり、検索対象の時刻の範囲をドロップダウン リストから選択したりできます。You can filter the list of jobs by selecting Filter jobs and filter on a specific runbook, job status, or from the drop-down list, and the time range to search within.

[フィルター] の [ジョブの状態]

また、特定の Runbook について、ジョブ概要の詳細情報を表示することもできます。それには、Automation アカウントで [Runbook] ページからその Runbook を選択し、[ジョブ] タイルを選択します。Alternatively, you can view job summary details for a specific runbook by selecting that runbook from the Runbooks page in your Automation account, and then select the Jobs tile. この操作で [ジョブ] ページが表示され、そのページでジョブ レコードをクリックすると、そのジョブの詳細と出力を表示できます。This action presents the Jobs page, and from there you can click the job record to view its detail and output.

Automation アカウントの [ジョブ] ページ

ジョブの概要Job Summary

特定の Runbook 用に作成されたすべてのジョブと、それらのジョブの最新の状態を、一覧で表示できます。You can view a list of all the jobs that have been created for a particular runbook and their most recent status. この一覧は、ジョブの状態とジョブに最後に変更を加えた日付の範囲とによってフィルター処理することができます。You can filter this list by job status and the range of dates for the last change to the job. 詳細な情報と出力を表示するには、ジョブの名前をクリックします。To view its detailed information and output, click the name of a job. ジョブの詳細表示には、そのジョブに指定された Runbook パラメーターの値が含まれます。The detailed view of the job includes the values for the runbook parameters that were provided to that job.

次の手順を使用して Runbook のジョブを表示します。You can use the following steps to view the jobs for a runbook.

  1. Azure Portal で、[Automation] を選択し、次に Automation アカウントの名前を選択します。In the Azure portal, select Automation and then select the name of an Automation account.
  2. ハブから [Runbook] を選択し、[Runbook] ページで、一覧から 1 つの Runbook を選択します。From the hub, select Runbooks and then on the Runbooks page select a runbook from the list.
  3. 選択した Runbook のページで、[ジョブ] タイルをクリックします。On the page for the selected runbook, click the Jobs tile.
  4. 一覧のジョブのいずれかをクリックすると、Runbook のジョブの詳細ページに、そのジョブの詳細と出力を表示できます。Click one of the jobs in the list and on the runbook job details page you can view its detail and output.

PowerShell を使用したジョブの状態の取得Retrieving job status using PowerShell

Get-AzureRmAutomationJob を使用して、Runbook 用に作成されたジョブと、特定のジョブの詳細を取得できます。You can use the Get-AzureRmAutomationJob to retrieve the jobs created for a runbook and the details of a particular job. Start-AzureRmAutomationRunbook を使用して PowerShell で Runbook を開始すると、結果として作成されたジョブが返されます。If you start a runbook with PowerShell using Start-AzureRmAutomationRunbook, then it returns the resulting job. Get-AzureRmAutomationJobOutput を使用して、ジョブの出力を取得します。Use Get-AzureRmAutomationJobOutput to get a job’s output.

次のサンプル コマンドは、サンプル Runbook の最後のジョブを取得し、その状態、Runbook パラメーターに指定された値、およびジョブの出力を表示します。The following sample commands retrieve the last job for a sample runbook and display its status, the values provided for the runbook parameters, and the output from the job.

$job = (Get-AzureRmAutomationJob –AutomationAccountName "MyAutomationAccount" `
–RunbookName "Test-Runbook" -ResourceGroupName "ResourceGroup01" | sort LastModifiedDate –desc)[0]
$job.Status
$job.JobParameters
Get-AzureRmAutomationJobOutput -ResourceGroupName "ResourceGroup01" `
–AutomationAccountName "MyAutomationAcct" -Id $job.JobId –Stream Output

次の例では、特定のジョブの出力を取得し、各レコードを返します。The following sample retrieves the output for a specific job, and returns each record. いずれかのレコードで例外が発生した場合、値ではなく、その例外が書き出されます。In the case that there was an exception for one of the records, the exception is written out instead of the value. 出力中に正常にログに記録されない可能性がある追加情報を例外で提供できるため、この動作は有用です。This behavior is useful as exceptions can provide additional information, which may not be logged normally during output.

$output = Get-AzureRmAutomationJobOutput -AutomationAccountName <AutomationAccountName> -Id <jobID> -ResourceGroupName <ResourceGroupName> -Stream "Any"
foreach($item in $output)
{
    $fullRecord = Get-AzureRmAutomationJobOutputRecord -AutomationAccountName <AutomationAccountName> -ResourceGroupName <ResourceGroupName> -JobId <jobID> -Id $item.StreamRecordId
    if ($fullRecord.Type -eq "Error")
    {
        $fullRecord.Value.Exception
    }
    else
    {
    $fullRecord.Value
    }
}

アクティビティ ログから詳細を取得するGet details from Activity log

Runbook を開始したユーザーやアカウントなどの他の詳細情報は、Automation アカウントのアクティビティ ログから取得できます。Other details such as the person or account that started the runbook can be retrieved from the Activity log for the automation account. 次の PowerShell の例では、対象の Runbook を最後に実行したユーザーが提供されます。The following PowerShell example provides the last user to run the runbook in question:

$SubID = "00000000-0000-0000-0000-000000000000"
$AutomationResourceGroupName = "MyResourceGroup"
$AutomationAccountName = "MyAutomationAccount"
$RunbookName = "MyRunbook"
$StartTime = (Get-Date).AddDays(-1)
$JobActivityLogs = Get-AzureRmLog -ResourceGroupName $AutomationResourceGroupName -StartTime $StartTime `
                                | Where-Object {$_.Authorization.Action -eq "Microsoft.Automation/automationAccounts/jobs/write"}

$JobInfo = @{}
foreach ($log in $JobActivityLogs)
{
    # Get job resource
    $JobResource = Get-AzureRmResource -ResourceId $log.ResourceId

    if ($JobInfo[$log.SubmissionTimestamp] -eq $null -and $JobResource.Properties.runbook.name -eq $RunbookName)
    { 
        # Get runbook
        $Runbook = Get-AzureRmAutomationJob -ResourceGroupName $AutomationResourceGroupName -AutomationAccountName $AutomationAccountName `
                                            -Id $JobResource.Properties.jobId | ? {$_.RunbookName -eq $RunbookName}

        # Add job information to hash table
        $JobInfo.Add($log.SubmissionTimestamp, @($Runbook.RunbookName,$Log.Caller, $JobResource.Properties.jobId))
    }
}
$JobInfo.GetEnumerator() | sort key -Descending | Select-Object -First 1

fair shareFair share

クラウド内のすべての Runbook 間でリソースを共有するため、3 時間以上実行されているジョブがあると、Azure Automation はそれらのジョブを一時的にアンロードまたは停止します。To share resources among all runbooks in the cloud, Azure Automation temporarily unloads or stops any job that has run for more than three hours. PowerShell ベースの Runbook および Python の Runbook に対するジョブは、停止されて再起動されずに、ジョブの状態には [停止済み] と表示されます。Jobs for PowerShell-based runbooks and Python runbooks are stopped and not restarted, and the job status shows Stopped.

長時間実行されるタスクの場合は、Hybrid Runbook Worker の使用をお勧めします。For long running tasks, it's recommended to use a Hybrid Runbook Worker. Hybrid Runbook Worker はフェア シェアによって制限されず、Runbook が実行できる時間に制限がありません。Hybrid Runbook Workers aren't limited by fair share, and don't have a limitation on how long a runbook can execute. その他のジョブの制限は、Azure サンドボックスと Hybrid Runbook Worker の両方に適用されます。The other job limits apply to both Azure sandboxes and Hybrid Runbook Workers. Hybrid Runbook Worker は 3 時間のフェア シェア制限を受けませんが、Hybrid Runbook Worker で実行される Runbook は、予期しないローカル インフラストラクチャの問題からの再起動動作をサポートするように開発する必要があります。While Hybrid Runbook Workers aren't limited by the 3 hour fair share limit, runbooks run on them should be developed to support restart behaviors from unexpected local infrastructure issues.

もう 1 つのオプションは、子 Runbook を使用して Runbook を最適化することです。Another option is to optimize the runbook by using child runbooks. Runbook で、複数のリソースに対して同じ関数をループ処理する場合 (複数のデータベースに対するデータベース操作など)、その関数を子 Runbook に移動して、Start-AzureRMAutomationRunbook コマンドレットで呼び出すことができます。If your runbook loops through the same function on several resources, such as a database operation on several databases, you can move that function to a child runbook and call it with the Start-AzureRMAutomationRunbook cmdlet. これらの各子 Runbook は別々のプロセスで並列に実行されます。Each of these child runbooks executes in parallel in separate processes. この動作によって、親 Runbook の完了までにかかる合計時間は減ります。This behavior decreases the total amount of time for the parent runbook to complete. お使いの Runbook で Get-AzureRmAutomationJob コマンドレットを使用すると、子 Runbook の完了後に実行する操作がある場合、各子のジョブの状態を確認できます。You can use the Get-AzureRmAutomationJob cmdlet in your runbook to check the job status for each child if there are operations that perform after the child runbook completes.

次の手順Next steps