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

Azure Automation でのプロセス自動化によって、PowerShell、PowerShell ワークフロー、グラフィカル Runbook を作成し、管理することができます。Process automation in Azure Automation allows you to create and manage PowerShell, PowerShell Workflow, and graphical runbooks. 詳細については、Azure Automation Runbook に関するページを参照してください。For details, see Azure Automation runbooks.

Runbook は、Automation によって、その内部で定義されているロジックに基づいて実行されます。Automation executes your runbooks based on the logic defined inside them. Runbook は、中断された場合、先頭から再開されます。If a runbook is interrupted, it restarts at the beginning. この動作では、一時的な問題が発生した場合の再起動をサポートするように Runbook を作成する必要があります。This behavior requires you to write runbooks that support being restarted if transient issues occur.

Azure Automation で Runbook を開始すると、ジョブが作成されます。ジョブは Runbook の単一の実行インスタンスです。Starting a runbook in Azure Automation creates a job, which is a single execution instance of the runbook. ジョブごとに、Azure サブスクリプションに接続することによって Azure リソースにアクセスします。Each job accesses Azure resources by making a connection to your Azure subscription. ジョブでデータ センター内のリソースにアクセスできるのは、それらのリソースがパブリック クラウドからアクセスできる場合に限られます。The job can only access resources in your datacenter if those resources are accessible from the public cloud.

Azure Automation では、Runbook の実行中に各ジョブを実行するための worker が割り当てられます。Azure Automation assigns a worker to run each job during runbook execution. ワーカーは多数の Azure アカウントで共有されますが、異なる Automation アカウントからのジョブは互いに分離されます。While workers are shared by many Azure accounts, jobs from different Automation accounts are isolated from one another. どの worker がジョブの要求を処理するかを制御することはできません。You can't control which worker services your job requests.

Azure portal で Runbook の一覧を表示すると、各 Runbook に対して開始された各ジョブの状態が示されます。When you view the list of runbooks in the Azure portal, it shows the status of each job that has been started for each runbook. Azure Automation には、ジョブのログが最大 30 日間保存されます。Azure Automation stores job logs for a maximum of 30 days.

次の図では、PowerShell RunbookPowerShell ワークフロー Runbookグラフィック Runbookでの Runbook ジョブのライフサイクルを示します。The following diagram shows the lifecycle of a runbook job for PowerShell runbooks, PowerShell Workflow runbooks, and graphical runbooks.

ジョブの状態 - PowerShell Workflow

注意

個人データの表示または削除については、「GDPR のための Azure データ サブジェクト要求」を参照してください。For information about viewing or deleting personal data, see Azure Data Subject Requests for the GDPR. GDPR の詳細については、Service Trust Portal の GDPR に関するセクションを参照してください。For more information about GDPR, see the GDPR section of the Service Trust portal.

Runbook の実行環境Runbook execution environment

Azure Automation の Runbook は、Azure サンドボックスまたは Hybrid Runbook Worker のいずれかで実行できます。Runbooks in Azure Automation can run on either an Azure sandbox or a Hybrid Runbook Worker.

Runbook は、Azure のリソースに対して認証および実行されるように設計されている場合、複数のジョブで使用できる共有環境である Azure サンドボックスで実行されます。When runbooks are designed to authenticate and run against resources in Azure, they run in an Azure sandbox, which is a shared environment that multiple jobs can use. 同じサンドボックスを使用するジョブは、サンドボックスのリソース制限に縛られます。Jobs using the same sandbox are bound by the resource limitations of the sandbox. Azure サンドボックス環境では、対話型操作はサポートされていません。The Azure sandbox environment does not support interactive operations. そのため、すべてのプロセス外 COM サーバーにアクセスできません。It prevents access to all out-of-process COM servers. また、Win32 呼び出しを行う Runbook には、ローカルの MOF ファイルを使用する必要があります。It also requires the use of local MOF files for runbooks that make Win32 calls.

また、Hybrid Runbook Worker を使用すると、そのロールがホストされているコンピューターで、環境内のローカル リソースに対して Runbook を直接実行することができます。You can also use a Hybrid Runbook Worker to run runbooks directly on the computer that hosts the role and against local resources in the environment. Azure Automation によって Runbook が格納および管理された後、1 つ以上の割り当てられたコンピューターに配信されます。Azure Automation stores and manages runbooks and then delivers them to one or more assigned computers.

注意

Linux Hybrid Runbook Worker 上で実行するには、スクリプトが署名されていること、またワーカーが適切に構成されていることが必要です。To run on a Linux Hybrid Runbook Worker, your scripts must be signed and the worker configured accordingly. または、署名の検証をオフにする必要がありますAlternatively, signature validation must be turned off.

次の表では、いくつかの Runbook 実行タスクと、それぞれに対して推奨される実行環境を示します。The following table lists some runbook execution tasks with the recommended execution environment listed for each.

タスクTask 推奨Recommendation NotesNotes
Azure リソースと統合するIntegrate with Azure resources Azure サンドボックスAzure Sandbox Azure でホストされ、認証がより簡単です。Hosted in Azure, authentication is simpler. Azure VM で Hybrid Runbook Worker を使用している場合は、マネージド ID による Runbook 認証を使用できます。If you're using a Hybrid Runbook Worker on an Azure VM, you can use runbook authentication with managed identities.
Azure リソースを管理するための最適なパフォーマンスを得るObtain optimal performance to manage Azure resources Azure サンドボックスAzure Sandbox スクリプトは同じ環境内で実行され、待ち時間が短くなります。Script is run in the same environment, which has less latency.
運用コストを最小限に抑えるMinimize operational costs Azure サンドボックスAzure Sandbox コンピューティングのオーバーヘッドがなく、VM の必要がありません。There is no compute overhead and no need for a VM.
実行時間の長いスクリプトを実行するExecute long-running script Hybrid Runbook WorkerHybrid Runbook Worker Azure サンドボックスにはリソースの制限があります。Azure sandboxes have resource limits.
ローカル サービスと対話するInteract with local services Hybrid Runbook WorkerHybrid Runbook Worker ホスト コンピューター、他のクラウド環境内のリソース、またはオンプレミス環境内のリソースに直接アクセスします。Directly access the host machine, or resources in other cloud environments or the on-premises environment.
サードパーティのソフトウェアと実行可能ファイルが必要であるRequire third-party software and executables Hybrid Runbook WorkerHybrid Runbook Worker 自分でオペレーティング システムを管理し、ソフトウェアをインストールできます。You manage the operating system 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.
リソースを大量に消費するスクリプトを実行するRun a resource-intensive script Hybrid Runbook WorkerHybrid Runbook Worker Azure サンドボックスにはリソースの制限があります。Azure sandboxes have resource limits.
特定の要件を持つモジュールを使用するUse modules with specific requirements Hybrid Runbook WorkerHybrid Runbook Worker いくつかの例を次に示します。Some examples are:
WinSCP - winscp.exe への依存関係WinSCP - dependency on winscp.exe
IIS administration - IIS の有効化または管理に対する依存関係IIS administration - dependency on enabling or managing IIS
インストーラでモジュールをインストールするInstall a module with an installer Hybrid Runbook WorkerHybrid Runbook Worker サンドボックス用のモジュールでは、コピーがサポートされている必要があります。Modules for sandbox must support copying.
4.7.2 以外のバージョンの .NET Framework が必要な Runbook またはモジュールを使用するUse runbooks or modules that require .NET Framework version different from 4.7.2 Hybrid Runbook WorkerHybrid Runbook Worker Azure サンドボックスでは .NET Framework 4.7.2 がサポートされており、別のバージョンへのアップグレードはサポートされていません。Azure sandboxes support .NET Framework 4.7.2, and upgrading to a different version is not supported.
昇格が必要なスクリプトを実行するRun scripts that require elevation Hybrid Runbook WorkerHybrid Runbook Worker サンドボックスでは、昇格は許可されません。Sandboxes don't allow elevation. Hybrid Runbook Worker を使用すると、UAC をオフにして、昇格が必要なコマンドを実行するときに Invoke-Command を使用できます。With a Hybrid Runbook Worker, you can turn off UAC and use Invoke-Command when running the command that requires elevation.
Windows Management Instrumentation (WMI) へのアクセスを必要とするスクリプトを実行するRun scripts that require access to Windows Management Instrumentation (WMI) Hybrid Runbook WorkerHybrid Runbook Worker クラウドのサンドボックスで実行されているジョブでは、WMI プロバイダーにアクセスできません。Jobs running in sandboxes in the cloud can't access WMI provider.

サンドボックスでの一時ストレージTemporary storage in a sandbox

Runbook ロジックの一部として一時ファイルを作成する必要がある場合は、Azure で実行されている Runbook に対して、Azure サンドボックスの Temp フォルダー (つまり $env:TEMP) を使用できます。If you need to create temporary files as part of your runbook logic, you can use the Temp folder (that is, $env:TEMP) in the Azure sandbox for runbooks running in Azure. 唯一の制限は、各サンドボックスのクォータである 1 GB を超えるディスク領域を使用できないことです。The only limitation is you cannot use more than 1 GB of disk space, which is the quota for each sandbox. PowerShell ワークフローを使用する場合、PowerShell ワークフローによってチェックポイントが使用され、スクリプトが別のサンドボックスで再試行される可能性があるため、このシナリオでは問題が発生する可能性があります。When working with PowerShell workflows, this scenario can cause a problem because PowerShell workflows use checkpoints and the script could be retried in a different sandbox.

ハイブリッド サンドボックスでは、Hybrid Runbook Worker でのストレージの可用性に基づいて C:\temp を使用できます。With the hybrid sandbox, you can use C:\temp based on the availability of storage on a Hybrid Runbook Worker. ただし、Azure VM に関する推奨事項によって、永続化させる必要があるデータについては、Windows または Linux の一時ディスクを使用しないでください。However, per Azure VM recommendations, you should not use the temporary disk on Windows or Linux for data that needs to be persisted.

リソースResources

Runbook には必ず、リソース (VM、ネットワーク、ネットワーク上のリソースなど) を扱うロジックが含まれています。Your runbooks must include logic to deal with resources, for example, VMs, the network, and resources on the network. リソースは Azure サブスクリプションに関連付けられており、どのリソースにアクセスする場合でも Runbook に適切な資格情報が必要となります。Resources are tied to an Azure subscription, and runbooks require appropriate credentials to access any resource. Runbook におけるリソースの処理の例については、「リソースの処理」を参照してください。For an example of handling resources in a runbook, see Handle resources.

セキュリティSecurity

Azure Automation は、Azure Security Center (ASC) を使用してリソースのセキュリティを確保し、Linux システムにおけるセキュリティ侵害を検出します。Azure Automation uses the Azure Security Center (ASC) to provide security for your resources and detect compromise in Linux systems. リソースが Azure 内にあるかどうかにかかわらず、セキュリティはワークロード全体で確保されます。Security is provided across your workloads, whether resources are in Azure or not. Azure Automation での認証の概要に関するページを参照してください。See Introduction to authentication in Azure Automation.

VM 上でスクリプトを実行できるユーザーには、ASC によって制約が課されます。スクリプトは、署名されている場合と署名されていない場合とがあります。ASC places constraints on users who can run any scripts, either signed or unsigned, on a VM. VM へのルート アクセスを持つユーザーは、明示的にデジタル署名を使用してマシンを構成するか、デジタル署名をオフにする必要があります。If you are a user with root access to a VM, you must explicitly configure the machine with a digital signature or turn it off. それ以外のユーザーが、Automation アカウントを作成し、該当する機能を有効にした後で実行できるのは、オペレーティング システムの更新プログラムを適用するスクリプトだけです。Otherwise, you can only run a script to apply operating system updates after creating an Automation account and enabling the appropriate feature.

サブスクリプションSubscriptions

Azure サブスクリプションは、課金の対象となる 1 つまたは複数のクラウドベース サービスをご利用いただくために Microsoft との間で交わされる契約です。An Azure subscription is an agreement with Microsoft to use one or more cloud-based services, for which you are charged. Azure Automation では、各サブスクリプションが 1 つの Azure Automation アカウントに関連付けられます。また、そのアカウントには、複数のサブスクリプションを作成することができます。For Azure Automation, each subscription is linked to an Azure Automation account, and you can create multiple subscriptions in the account.

資格情報Credentials

Azure のリソースであれ、サードパーティ システムのリソースであれ、Runbook がリソースにアクセスするためには、Runbook に適切な資格情報が必要となります。A runbook requires appropriate credentials to access any resource, whether for Azure or third-party systems. これらの資格情報は、Azure Automation や Key Vault などに格納されます。These credentials are stored in Azure Automation, Key Vault, etc.

Azure MonitorAzure Monitor

Azure Automation では、そのマシンの操作を監視するために Azure Monitor が使用されます。Azure Automation makes use of Azure Monitor for monitoring its machine operations. これらの操作には、Log Analytics ワークスペースと Log Analytics エージェントが必要です。The operations require a Log Analytics workspace and a Log Analytics agent.

Windows 用の Log Analytics エージェントLog Analytics agent for Windows

Windows 用の Log Analytics エージェントは、Azure Monitor と連携して、Windows VM と物理コンピューターを管理します。The Log Analytics agent for Windows works with Azure Monitor to manage Windows VMs and physical computers. マシンは、Azure 内で実行されていても、Azure 以外の環境 (ローカル データセンターなど) で実行されていてもかまいません。The machines can be running either in Azure or in a non-Azure environment, such as a local datacenter.

注意

Windows 用の Log Analytics エージェントは、以前は Microsoft Monitoring Agent (MMA) と呼ばれていました。The Log Analytics agent for Windows was previously known as the Microsoft Monitoring Agent (MMA).

Linux 用 Log Analytics エージェントLog Analytics agent for Linux

Linux 用 Log Analytics エージェントは、Windows 用のエージェントと同様に機能しますが、Linux コンピューターを Azure Monitor に接続します。The Log Analytics agent for Linux works similarly to the agent for Windows, but connects Linux computers to Azure Monitor. エージェントをインストールすると、Hybrid Runbook Worker などでルート アクセス許可が要求されるコマンドを実行できる、nxautomation というユーザー アカウントもインストールされます。The agent is installed with a nxautomation user account that allows execution of commands requiring root permissions, for example, on a Hybrid Runbook Worker. nxautomation アカウントは、パスワードを必要としないシステム アカウントです。The nxautomation account is a system account that doesn't require a password.

Linux Hybrid Runbook Worker のインストール中は、対応する sudo アクセス許可を持った nxautomation アカウントが存在していなければなりません。The nxautomation account with the corresponding sudo permissions must be present during installation of a Linux Hybrid Runbook worker. そのアカウントが存在しない、または適切なアクセス許可がアカウントにない状態でワーカーをインストールしようとすると、インストールは失敗します。If you try to install the worker and the account is not present or doesn’t have the appropriate permissions, the installation fails.

sudoers.d フォルダーまたはその所有権のアクセス許可は変更しないでください。You should not change the permissions of the sudoers.d folder or its ownership. nxautomation アカウントには sudo アクセス許可が必要です。このアクセス許可は削除しないでください。Sudo permission is required for the nxautomation account and the permissions should not be removed. これを特定のフォルダーまたはコマンドに制限すると、破壊的変更が発生する可能性があります。Restricting this to certain folders or commands may result in a breaking change.

Log Analytics エージェントと nxautomation アカウント向けに提供されるログは次のとおりです。The logs available for the Log Analytics agent and the nxautomation account are:

  • /var/opt/microsoft/omsagent/log/omsagent.log - Log Analytics エージェントのログ/var/opt/microsoft/omsagent/log/omsagent.log - Log Analytics agent log
  • /var/opt/microsoft/omsagent/run/automationworker/worker.log - Automation ワーカーのログ/var/opt/microsoft/omsagent/run/automationworker/worker.log - Automation worker log

注意

Update Management の一環として有効にされた nxautomation ユーザーによって実行されるのは、署名済みの Runbook のみです。The nxautomation user enabled as part of Update Management executes only signed runbooks.

Runbook のアクセス許可Runbook permissions

Runbook には、資格情報を通じて Azure に対する認証を行うためのアクセス許可が必要です。A runbook needs permissions for authentication to Azure, through credentials. Azure Automation の実行アカウントを管理する」を参照してください。See Manage Azure Automation Run As accounts.

モジュールModules

Azure Automation は、いくつかの AzureRM モジュール (AzureRM.Automation)、いくつかの内部コマンドレットを含むモジュールなど、多くの既定のモジュールをサポートしています。Azure Automation supports a number of default modules, including some AzureRM modules (AzureRM.Automation) and a module containing several internal cmdlets. また、AzureRM モジュールに優先して現在使用されている Az モジュール (Az.Automation) など、インストール可能なモジュールもサポートされています。Also supported are installable modules, including the Az modules (Az.Automation), currently being used in preference to AzureRM modules. Runbook と DSC 構成で使用できるモジュールの詳細については、「Azure Automation でモジュールを管理する」を参照してください。For details of the modules that are available for your runbooks and DSC configurations, see Manage modules in Azure Automation.

証明書Certificates

Azure Automation では、Azure に対する認証に証明書が使用されるほか、Azure またはサードパーティのリソースに証明書が追加されます。Azure Automation uses certificates for authentication to Azure or adds them to Azure or third-party resources. 証明書は、Runbook や DSC の構成からアクセスできるよう安全に保存されます。The certificates are stored securely for access by runbooks and DSC configurations.

Runbook では、証明機関 (CA) による署名のない自己署名証明書を使用できます。Your runbooks can use self-signed certificates, which are not signed by a certificate authority (CA). 新しい証明書の作成」を参照してください。See Create a new certificate.

ジョブJobs

Azure Automation では、同じ Automation アカウントから複数のジョブを実行するための環境がサポートされています。Azure Automation supports an environment to run jobs from the same Automation account. 1 つの Runbook で、多数のジョブを同時に実行することができます。A single runbook can have many jobs running at one time. 同時に実行するジョブが多いほど、同じサンドボックスにディスパッチする頻度が上がります。The more jobs you run at the same time, the more often they can be dispatched to the same sandbox.

同じサンドボックス プロセスで実行するジョブは、お互いに影響し合う可能性があります。Jobs running in the same sandbox process can affect each other. 1 つの例は、Disconnect-AzAccount コマンドレットの実行です。One example is running the Disconnect-AzAccount cmdlet. このコマンドレットを実行すると、共有サンドボックス プロセス内の各 Runbook ジョブが切断されます。Execution of this cmdlet disconnects each runbook job in the shared sandbox process. このシナリオに取り組む例については、「コンカレント ジョブの防止」を参照してください。For an example of working with this scenario, see Prevent concurrent jobs.

注意

Azure サンドボックスで実行されている Runbook から開始された PowerShell ジョブは、完全な PowerShell 言語モードで実行されないことがあります。PowerShell jobs started from a runbook that runs in an Azure sandbox might not run in the full PowerShell language mode.

ジョブの状態Job statuses

次の表では、ジョブで可能性のある状態について説明します。The following table describes the statuses that are possible for a job. Azure portal で、すべての Runbook ジョブの状態の概要を表示したり、特定の Runbook ジョブの詳細にドリルダウンしたりできます。You can view a status summary for 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. Runbook で状態を扱う例については、「ジョブの状態を取得する」も参照してください。See also Obtain job statuses for an example of working with statuses in a runbook.

StatusStatus 説明Description
完了Completed ジョブは正常に完了しました。The job completed successfully.
失敗Failed グラフィック Runbook または PowerShell ワークフロー Runbook のコンパイルが失敗しました。A graphical or PowerShell Workflow runbook failed to compile. PowerShell Runbook を開始できなかったか、ジョブで例外が発生しました。A PowerShell runbook failed to start or the job had an exception. Azure Automation の Runbook の種類」を参照してください。See Azure Automation runbook types.
失敗、リソースを待機中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 become available so that it can be started.
再開中Resuming システムは、ジョブが停止された後、そのジョブを再開しています。The system is resuming the job after it was suspended.
実行中Running ジョブは実行中です。The job is running.
実行中、リソースを待機中Running, waiting for resources ジョブはフェア シェア制限に達したためにアンロードされました。The job has been unloaded because it reached the fair share limit. ジョブは最後のチェックポイントからすぐに再開します。It will resume shortly from its last checkpoint.
開始中Starting ジョブがワーカーに割り当てられており、システムがジョブを起動しています。The job has been assigned to a worker, and the system is starting it.
停止済みStopped ジョブは完了した後、ユーザーによって停止されました。The job was stopped by the user before it was completed.
停止中Stopping システムは、ジョブを停止しています。The system is stopping the job.
SuspendedSuspended グラフィック Runbook と PowerShell ワークフロー Runbook のみに適用されます。Applies to graphical and PowerShell Workflow runbooks only. ユーザーか、システムか、または Runbook 内のコマンドによってジョブは中断されました。The job was suspended by the user, by the system, or by a command in the runbook. Runbook にチェックポイントがない場合は、先頭から開始されます。If a runbook doesn't have a checkpoint, it starts from the beginning. チェックポイントがある場合は、最後のチェックポイントからもう一度再開できます。If it has a checkpoint, it can start again and resume from its last checkpoint. システムは、例外が発生した場合にのみ Runbook を中断します。The system only suspends the runbook when an exception occurs. 既定で、ErrorActionPreference 変数は、エラーでもジョブの実行を継続することを示す [Continue] に設定されます。By default, the ErrorActionPreference variable is set to Continue, indicating that the job keeps running on an error. このユーザー設定変数を [Stop] に設定すると、エラーが発生したときにジョブは中断されます。If the preference variable is set to Stop, the job suspends on an error.
中断中Suspending グラフィック Runbook と PowerShell ワークフロー Runbook のみに適用されます。Applies to graphical and PowerShell Workflow runbooks only. ユーザーの要求を受けてシステムはジョブを中断しようとしています。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. 最後のチェックポイントに既に到達している場合は、完了してからでないと中断できません。If it has already passed its last checkpoint, it completes before it can be suspended.

アクティビティ ログActivity logging

Azure Automation で Runbook を実行すると、その Automation アカウントのアクティビティ ログに詳細が書き込まれます。Execution of runbooks in Azure Automation writes details in an activity log for the Automation account. ログの使用の詳細については、「アクティビティ ログから詳細を取得する」を参照してください。For details of using the log, see Retrieve details from Activity log.

例外Exceptions

ここでは、Runbook で例外または断続的な問題を処理するいくつかの方法について説明します。This section describes some ways to handle exceptions or intermittent issues in your runbooks. たとえば WebSocket の例外があります。An example is a WebSocket exception. 正しい例外処理を使用すると、一時的なネットワーク エラーによって Runbook が失敗することを防ぐことができます。Correct exception handling prevents transient network failures from causing your runbooks to fail.

ErrorActionPreferenceErrorActionPreference

