vSphere Lifecycle Manager (vLCM) から、インポートしたコンポーネントを削除する方法
search cancel

vSphere Lifecycle Manager (vLCM) から、インポートしたコンポーネントを削除する方法

book

Article ID: 413666

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

この記事では vSphere Lifecycle Manager (vLCM) にアップロードした ESXi のコンポーネントを削除する手順を紹介します。


免責事項: これは英文の記事 Removing imported components from vSphere Lifecycle Manager (vLCM) の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

Environment

VMware vCenter Server

Resolution

作業前の注意事項

作業前に、問題が発生した場合に備え vCenter Server のオフラインスナップショットの取得を推奨します。vCenter Server Appliance のスナップショットを取得する際のベストプラクティスは Snapshot Best Practices for vCenter Server Virtual Machines をご覧ください。

削除しようとしているコンポーネントがベースラインで使用されている場合、予めそれらのベースラインを削除してください。ベースラインの削除方法は Delete Baselines and Baseline Groups をご覧ください。

 

Step 1

Connect-CisServer を使用して vCenter Server に接続します。

Connect-CisServer -Server <IP Address or FQDN of vCenter Server> -Username <Username> -Password <Password> -Force

Step 2

次のスクリプトを実行し、vLCM の全てのコンポーネントの ID (ComponentId) が列挙します。

$owner = '[email protected]'
$offlineDepotService = Get-CisService -Name com.vmware.esx.settings.depots.offline
$allComponents = $offlineDepotService.list()
$results = @()
foreach ($component in $allComponents.GetEnumerator())
{
    if($component.Value.owner.toLower() -eq $owner) {
        $tmp = [PSCustomObject] @{
            ComponentId = $component.Key
        }
        $results += $tmp
    }
}
$results

スクリプトを実行すると次のような出力が得られます。

ComponentId
-----------
31EAF1F762D76470C952##################F7
815D3DB5985161B5F5F7##################C5

以降の手順では、このスクリプトで得られた ComponentId の値を使用します。

Step 3

次のスクリプトを実行し、各コンポーネントの詳細情報を出力します。スクリプトの行頭の componentId  の値は Step 2 で得られたものに置き換えてください。

$componentId = "31EAF1F762D76470C952##################F7"
$offlineDepotContentService = Get-CisService -Name com.vmware.esx.settings.depots.offline.content
$componentDetails = $offlineDepotContentService.get($componentId).metadata_bundles
$results = @()
foreach ($componentDetail in $componentDetails.GetEnumerator())
{
    foreach ($component in $componentDetail.Value.independent_components.GetEnumerator()) {
        $tmp = [PSCustomObject] @{
            ComponentName = $component.Key
            ComponentVersion = $component.Value.versions.version
            ComponentDirectory = $componentDetail.Key
            ComponentFile = $componentDetail.Value.file_name
        }
        $results += $tmp
    }
}
$results

スクリプトを実行すると次のような結果が得られます。

ComponentName   ComponentVersion                                ComponentDirectory ComponentFile
-------------   ----------------                                ------------------ -------------
VMware-VM-Tools {12.5.3.24819442-24820517, 12.5.3-6.X.24819442} vmw                metadata-151.zip

componentId に対応するコンポーネントの名前が、削除しようとしているコンポーネントと一致していることを確認してください。コンポーネント名が異なる場合は、行頭の componentId の値を別のものに置き換えて再びスクリプトを実行し、削除したいコンポーネントの ID を探します。

Step 4

次のスクリプトでコンポーネントを削除します。実行すると vCenter Server で "デポの削除" というタスクが作成され、デポが削除されます。

$componentId = '31EAF1F762D76470C952##################F7'
$offlineDepotService = Get-CisService -Name com.vmware.esx.settings.depots.offline
$offlineDepotService.'delete$task'($componentId)

もしコンポーネントが一つ以上のベースラインで使用されている場合は、"デポの削除" のタスクは "指定されたデポのコンテンツは、一部のベースラインまたは目的の状態によって参照されています" というメッセージとともに失敗します。このエラーが発生した場合、ベースラインまたはベースライングループでコンポーネントが使用されていないかを再確認してください。ベースラインの削除方法については「作業前の注意事項」のセクションをご覧ください。