Vmware スクリプトを実行していますが、途中まで行った後、以下のエラーで失敗して終了します。
Can't use an undefined value as an ARRAY reference at test.pl line 49
.
これは、約 4000 個の VM を持つ vCetner インベントリで実行されています。そのため、スクリプトがそのようなエラーを無視して、終了するまで実行を継続するようにします。現時点では、上記のエラーの後、スクリプトは何も出力せずに終了します。
これが私のコードで、上記のエラーが発生します。エラーが発生した数行のみを貼り付けています。
foreach my $vm_mo_ref ( @{ $host_view->vm } )
{
print $vm_mo_ref."\n";
}
これは、エラーを無視するために私がしたことです:
foreach my $vm_mo_ref ( @{ $host_view->vm } )
{
if (defined $vm_mo_ref)
{
print $vm_mo_ref."\n";
}
}
と
foreach my $vm_mo_ref ( @{ $host_view->vm } )
{
if (exists $vm_mo_ref)
{
print $vm_mo_ref."\n";
}
}
と
foreach my $vm_mo_ref ( @{ $host_view->vm } )
{
if ($vm_mo_ref)
{
print $vm_mo_ref."\n";
}
}
と
foreach my $vm_mo_ref ( @{ $host_view->vm } )
{
if (ref($vm_mo_ref) eq "ARRAY")
{
print $vm_mo_ref."\n";
}
}
と
foreach my $vm_mo_ref ( @{ $host_view->vm } )
{
if (ref($vm_mo_ref) eq "ManagedObjectReference")
{
print $vm_mo_ref."\n";
}
}
ただし、「if」条件を使用した上記の 5 つのアプローチはどれも機能せず、スクリプトは前述のエラーで失敗/終了します。
ところで、ManagedObjectReference
Vmware 固有のリファレンスです。
このエラーを回避し、残りのスクリプトを続行するのを手伝っていただけませんか。ありがとう。