Ich habe folgendes Perl Skript "gebastelt":
=========================
#!/usr/bin/perl -w
use strict;
use warnings;
use VMware::VIRuntime;
$Util::script_version = "1.0";
my %opts = (
'vmname' => {
type => "=s",
help => "The name of the vm",
required => 1,
},
'folder' => {
type => "=s",
help => "The name of the vmFolder",
required => 1,
},
'datacenter' => {
type => "=s",
variable => "datacenter",
help => "Name of the datacenter",
required => 0,
},
'pool' => {
type => "=s",
variable => "pool",
help => "Name of the resource pool",
required => 0,
},
'host' => {
type => "=s",
variable => "host",
help => "Name of the host" ,
required => 0,
},
);
Opts::add_options(%opts);
Opts::parse();
Opts::validate(\&validate);
Util::connect();
my $vmname = Opts::get_option('vmname');
my $folder = Opts::get_option('folder');
my $vm_views = Vim::find_entity_views((view_type => 'VirtualMachine'), filter => { name => $vmname } );
my $vm_moref = shift @$vm_views;
my $folder_views = Vim::find_entity_views((view_type => 'Folder'), filter => { name => $folder } );
my $folder_moref = shift @$folder_views;
eval
{
$folder_moref->MoveIntoFolder(list => $vm_moref);
};
Util::disconnect();
=========================
Ich bekomme folgende Fehlermeldung:
# Undefined subroutine &main::validate called at C:/Program Files/VMware/VMware VI
# Perl Toolkit/Perl/lib/VMware/VILib.pm line 519.
Ich bin leider in Perl nicht fit genug um den Unterschied zu anderen Skripten zu erkennen, die ich als Quelle benutzt habe. "c:\Programme\VMware\VMware VI Perl Toolkit\Perl\samples\vm\vmprovision.pl" Dort wird das IMHO ebenso benutzt.
Kommentiere ich die Zeile "Opts::validate(\&validate);" aus, dann tut das Skript seinen Dienst. Aber "validate" prüft sicher die Parameter, worauf ich nicht verzichten will...