ErrorActionPreference 変数により、終了しないエラーに対して PowerShell が対応する方法が決まります。The ErrorActionPreference variable determines how PowerShell responds to a non-terminating error. 終了するエラーは常に終了し、ErrorActionPreference の影響を受けません。Terminating errors always terminate and are not affected by ErrorActionPreference.

Runbook で ErrorActionPreference を使用すると、Get-ChildItem コマンドレットの PathNotFound などの通常は終了しないエラーによって、Runbook の完了が停止します。When the runbook uses ErrorActionPreference, a normally non-terminating error such as PathNotFound from the Get-ChildItem cmdlet stops the runbook from completing. 次の例は、ErrorActionPreference の使用方法を示しています。The following example shows the use of ErrorActionPreference. スクリプトが停止するため、最後の Write-Output コマンドは実行されません。The final Write-Output command never executes, as the script stops.

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

Try Catch FinallyTry Catch Finally

Try Catch Finally は、終了するエラーを処理するために PowerShell スクリプトで使用されます。Try Catch Finally is used in PowerShell scripts to handle terminating errors. スクリプトでは、このメカニズムを使用して、特定の例外または一般的な例外をキャッチできます。The script can use this mechanism to catch specific exceptions or general exceptions. エラーを追跡または処理するには、catch ステートメントを使用する必要があります。The catch statement should be used to track or try to handle errors. 次の例は、存在しないファイルをダウンロードしようとしています。The following example tries to download a file that does not exist. これは、System.Net.WebException 例外をキャッチして、その他の例外の最後の値を返します。It catches the System.Net.WebException exception and returns the last value for any other exception.

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 mechanism can be useful when defining your own logic in a runbook. スクリプトが停止の必要な条件を満たしている場合は、throw ステートメントを使用して停止できます。If the script meets a criterion that should stop it, it can use the throw statement to stop. 次の例では、このステートメントを使用して、必要な関数パラメーターを示します。The following example uses this statement to show a required function parameter.

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

エラーErrors

Runbook はエラーを処理する必要があります。Your runbooks must handle errors. Azure Automation では、終了するエラーと終了しないエラーの 2 種類の PowerShell エラーがサポートされます。Azure Automation supports two types of PowerShell errors, terminating and non-terminating.

終了するエラーが発生すると、Runbook の実行は停止されます。Terminating errors stop runbook execution when they occur. Runbook は、[失敗] のジョブ状態で停止します。The runbook stops with a job status of Failed.

終了しないエラーの場合は、エラー発生後もスクリプトを継続できます。Non-terminating errors allow a script to continue even after they occur. 終了しないエラーの例は、Runbook で、存在しないパスを指定して Get-ChildItem コマンドレットを使用したときに発生するものです。An example of a non-terminating error is one that occurs when a runbook uses 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 のジョブ状態は [失敗] に設定されず、ジョブが完了する可能性もあります。The error in this case doesn't set the runbook job status to Failed, and the job might even be completed. 終了しないエラー時に Runbook を強制的に停止するには、コマンドレットで ErrorAction Stop を使用できます。To force a runbook to stop on a non-terminating error, you can use ErrorAction Stop on the cmdlet.

プロセスの呼び出しCalling processes

Azure サンドボックスで実行される Runbook では、実行可能ファイル ( .exe ファイル) やサブプロセスなどのプロセスの呼び出しはサポートされていません。Runbooks that run in Azure sandboxes don't support calling processes, such as executables (.exe files) or subprocesses. その理由は、Azure サンドボックスは、基になるすべての API にアクセスできるとは限らないコンテナーで実行される共有プロセスであるためです。The reason for this is that an Azure sandbox is a shared process run in a container that might not be able to access all the underlying APIs. サード パーティ製ソフトウェアや、サブプロセスの呼び出しを必要とするシナリオの場合は、Hybrid Runbook Worker で Runbook を実行する必要があります。For scenarios requiring third-party software or calls to subprocesses, you should execute a runbook on a Hybrid Runbook Worker.

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

