PowerShellは、Windows環境における高度なスクリプト自動化ツールとして広く利用されています。本記事では、PowerShellを活用して、IT運用管理プラットフォームであるServiceNowと連携し、インシデントチケットの自動作成を実現する方法を解説します。手動でのチケット作成は、時間がかかり、ヒューマンエラーのリスクも伴います。しかし、自動化を導入することで、効率的な運用管理を実現し、ミスを大幅に減らすことが可能です。この記事を通じて、API連携の基礎から実践的なスクリプト作成方法まで、段階的に学んでいきましょう。
PowerShellとServiceNowの連携概要
PowerShellは、スクリプトベースでさまざまなタスクを自動化できる強力なツールです。一方、ServiceNowは、IT運用管理(ITOM)やITサービス管理(ITSM)を提供するプラットフォームであり、APIを通じて外部システムと連携することが可能です。この2つを組み合わせることで、インシデント管理や変更管理などのプロセスを効率化できます。
ServiceNow APIの役割
ServiceNowは、REST APIを提供しており、外部からデータの取得や更新、インシデント作成などを可能にします。PowerShellはHTTPリクエストを送信できるため、ServiceNow APIとの通信が容易に行えます。
連携によるメリット
PowerShellとServiceNowを連携することで得られる主なメリットは次のとおりです:
- 作業の効率化:インシデントの自動作成により、手動作業が不要になる。
- ヒューマンエラーの削減:スクリプトによる一貫した処理でエラーを防止。
- リアルタイム性:イベント発生時に即座にインシデントを作成可能。
必要な準備
PowerShellとServiceNowを連携するためには、以下の準備が必要です:
- ServiceNowアカウントとAPIの有効化:APIキーや認証情報を取得。
- PowerShellモジュールの確認:
Invoke-RestMethod
やConvertTo-Json
コマンドレットの利用。 - 環境設定:必要なエンドポイントURLや認証情報を管理する設定ファイルを準備。
この概要を押さえた上で、次のステップでは、ServiceNow APIの設定と認証方法について詳しく解説します。
ServiceNow APIの基本設定と認証方法
ServiceNow APIを利用するには、まずAPIを有効化し、PowerShellスクリプトで必要な認証情報を準備する必要があります。このセクションでは、API設定の手順と認証の基本について説明します。
APIの有効化と必要な権限
ServiceNowのREST APIを利用するには、以下の手順を実行します:
- APIアクセスの有効化
- ServiceNowインスタンスに管理者権限でログインします。
- 「System Web Services」 > 「REST API Explorer」を開き、APIが有効になっていることを確認します。
- 必要なユーザーロールの割り当て
- APIアクセスを行うために「rest_api_explorer」または適切な権限を持つロールをユーザーに付与します。
- ロールの設定は「User Administration」 > 「Users」から行えます。
認証方法
ServiceNow APIは、一般的に以下の認証方法をサポートしています:
- ベーシック認証:ユーザー名とパスワードを使用。簡単ですが安全性がやや劣ります。
- OAuth 2.0:トークンベースの認証。セキュアで大規模な運用に適しています。
ベーシック認証の設定
- PowerShellスクリプトで使用するために、認証情報を作成します。
“`powershell
$username = “your_username”
$password = “your_password”
$credentials = [System.Text.Encoding]::UTF8.GetBytes(“$username:$password”)
$encodedCredentials = [Convert]::ToBase64String($credentials)
2. APIリクエストのヘッダーに認証情報を追加します。
powershell
$headers = @{
Authorization = “Basic $encodedCredentials”
}
<h4>OAuth 2.0の設定</h4>
1. ServiceNowでOAuthプロバイダーを作成し、クライアントIDとシークレットを取得します。
- 「System OAuth」 > 「Application Registry」で新しいOAuthアプリケーションを登録。
2. PowerShellからトークンを取得します。
powershell
$url = “https://your-instance.service-now.com/oauth_token.do”
$body = @{
grant_type = “password”
client_id = “your_client_id”
client_secret = “your_client_secret”
username = “your_username”
password = “your_password”
}
$response = Invoke-RestMethod -Uri $url -Method Post -Body $body
$accessToken = $response.access_token
3. リクエストのヘッダーにアクセストークンを設定します。
powershell
$headers = @{
Authorization = “Bearer $accessToken”
}
<h3>接続テスト</h3>
以下のスクリプトで、ServiceNow APIの接続をテストします。
powershell
$apiUrl = “https://your-instance.service-now.com/api/now/table/incident”
$response = Invoke-RestMethod -Uri $apiUrl -Method Get -Headers $headers
$response
これで、ServiceNow APIとの連携が正常に動作するか確認できます。次のステップでは、インシデント作成用スクリプトの実装について解説します。
<h2>PowerShellスクリプトの基本構造</h2>
ServiceNowのインシデントチケットを自動作成するには、PowerShellスクリプトを用いてAPIリクエストを送信します。このセクションでは、基本的なスクリプトの構造を解説し、主要な要素について説明します。
<h3>基本構造の概要</h3>
PowerShellスクリプトは以下の手順で構成されます:
1. 必要な変数とモジュールの初期化
2. APIリクエストの作成
3. サーバーからのレスポンスの取得と処理
<h3>必要なモジュールの確認</h3>
スクリプトを実行するには、PowerShellの標準モジュールを使用します。以下のコマンドを使用して、モジュールがインストールされていることを確認します。
powershell
Get-Module -ListAvailable
特に`Invoke-RestMethod`コマンドレットが動作することを確認してください。
<h3>基本的なスクリプトの雛形</h3>
以下は、ServiceNow APIにリクエストを送信するための基本スクリプトの雛形です。
powershell
1. APIのエンドポイントと認証情報の設定
$instance = “your-instance.service-now.com”
$apiUrl = “https://$instance/api/now/table/incident”
$username = “your_username”
$password = “your_password”
$credentials = [System.Text.Encoding]::UTF8.GetBytes(“$username:$password”)
$encodedCredentials = [Convert]::ToBase64String($credentials)
2. ヘッダーの作成
$headers = @{
Authorization = “Basic $encodedCredentials”
“Content-Type” = “application/json”
}
3. インシデントデータの定義
$incidentData = @{
short_description = “PowerShellによる自動インシデント作成テスト”
urgency = “2”
impact = “2”
category = “Network”
} | ConvertTo-Json -Depth 10
4. APIリクエストの送信
$response = Invoke-RestMethod -Uri $apiUrl -Method Post -Headers $headers -Body $incidentData
5. レスポンスの表示
Write-Output “インシデント作成成功: $($response.result.number)”
<h3>各構成要素の詳細</h3>
<h4>1. APIエンドポイントと認証情報</h4>
ServiceNowのインスタンスURLとAPIエンドポイントを指定します。認証情報はベーシック認証を使用してエンコードします。
<h4>2. ヘッダー</h4>
APIリクエストを認証するための情報を含むヘッダーを作成します。認証情報とデータ形式(JSON)を明記します。
<h4>3. インシデントデータ</h4>
作成するインシデントの詳細をハッシュテーブルで定義します。これを`ConvertTo-Json`コマンドでJSON形式に変換します。
<h4>4. APIリクエストの送信</h4>
`Invoke-RestMethod`を使用してPOSTリクエストを送信します。エンドポイント、ヘッダー、リクエストボディを指定します。
<h4>5. レスポンスの処理</h4>
サーバーからのレスポンスを表示し、作成されたインシデント番号を確認します。
この基本構造を基に、次のセクションではインシデント作成用スクリプトの具体的な実装方法について詳しく説明します。
<h2>インシデント作成用スクリプトの実装方法</h2>
このセクションでは、PowerShellを使用してServiceNowでインシデントを自動作成するスクリプトの具体的な実装方法を説明します。実際の運用を意識したスクリプト例を紹介し、重要なポイントを解説します。
<h3>実装スクリプトの全体像</h3>
以下は、ServiceNowでインシデントを作成するスクリプトのサンプルコードです。
powershell
Step 1: 必要な変数を定義
$instance = “your-instance.service-now.com”
$apiUrl = “https://$instance/api/now/table/incident”
$username = “your_username”
$password = “your_password”
$shortDescription = “サーバー応答遅延の発生”
$category = “Hardware”
$urgency = “1” # 緊急度 (1: 高, 2: 中, 3: 低)
$impact = “1” # 影響範囲 (1: 大, 2: 中, 3: 小)
Step 2: 認証情報をエンコード
$credentials = [System.Text.Encoding]::UTF8.GetBytes(“$username:$password”)
$encodedCredentials = [Convert]::ToBase64String($credentials)
Step 3: ヘッダーを作成
$headers = @{
Authorization = “Basic $encodedCredentials”
“Content-Type” = “application/json”
}
Step 4: インシデントデータを定義
$incidentData = @{
short_description = $shortDescription
category = $category
urgency = $urgency
impact = $impact
} | ConvertTo-Json -Depth 10
Step 5: APIリクエストを送信
try {
$response = Invoke-RestMethod -Uri $apiUrl -Method Post -Headers $headers -Body $incidentData
Write-Output “インシデント作成成功: $($response.result.number)”
} catch {
Write-Error “インシデント作成中にエラーが発生しました: $_”
}
<h3>スクリプトの重要ポイント</h3>
<h4>1. インシデントデータのカスタマイズ</h4>
`short_description`や`category`などのフィールドは、業務要件に応じて設定可能です。ServiceNowのテーブル構造に基づき、必要なフィールドを追加できます。
<h4>2. 認証とセキュリティ</h4>
- ベーシック認証を使用する場合、スクリプト内に認証情報を含める必要があります。安全性を高めるため、認証情報は環境変数や安全なキー管理システムで管理することを推奨します。
- OAuth認証を採用する場合は、アクセストークンを使用してセキュアに認証します。
<h4>3. エラーハンドリング</h4>
`try-catch`構文を使用してエラー発生時に適切なメッセージを表示します。これにより、問題の特定とトラブルシューティングが容易になります。
<h3>運用環境でのスクリプト実行</h3>
運用環境でスクリプトを使用する際には、次の点に注意してください:
1. **環境ごとの設定ファイル**:開発環境と本番環境で異なる認証情報やエンドポイントを簡単に切り替えられるように設定ファイルを用意します。
2. **ロギング**:スクリプトの実行ログを保存して、後から動作を追跡できるようにします。
3. **スケジューリング**:定期的なインシデント作成が必要な場合、Windowsタスクスケジューラなどを活用します。
このスクリプトを基に、次のセクションでは、各コード部分の詳細解説とトラブルシューティング方法を説明します。
<h2>実装スクリプトの詳細解説</h2>
ここでは、インシデント作成用スクリプトの各部分を詳細に解説します。この情報により、スクリプトの構造や動作を深く理解し、必要に応じてカスタマイズできるようになります。
<h3>スクリプトの解説</h3>
<h4>1. 必要な変数を定義</h4>
powershell
$instance = “your-instance.service-now.com”
$apiUrl = “https://$instance/api/now/table/incident”
$username = “your_username”
$password = “your_password”
$shortDescription = “サーバー応答遅延の発生”
$category = “Hardware”
$urgency = “1” # 緊急度 (1: 高, 2: 中, 3: 低)
$impact = “1” # 影響範囲 (1: 大, 2: 中, 3: 小)
- `$instance`は、ServiceNowインスタンスのURL部分を指定します。
- `$apiUrl`には、インシデント作成用のREST APIエンドポイントを設定します。
- `$username`と`$password`は認証情報を格納します。これらは安全性を考慮し、環境変数や安全なストレージから取得することを推奨します。
<h4>2. 認証情報をエンコード</h4>
powershell
$credentials = [System.Text.Encoding]::UTF8.GetBytes(“$username:$password”)
$encodedCredentials = [Convert]::ToBase64String($credentials)
- ユーザー名とパスワードをBase64形式にエンコードします。これにより、ベーシック認証の形式に適合します。
- この方法は簡単ですが、認証情報が含まれるため、HTTPSを利用して通信内容を暗号化する必要があります。
<h4>3. ヘッダーの作成</h4>
powershell
$headers = @{
Authorization = “Basic $encodedCredentials”
“Content-Type” = “application/json”
}
- `Authorization`フィールドに認証情報を含めます。
- `Content-Type`を`application/json`に設定することで、リクエストボディがJSON形式であることを指定します。
<h4>4. インシデントデータを定義</h4>
powershell
$incidentData = @{
short_description = $shortDescription
category = $category
urgency = $urgency
impact = $impact
} | ConvertTo-Json -Depth 10
- インシデントに関する情報をハッシュテーブル形式で指定します。
- `ConvertTo-Json`コマンドを使い、ハッシュテーブルをJSON形式に変換します。`-Depth`パラメータを10に設定し、ネストされたデータ構造も正しく変換します。
<h4>5. APIリクエストを送信</h4>
powershell
$response = Invoke-RestMethod -Uri $apiUrl -Method Post -Headers $headers -Body $incidentData
- `Invoke-RestMethod`は、HTTPリクエストを送信し、レスポンスを自動的に解析します。
- `-Uri`にはAPIのエンドポイントURLを指定し、`-Method`にはHTTPメソッド(ここではPOST)を指定します。
- `-Headers`と`-Body`には、それぞれ認証情報とJSON形式のインシデントデータを指定します。
<h4>6. レスポンスの処理</h4>
powershell
Write-Output “インシデント作成成功: $($response.result.number)”
- サーバーから返されたレスポンスの`result.number`フィールドを取得し、作成されたインシデント番号を表示します。
<h4>7. エラーハンドリング</h4>
powershell
try {
# APIリクエストを送信
} catch {
Write-Error “インシデント作成中にエラーが発生しました: $_”
}
- `try-catch`構文を使用し、エラー発生時に詳細なエラー情報を記録します。
<h3>実行例と結果</h3>
このスクリプトを実行すると、次のような結果が得られます。
インシデント作成成功: INC0012345
上記の出力は、ServiceNowで作成されたインシデント番号を示しています。エラーが発生した場合は、エラーメッセージが表示されます。
次のセクションでは、スクリプト実行時の注意点とトラブルシューティングについて説明します。
<h2>スクリプトを実行する際の注意点とトラブルシューティング</h2>
このセクションでは、PowerShellスクリプトを実行する際に注意すべきポイントと、発生しうる問題の解決方法を解説します。これにより、スクリプトの信頼性を向上させ、エラー時の対応を迅速化できます。
<h3>スクリプト実行時の注意点</h3>
<h4>1. HTTPSを必ず利用</h4>
ServiceNow APIへのリクエストでは、通信内容を暗号化するためにHTTPSプロトコルを使用する必要があります。ベーシック認証を使用している場合、認証情報が保護されないため、HTTPSが必須です。
<h4>2. 認証情報の安全な管理</h4>
スクリプト内に平文で認証情報を記載することは推奨されません。以下の方法で安全に管理できます:
- **環境変数の利用**
powershell
$username = $env:SERVICENOW_USERNAME
$password = $env:SERVICENOW_PASSWORD
- **セキュアストアの使用**
PowerShellの`Get-Credential`やWindows Credential Managerを使用します。
<h4>3. JSONフォーマットの検証</h4>
リクエストボディのJSONフォーマットが正しくないと、APIリクエストは失敗します。スクリプト実行前に`$incidentData`を確認します:
powershell
Write-Output $incidentData
<h4>4. APIリクエストの制限</h4>
ServiceNowのインスタンスには、APIリクエストのレート制限があります。大量のリクエストを送信する場合は、適切な間隔を設定します:
powershell
Start-Sleep -Seconds 1
<h3>トラブルシューティングの手順</h3>
<h4>1. 認証エラー</h4>
**現象**:`401 Unauthorized`エラーが発生。
**原因**:認証情報が正しくない、または認証形式が不正。
**対処法**:
- 認証情報が正しいか確認します。
- エンコード処理を再確認します:
powershell
$credentials = [System.Text.Encoding]::UTF8.GetBytes(“$username:$password”)
$encodedCredentials = [Convert]::ToBase64String($credentials)
<h4>2. データ送信エラー</h4>
**現象**:`400 Bad Request`エラーが発生。
**原因**:リクエストボディのJSONフォーマットが不正。
**対処法**:
- `$incidentData`をデバッグ出力し、JSONフォーマットを検証します:
powershell
Write-Output $incidentData
- 必須フィールド(例:`short_description`)が欠落していないか確認します。
<h4>3. 接続エラー</h4>
**現象**:`404 Not Found`または`503 Service Unavailable`エラーが発生。
**原因**:APIエンドポイントが間違っている、またはServiceNowインスタンスが利用不可。
**対処法**:
- `$apiUrl`が正しいか確認します。
- ServiceNowインスタンスが正常に稼働しているか確認します。
<h4>4. レスポンスの解析エラー</h4>
**現象**:レスポンスデータが取得できない。
**原因**:APIの返却データが予期しない形式。
**対処法**:
- `$response`の内容を確認してデバッグします:
powershell
Write-Output $response
- ServiceNowのAPIドキュメントを参照して、レスポンス形式が変更されていないか確認します。
<h4>5. リクエスト制限エラー</h4>
**現象**:`429 Too Many Requests`エラーが発生。
**原因**:短期間に大量のリクエストを送信。
**対処法**:
- リクエスト間隔を調整します:
powershell
Start-Sleep -Seconds 2
<h3>ログの活用</h3>
スクリプトの動作状況を追跡するため、ログを記録することを推奨します。
powershell
$logPath = “C:\Logs\ServiceNow_Incident_Log.txt”
“[$(Get-Date)] インシデント作成成功: $($response.result.number)” | Out-File -FilePath $logPath -Append
次のセクションでは、自動化をさらに進化させる応用例について解説します。
<h2>自動化の応用例:インシデント対応状況の確認</h2>
ServiceNow APIを活用することで、インシデントの作成だけでなく、対応状況の確認や更新も自動化できます。このセクションでは、PowerShellを使用して既存のインシデントを取得し、対応状況を確認する方法を解説します。
<h3>インシデント対応状況の取得</h3>
以下は、特定の条件に基づいてインシデントリストを取得するスクリプト例です。
powershell
Step 1: 必要な変数を定義
$instance = “your-instance.service-now.com”
$apiUrl = “https://$instance/api/now/table/incident”
$username = “your_username”
$password = “your_password”
Step 2: 認証情報をエンコード
$credentials = [System.Text.Encoding]::UTF8.GetBytes(“$username:$password”)
$encodedCredentials = [Convert]::ToBase64String($credentials)
Step 3: ヘッダーを作成
$headers = @{
Authorization = “Basic $encodedCredentials”
“Content-Type” = “application/json”
}
Step 4: インシデント検索条件を定義
$query = “active=true^state!=6” # アクティブかつクローズされていないインシデント
$encodedQuery = [System.Web.HttpUtility]::UrlEncode($query)
$requestUrl = “$apiUrl?sysparm_query=$encodedQuery&sysparm_limit=10”
Step 5: APIリクエストを送信
try {
$response = Invoke-RestMethod -Uri $requestUrl -Method Get -Headers $headers
Write-Output “取得したインシデント一覧:”
foreach ($incident in $response.result) {
Write-Output “番号: $($incident.number), 状態: $($incident.state), 説明: $($incident.short_description)”
}
} catch {
Write-Error “インシデント取得中にエラーが発生しました: $_”
}
<h4>スクリプトのポイント</h4>
- **検索条件(Query)**
- `sysparm_query`パラメータを使い、検索条件を指定します。
- 例:`active=true`はアクティブなインシデントを取得し、`state!=6`はクローズされていないインシデントを示します。
- **取得数の制限**
- `sysparm_limit`で取得するインシデントの最大数を指定できます。
<h3>対応状況の詳細確認</h3>
取得したインシデントの中から、特定のインシデントの詳細を確認するスクリプト例を示します。
powershell
Step 1: インシデント番号を指定
$incidentNumber = “INC0012345”
$requestUrl = “$apiUrl?sysparm_query=number=$incidentNumber”
Step 2: APIリクエストを送信
try {
$response = Invoke-RestMethod -Uri $requestUrl -Method Get -Headers $headers
$incident = $response.result[0]
Write-Output “インシデント詳細:”
Write-Output “番号: $($incident.number)”
Write-Output “状態: $($incident.state)”
Write-Output “説明: $($incident.short_description)”
Write-Output “担当者: $($incident.assigned_to.display_value)”
} catch {
Write-Error “インシデント詳細取得中にエラーが発生しました: $_”
}
<h4>スクリプトのポイント</h4>
- **インシデント番号によるフィルタ**
- インシデント番号を指定して詳細情報を取得します。
- **詳細フィールドの確認**
- `state`(状態)、`assigned_to`(担当者)など、必要なフィールドを確認します。
<h3>活用例</h3>
1. **ダッシュボードへのデータ出力**
- 取得したインシデントリストをCSV形式で保存し、可視化ツールに取り込む:
```powershell
$response.result | Export-Csv -Path "C:\Logs\IncidentList.csv" -NoTypeInformation
```
2. **未対応インシデントのアラート通知**
- 未対応インシデントをメールやチャットツールで通知する:
```powershell
foreach ($incident in $response.result) {
if ($incident.state -eq "1") {
Send-MailMessage -To "admin@example.com" -Subject "未対応インシデント: $($incident.number)" -Body "説明: $($incident.short_description)"
}
}
```
このスクリプトを基に、インシデント管理のさらなる効率化が可能です。次のセクションでは、運用管理の改善ポイントと効果測定について解説します。
<h2>運用管理の改善ポイントと効果測定</h2>
PowerShellとServiceNowを活用した自動化により、運用管理を効率化するための改善ポイントと、成果を測定する方法を解説します。これにより、単なる自動化にとどまらず、継続的な改善プロセスを確立することが可能です。
<h3>運用管理の改善ポイント</h3>
<h4>1. 手動作業の削減</h4>
- **現状**:手動でのインシデント作成や対応状況の確認が多くの時間を占める。
- **改善策**:PowerShellスクリプトでこれらの作業を自動化し、運用チームの負担を軽減します。たとえば、インシデント作成、状況確認、通知を完全自動化することが可能です。
<h4>2. レスポンスの迅速化</h4>
- **現状**:インシデント対応までの時間が長く、サービス提供に影響を与える。
- **改善策**:リアルタイムのインシデント監視と自動通知を実装することで、対応時間を短縮できます。
<h4>3. 運用データの活用</h4>
- **現状**:インシデントに関するデータが分散し、分析が困難。
- **改善策**:取得したデータをCSVやデータベースに保存し、ダッシュボードで可視化することで、傾向分析や問題の特定が容易になります。
<h4>4. エラーハンドリングとリカバリ</h4>
- **現状**:エラー発生時の対応が場当たり的で、復旧に時間がかかる。
- **改善策**:スクリプト内に詳細なエラーハンドリング機能を組み込み、エラー発生時に通知を送る仕組みを導入します。
<h3>効果測定の方法</h3>
<h4>1. KPIの設定</h4>
改善の成果を測るため、具体的なKPIを設定します。以下の例を参考にしてください:
- **インシデント作成時間**:手動作業と比較して削減された時間を測定します。
- **対応時間の短縮**:インシデントが作成されてから対応が開始されるまでの時間を記録します。
- **エラー件数**:自動化導入後に発生したエラーの件数をトラッキングします。
<h4>2. 定期的なレポート作成</h4>
自動化の成果を記録するため、定期的にレポートを作成します。以下はレポート作成のスクリプト例です:
powershell
$response.result | Select-Object number, short_description, state, assigned_to | Export-Csv -Path “C:\Logs\IncidentReport.csv” -NoTypeInformation
Write-Output “レポートが作成されました: C:\Logs\IncidentReport.csv”
“`
3. 可視化ツールとの連携
取得したデータをPower BIやExcelなどの可視化ツールに取り込み、ダッシュボードを作成します。これにより、リアルタイムの状況把握と長期的なトレンド分析が可能になります。
4. チームフィードバックの収集
自動化の効果を運用チームから定性的に評価します。以下のポイントを確認します:
- 作業負担の軽減感
- スクリプトの使いやすさ
- 改善が必要な部分
効果測定結果の活用
効果測定で得られた結果を基に、自動化プロセスをさらに改善します。具体的には、以下のようなアップデートを行います:
- インシデント作成以外のプロセス(例:変更管理や問題管理)の自動化追加
- リクエスト処理速度を向上させるためのスクリプト最適化
- チームからのフィードバックを反映した機能の追加
次のセクションでは、この記事の内容を簡潔にまとめます。
まとめ
本記事では、PowerShellを活用してServiceNowのインシデントチケット作成を自動化する方法について解説しました。PowerShellのスクリプトでServiceNow APIを利用することで、手動作業を大幅に削減し、運用管理を効率化できることを示しました。
具体的には、インシデント作成用スクリプトの実装から応用例としてのインシデント状況確認、さらに運用管理の改善ポイントと効果測定について詳細に説明しました。これらの方法を活用することで、運用チームの負担を軽減し、迅速かつ正確なサービス提供が可能になります。
引き続き、カスタマイズや応用を加え、より高度な自動化プロセスを構築することで、運用効率のさらなる向上を目指してください。
コメント