I've finally got a script together that does most of what I want, for anybody else out there this may help :smileycool:
#!/usr/bin/perl -w
use strict;
use warnings;
use VMware::VIRuntime;
Opts::parse();
Opts::validate();
Util::connect();
my ($mo,$vm_view,$folder);
my $folder_views = Vim::find_entity_views(view_type => 'Folder',
filter => { 'name' => qr/Desktops - Test/ });
#Dirty bodge but I don't know how to do it better...
foreach (@$folder_views) {
$folder = $_;
}
foreach $mo ( @{$folder->childEntity} ) {
my $vm_view = Vim::get_view(mo_ref => $mo);
print "Virtual Machine: " . $vm_view->name . " - " . $vm_view->runtime->powerState->val . "\n" ;
if($vm_view->runtime->powerState->val eq 'suspended'){
print "Powering on...\n";
$vm_view -> PowerOnVM();
}
}
Util::disconnect();