{"id":14959,"date":"2020-01-25T11:40:57","date_gmt":"2020-01-25T10:40:57","guid":{"rendered":"http:\/\/blog.purplescreen.fr\/?p=14959"},"modified":"2020-01-25T12:46:41","modified_gmt":"2020-01-25T11:46:41","slug":"how-schedule-task-for-multi-virtual-machine","status":"publish","type":"post","link":"http:\/\/blog.purplescreen.fr\/?p=14959","title":{"rendered":"Schedule Task for multi Virtual Machine"},"content":{"rendered":"\n<h2>Description<\/h2>\n\n\n\n<p>The goal for this script is to schedule a task for a lot of Virtual Machine. You have to list all of your virtual machines that you want to affect by this schedule in a csv file. The name of the task is define in the script as well as the description. The CSV file must be have a column&#8217;s name &#8220;Name&#8221;. The task created is configure for Once time, it&#8217;s not do for periodic time. You can&#8217;t configure it for periodic time with this script but you can modify it on line &#8220;VMware.Vim.OnceTaskScheduler&#8221;. <br>Please look at VMware SDK to perform this task.<br><br><strong>Example :<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Name\nVM Name 1\nVM Name 2\n...<\/pre>\n\n\n\n<h2>Requirements<\/h2>\n\n\n\n<p>Some options are mandatory to be able to schedule any task.  <br><br>The first option is &#8220;Task&#8221;. You can use three parameters for this option (RebootGuest, ShutdownGuest or PowerOnVM).  <br><br>The second is &#8220;ScheduleTask&#8221;. You have to format this option like this &#8220;mm\/dd\/yy HH:mm&#8221;.  <br><br>The third is &#8220;EmailNotification&#8221;. This one is not mandatory but you can add it if you would like to receive an email when the task is done.<\/p>\n\n\n\n<h2>Example<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">PS &gt; ScheduleTask -PathFile C:\\PathToMyCSVFile.csv -ScheduleTask \"01\/25\/20 20:31\" -Task ShutdownGuest -EmailNotification xxx@xxx.com <\/pre>\n\n\n\n<h2>Script<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">function ScheduleTask {\n[CmdletBinding()]\nParam(\n    [Parameter(Mandatory=$True,Position=0)]\n    [string]$PathFile,\n    [Parameter(Mandatory=$True,Position=1)]\n    [ValidateSet(\"RebootGuest\", \"ShutdownGuest\", \"PowerOnVM\")]\n    [string]$Task,\n    [Parameter(Mandatory=$False,Position=2)]\n    [string]$EmailNotification,\n    [Parameter(Mandatory=$True,Position=3)]\n    [string]$ScheduleTask\n)#PARAM\n$Time = Get-Date $ScheduleTask\n$ImportCSV = Import-Csv -Path $PathFile\nif ($ImportCSV.Name -eq $null) {\nWrite-Host \"This file doesn't contain any columns Name\" -ForegroundColor red\nBreak\n}\nelse { \nforeach ($VM in $ImportCSV.Name) {\n$vm = Get-VM -Name $VM\n$si = get-view ServiceInstance\n$scheduledTaskManager = Get-View $si.Content.ScheduledTaskManager\nif ($Task -eq \"RebootGuest\") {\n$spec = New-Object VMware.Vim.ScheduledTaskSpec\n$spec.Name = \"RebootGuest VM $VM\" -join ' '\n$spec.Description = 'RebootGuest VM'\n$spec.Enabled = $true\n$spec.Notification = $EmailNotification\n$spec.Scheduler = New-Object VMware.Vim.OnceTaskScheduler\n$spec.Scheduler.runat = $Time\n$spec.Action = New-Object VMware.Vim.MethodAction\n$spec.Action.Name = \"RebootGuest\"    \n$scheduledTaskManager.CreateObjectScheduledTask($vm.ExtensionData.MoRef, $spec)\n}\nelseif ($Task -eq \"ShutdownGuest\") {\n$spec = New-Object VMware.Vim.ScheduledTaskSpec\n$spec.Name = \"Shutdown VM $VM\" -join ' '\n$spec.Description = 'Shutdown VM'\n$spec.Enabled = $true\n$spec.Notification = $EmailNotification\n$spec.Scheduler = New-Object VMware.Vim.OnceTaskScheduler\n$spec.Scheduler.runat = $Time\n$spec.Action = New-Object VMware.Vim.MethodAction\n$spec.Action.Name = \"ShutdownGuest\"    \n$scheduledTaskManager.CreateObjectScheduledTask($vm.ExtensionData.MoRef, $spec)\n}\nelseif ($Task -eq \"PowerOnVM\") {\n$spec = New-Object VMware.Vim.ScheduledTaskSpec\n$spec.Name = \"Power on VM $VM\"\n$spec.Description = \"Power on VM\"\n$spec.Enabled = $true\n$spec.Notification = $EmailNotification\n$spec.Scheduler = New-Object VMware.Vim.OnceTaskScheduler\n$spec.Scheduler.runat = $Time\n$spec.Action = New-Object VMware.Vim.MethodAction\n$spec.Action.Name = \"PowerOnVM_Task\"\n$scheduledTaskManager.CreateScheduledTask($vm.ExtensionData.MoRef, $spec)\n}\n}\n}\n}<\/pre>\n\n\n\n<p>For more informations, please send me an email from Contact tab.<br><br>Have Fun !!!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Description The goal for this script is to schedule a task for a lot of Virtual Machine. You have to list all of your virtual machines that you want to affect by this schedule in a csv file. The name of the task is define in the script as well as the description. The CSV&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[11,10],"tags":[26,72,19,73],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Schedule Task for multi Virtual Machine - PurpleScreen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.purplescreen.fr\/?p=14959\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ogosselin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.purplescreen.fr\/?p=14959\",\"url\":\"https:\/\/blog.purplescreen.fr\/?p=14959\",\"name\":\"Schedule Task for multi Virtual Machine - PurpleScreen\",\"isPartOf\":{\"@id\":\"http:\/\/blog.purplescreen.fr\/#website\"},\"datePublished\":\"2020-01-25T10:40:57+00:00\",\"dateModified\":\"2020-01-25T11:46:41+00:00\",\"author\":{\"@id\":\"http:\/\/blog.purplescreen.fr\/#\/schema\/person\/ad63980c08d122ffe9115ade81b21fd3\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.purplescreen.fr\/?p=14959#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.purplescreen.fr\/?p=14959\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.purplescreen.fr\/?p=14959#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/blog.purplescreen.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Schedule Task for multi Virtual Machine\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/blog.purplescreen.fr\/#website\",\"url\":\"http:\/\/blog.purplescreen.fr\/\",\"name\":\"PurpleScreen\",\"description\":\"by Olivier Gosselin\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/blog.purplescreen.fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/blog.purplescreen.fr\/#\/schema\/person\/ad63980c08d122ffe9115ade81b21fd3\",\"name\":\"ogosselin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/blog.purplescreen.fr\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6a053a3dca3cccbeecd37d492189f38f?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6a053a3dca3cccbeecd37d492189f38f?s=96&d=mm&r=g\",\"caption\":\"ogosselin\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/olivier-gosselin-30090498\/\"],\"url\":\"http:\/\/blog.purplescreen.fr\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Schedule Task for multi Virtual Machine - PurpleScreen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.purplescreen.fr\/?p=14959","twitter_misc":{"Written by":"ogosselin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.purplescreen.fr\/?p=14959","url":"https:\/\/blog.purplescreen.fr\/?p=14959","name":"Schedule Task for multi Virtual Machine - PurpleScreen","isPartOf":{"@id":"http:\/\/blog.purplescreen.fr\/#website"},"datePublished":"2020-01-25T10:40:57+00:00","dateModified":"2020-01-25T11:46:41+00:00","author":{"@id":"http:\/\/blog.purplescreen.fr\/#\/schema\/person\/ad63980c08d122ffe9115ade81b21fd3"},"breadcrumb":{"@id":"https:\/\/blog.purplescreen.fr\/?p=14959#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.purplescreen.fr\/?p=14959"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.purplescreen.fr\/?p=14959#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/blog.purplescreen.fr\/"},{"@type":"ListItem","position":2,"name":"Schedule Task for multi Virtual Machine"}]},{"@type":"WebSite","@id":"http:\/\/blog.purplescreen.fr\/#website","url":"http:\/\/blog.purplescreen.fr\/","name":"PurpleScreen","description":"by Olivier Gosselin","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/blog.purplescreen.fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"http:\/\/blog.purplescreen.fr\/#\/schema\/person\/ad63980c08d122ffe9115ade81b21fd3","name":"ogosselin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/blog.purplescreen.fr\/#\/schema\/person\/image\/","url":"http:\/\/0.gravatar.com\/avatar\/6a053a3dca3cccbeecd37d492189f38f?s=96&d=mm&r=g","contentUrl":"http:\/\/0.gravatar.com\/avatar\/6a053a3dca3cccbeecd37d492189f38f?s=96&d=mm&r=g","caption":"ogosselin"},"sameAs":["https:\/\/www.linkedin.com\/in\/olivier-gosselin-30090498\/"],"url":"http:\/\/blog.purplescreen.fr\/?author=1"}]}},"_links":{"self":[{"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/posts\/14959"}],"collection":[{"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=14959"}],"version-history":[{"count":22,"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/posts\/14959\/revisions"}],"predecessor-version":[{"id":14983,"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/posts\/14959\/revisions\/14983"}],"wp:attachment":[{"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14959"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}