Azure サンドボックス内の Runbook ジョブは、デバイスやアプリケーションの特性にアクセスできません。Runbook jobs in Azure sandboxes can't access any device or application characteristics. Windows でパフォーマンス メトリック (一般的なものはメモリや CPU の使用率など) のクエリを実行するために使用される最も一般的な API は WMI です。The most common API used to query performance metrics on Windows is WMI, with some of the common metrics being memory and CPU usage. ただし、クラウドで実行されているジョブでは Web-Based Enterprise Management (WBEM) の Microsoft による実装にアクセスできないため、どの API が使用されるかは問題ではありません。However, it doesn't matter what API is used, as jobs running in the cloud can't access the Microsoft implementation of Web-Based Enterprise Management (WBEM). このプラットフォームは、デバイスとアプリケーションの特性を定義するための業界標準を提供する Common Information Model (CIM) に基づいて構築されています。This platform is built on the Common Information Model (CIM), providing the industry standards for defining device and application characteristics.

WebhooksWebhooks

Azure DevOps Services や GitHub などの外部サービスを使用すると、Azure Automation で Runbook を開始できます。External services, for example, Azure DevOps Services and GitHub, can start a runbook in Azure Automation. この種類の開始を行うために、サービスでは 1 つの HTTP 要求を介して Webhook を使用します。To do this type of startup, the service uses a webhook via a single HTTP request. Webhook を使用すると、完全な Azure Automation 機能を実装せずに Runbook を開始できます。Use of a webhook allows runbooks to be started without implementation of a full Azure Automation feature.

共有リソースShared resources

クラウド内のすべての Runbook 間でリソースを共有するために、Azure では、"フェア シェア" と呼ばれる概念が使用されています。To share resources among all runbooks in the cloud, Azure uses a concept called fair share. 3 時間以上実行されているジョブがあると、フェア シェアの下、Azure はそれらのジョブを一時的にアンロードまたは停止します。Using fair share, Azure temporarily unloads or stops any job that has run for more than three hours. PowerShell の RunbookPython の Runbook のジョブは停止されて再起動されず、ジョブの状態は [停止済み] になります。Jobs for PowerShell runbooks and Python runbooks are stopped and not restarted, and the job status becomes Stopped.

長時間実行される Azure Automation タスクの場合は、Hybrid Runbook Worker の使用をお勧めします。For long-running Azure Automation 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 時間のフェア シェア制限を受けませんが、予期しないローカル インフラストラクチャの問題からの再起動がサポートされる worker で実行されるように Runbook を開発する必要があります。While Hybrid Runbook Workers aren't limited by the three hour fair share limit, you should develop runbooks to run on the workers that support restarts from unexpected local infrastructure issues.

もう 1 つのオプションは、子 Runbook を使用して Runbook を最適化することです。Another option is to optimize a runbook by using child runbooks. たとえば、複数のデータベースに対するデータベース操作など、複数のリソースに対する同じ機能によって Runbook がループする可能性があります。For example, your runbook might loop through the same function on several resources, for example, with a database operation on several databases. このような機能は、子 Runbook に移動し、Start-AzAutomationRunbook を使用して親 Runbook でそれを呼び出すことができます。You can move this function to a child runbook and have your runbook call it using Start-AzAutomationRunbook. 子 Runbook は別々のプロセスで並列に実行されます。Child runbooks execute in parallel in separate processes.

子 Runbook を使用すると、親 Runbook の完了までにかかる合計時間が短縮されます。Using child runbooks decreases the total amount of time for the parent runbook to complete. Runbook で子の完了後にまだ実行する操作がある場合、Get-AzAutomationJob コマンドレットを使用して、子 Runbook のジョブ状態を確認できます。Your runbook can use the Get-AzAutomationJob cmdlet to check the job status for a child runbook if it still has more operations after the child completes.

次のステップNext steps