Hallo zusammen,
im VI Client gibt es unter der Ansicht "Virtual Machines and Templates" die Möglichkeit, Ordner anzulegen. Man kann die Guests daraufhin per Drag & Drop dahin verschieben und diese so übersichtlich gruppieren.
Wie kann ich per Skript / Kommandozeile erreichen, was ich mit der Maus im VI Client mache? Gibt es eine Möglcihkeit, bei der Registrierung per Skript bereits den Ziel Ordner auszuwählen?
Ich habe im Programming Guide VI Perl Toolkit, VMware VIX usw. nichts dazu gefunden. Auch habe ich versucht, beim Registrieren als "--vmname" Parameter gleich den Ordner mitzugeben. Wie auch immer, jeder Name wurde akzeptiert, so dass dann die VM auch mal "Folder1\DRSSRV02" hieß
Mittels "vmware-cmd" sehe ich keine Möglichkeit, da der ESX Hosts keine Ordner kennt. Also muss dass gegen den VC Server getan werden.
Wie kann ich das lösen?
Die Foren-SW läuft ohne erkennbare Probleme. Sollte doch etwas nicht funktionieren, bitte gerne hier jederzeit melden und wir kümmern uns zeitnah darum. Danke!
"Virtual Machines and Templates" Ordner per Skript
Danke für die rasche Antwort.
Allerdings laufen in der Umgebung schon eine große Anzahl bash Skripte, die das Perl Toolkit bemühen und z.T. per ssh Kommandos auf den ESX Servern absetzen. Ich würde das gern in mittels dieser Kombination erschlagen. Jetzt zusätzlich noch die Powershell und das passende Toolkit zu installieren sehe ich als letzte Möglichkeit.
Allerdings laufen in der Umgebung schon eine große Anzahl bash Skripte, die das Perl Toolkit bemühen und z.T. per ssh Kommandos auf den ESX Servern absetzen. Ich würde das gern in mittels dieser Kombination erschlagen. Jetzt zusätzlich noch die Powershell und das passende Toolkit zu installieren sehe ich als letzte Möglichkeit.
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...
=========================
#!/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...
- Tschoergez
- Moderator
- Beiträge: 3476
- Registriert: 23.02.2005, 09:14
- Wohnort: Burgberg im Allgäu
- Kontaktdaten:
Zum Vermeiden der Fehlermeldung musst Du wahrscheinlich ein weiteres Perl-Paket am Anfang mit einbinden:
....
(aus: http://www.vmware.com/support/developer ... guide.html)
Die genaue Referenz zu den zusätzlichen Funktionen befindet sich dann hier:
http://www.vmware.com/support/developer ... s_idx.html
edit: Oh, habs aus dem Stehgreif wohl zu kompliziert gemeint: Dein Fehler liegt wohl woanders (copy&paste schiefgelaufen?):
Schreib mal bei der validate-Zeile nur:
Viele Grüße,
Jörg
Code: Alles auswählen
use strict;
use warnings;
use VMware::VIRuntime;
use VMware::VILib;
my %opts = (
entity => {
type => "=s",
help => "ManagedEntity type: HostSystem, etc",
required => 1,
},
);
Opts::add_options(%opts);
....
(aus: http://www.vmware.com/support/developer ... guide.html)
Die genaue Referenz zu den zusätzlichen Funktionen befindet sich dann hier:
http://www.vmware.com/support/developer ... s_idx.html
edit: Oh, habs aus dem Stehgreif wohl zu kompliziert gemeint: Dein Fehler liegt wohl woanders (copy&paste schiefgelaufen?):
Schreib mal bei der validate-Zeile nur:
Code: Alles auswählen
Opts::validate();
Viele Grüße,
Jörg
Hallo Jörg, Danke - du hast den entscheidenden Hinweis geliefert.
Das was hinter "Opts::validate" in den Klammern stand war eine Referenz auf eine eigene Routine die "Opts::validate" ergänzen soll. Da ich aber keine eigene Sub "validate" habe - bzw nicht mit kopiert habe - ging das an der Stelle schief.
Hier nun das funktionsfähige Skript:
Das was hinter "Opts::validate" in den Klammern stand war eine Referenz auf eine eigene Routine die "Opts::validate" ergänzen soll. Da ich aber keine eigene Sub "validate" habe - bzw nicht mit kopiert habe - ging das an der Stelle schief.
Hier nun das funktionsfähige Skript:
Code: Alles auswählen
#!/usr/bin/perl -w
use strict;
use warnings;
use VMware::VIRuntime;
use VMware::VILib;
$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();
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();
Zurück zu „vCenter / VMware VirtualCenter“
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste