{"id":806,"date":"2016-12-16T17:22:59","date_gmt":"2016-12-16T16:22:59","guid":{"rendered":"http:\/\/blog.purplescreen.fr\/?p=806"},"modified":"2016-12-21T17:33:02","modified_gmt":"2016-12-21T16:33:02","slug":"creation-de-vms-en-powercli-script","status":"publish","type":"post","link":"http:\/\/blog.purplescreen.fr\/?p=806","title":{"rendered":"Cr\u00e9ation de VMs en PowerCLI (Script)"},"content":{"rendered":"<p>Voici un script qui vous permet de cr\u00e9er autant de VM que vous le souhaitez. Vous aurez besoin d&#8217;un Template et d&#8217;un mod\u00e8le &#8220;Customization Specification Manager&#8221;.<\/p>\n<pre>#Deployer des VMs en masse grace a un template and Customization Specification Manager\r\n#Script By Olivier Gosselin - France\r\n#http:\/\/blog.purplescreen.fr\r\n#Tools PowerCLI 6.5 Release 1\r\n\r\n$vCenterFQDN = \"VotrevCenter.FQDN\"\r\n$UservCenter = \"Administrator\"\r\n$PasswordvCenter =\"Password\"\r\n$GetDatastoreCluster = Get-DatastoreCluster\r\n$GetDatastore = Get-Datastore\r\n$GetVMHost = Get-VMHost | select -First 1\r\n$ListTemplate = Get-Template\r\n$OSSpec = Get-OSCustomizationSpec\r\n\r\nConnect-VIServer $vCenterFQDN -User $UservCenter -Password $PasswordvCenter\r\n\r\ncls\r\nWrite-Host \"`r\"\r\nWrite-Host \"Pr\u00e9-requis : `r\"\r\nWrite-Host \"=============`r\"\r\nWrite-Host \"- Il vous faudra un template sur votre infrastructure VMWare`r\"\r\nWrite-Host \"- Il vous faudra au minimum un mod\u00e8le Customization Specification Manager`r\"\r\nWrite-Host \"`r\"\r\n\r\n#Ecrire le nom du pr\u00e9fix\r\nWrite-Host \"`r\"\r\n do {\r\n$prefixNameVM = Read-Host \"Ecrire le Pr\u00e9fixe que vous souhaitez pour vos VMs ? \"\r\n} while (!$prefixNameVM)\r\n\r\n#Ecrire le nombre de VM\r\nWrite-Host \"`r\"\r\n do {\r\n$NbVM= Read-Host \"Nombre de VM souhaitez \u00e0 partir de ce Template ? (Chiffre seulement) \"\r\n} while ((!$NbVM) -or ($NbVM -lt '1') -or ($NbVM -match '\\D+'))\r\n\r\n#Liste des Customization Specification Manager\r\nWrite-Host \"`r\"\r\n$NbOSSpec = $OSSpec.count\r\n for ($i=0;$i -lt $NbOSSpec;$i++) {\r\n if ($NbOSSpec -eq 1) {\r\n#Dans le cas ou nous avons un choix possible\r\nWrite-Host \"Vous n'avez qu'un seul OS Spec : \" $OSSpec.Name\r\n$OSSpecName = $OSSpec.Name\r\n}\r\n elseif ($NbOSSpec -gt 1) {\r\n#Dans le cas ou nous avons plusieurs choix possible\r\nWrite-Host \"`r Choisir votre Customization Specification Manager : `r\"\r\n for ($i=0;$i -lt $NbOSSpec;$i++) {\r\nWrite-Host \"$i-\" $OSSpec.Name[$i] \"`r\"\r\n}\r\n do {\r\n$MaxWrite = $NbOSSpec-1\r\n$IDOSSpec = Read-Host \"Choisir votre OS personaliser ?[0-$MaxWrite] \"\r\n$OSSpecName = $OSSpec.Name[$IDOSSpec]\r\n} while (($IDOSSpec -ge $NbOSSpec) -or (!$IDOSSpec) -or ($NbVM -match '\\D+'))\r\n}\r\n}\r\n\r\n#Liste des templates\r\nWrite-Host \"`r\"\r\n$NbTemplate = $ListTemplate.count\r\n for ($i=0;$i -lt $NbTemplate;$i++) {\r\n if ($NbTemplate -eq 1) {\r\n#Dans le cas ou nous avons un choix possible\r\nWrite-Host \"Vous n'avez qu'un seul Template : \" $ListTemplate.Name\r\n$TemplateName = $ListTemplate.Name\r\n}\r\n elseif ($NbTemplate -gt 1) {\r\n#Dans le cas ou nous avons plusieurs choix possible\r\nWrite-Host \"`r Liste des Templates : `r\"\r\n for ($i=0;$i -lt $NbTemplate;$i++) {\r\nWrite-Host \"$i-\" $ListTemplate.Name[$i] \"`r\"\r\n}\r\n do {\r\n$MaxWrite = $NbTemplate-1\r\n$IDTemplate = Read-Host \"Choisir votre Template ?[0-$MaxWrite] \"\r\n$TemplateName = $ListTemplate.Name[$IDTemplate]\r\n} while (($IDTemplate -ge $NbTemplate) -or (!$IDTemplate) -or ($NbVM -match '\\D+'))\r\n}\r\n}\r\n\r\n#Choisir le datastore\r\nWrite-Host \"`r\"\r\n$NbDatastore = $GetDatastore.count\r\n for ($i=0;$i -lt $NbDatastore;$i++) {\r\n if ($NbDatastore -eq 1) {\r\n#Dans le cas ou nous avons un choix possible\r\nWrite-Host \"Vous n'avez qu'un seul Datastore : \" $GetDatastore.Name\r\n$DatastoreName = $GetDatastore.Name\r\n}\r\n elseif ($NbDatastore -gt 1) {\r\n#Dans le cas ou nous avons plusieurs choix possible\r\nWrite-Host \"`r Liste des Datastores : `r\"\r\n for ($i=0;$i -lt $NbDatastore;$i++) {\r\nWrite-Host \"$i-\" $GetDatastore.Name[$i] \"`r\"\r\n}\r\n do {\r\n$MaxWrite = $NbDatastore-1\r\n$IDDatastore = Read-Host \"Choisir votre Datastore ?[0-$MaxWrite] \"\r\n$DatastoreName = $GetDatastore.Name[$IDDatastore]\r\n} while (($IDDatastore -ge $NbDatastore) -or (!$NbDatastore) -or ($NbVM -match '\\D+'))\r\n}\r\n}\r\n\r\n#Resumer\r\nWrite-Host \"`r\"\r\nWrite-Host \"`rResumer : `r\"\r\nWrite-Host \"=========`r\"\r\nWrite-Host \"Nombre de VM(s) : \"$NbVM \"`r\"\r\nWrite-Host \"Prefixe de vos VM(s) : \"$prefixNameVM \"`r\"\r\nWrite-Host \"Customization Specification Manager : \"$OSSpecName \"`r\"\r\nWrite-Host \"Template : \"$TemplateName \"`r\"\r\nWrite-Host \"Datastore : \"$DatastoreName \"`r\"\r\nWrite-Host \"`r\"\r\n$Validate = Read-Host \"Confirmer (y\/n) ? \"\r\n\r\n#Creation des VMs\r\n if ($Validate -eq \"y\") {\r\nfor ($i=1;$i -le $NbVM;$i++) {\r\nNew-VM -Name $prefixNameVM\"_\"$i -Template $TemplateName -Datastore $DatastoreName -ResourcePool $GetVMHost -OSCustomizationSpec $OSSpecName\r\n}\r\n}\r\n else {\r\nexit\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Voici un script qui vous permet de cr\u00e9er autant de VM que vous le souhaitez. Vous aurez besoin d&#8217;un Template et d&#8217;un mod\u00e8le &#8220;Customization Specification Manager&#8221;. #Deployer des VMs en masse grace a un template and Customization Specification Manager #Script By Olivier Gosselin &#8211; France #http:\/\/blog.purplescreen.fr #Tools PowerCLI 6.5 Release 1 $vCenterFQDN = &#8220;VotrevCenter.FQDN&#8221; $UservCenter&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[11,10,14],"tags":[26,19],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cr\u00e9ation de VMs en PowerCLI (Script) - 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=806\" \/>\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=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.purplescreen.fr\/?p=806\",\"url\":\"https:\/\/blog.purplescreen.fr\/?p=806\",\"name\":\"Cr\u00e9ation de VMs en PowerCLI (Script) - PurpleScreen\",\"isPartOf\":{\"@id\":\"http:\/\/blog.purplescreen.fr\/#website\"},\"datePublished\":\"2016-12-16T16:22:59+00:00\",\"dateModified\":\"2016-12-21T16:33:02+00:00\",\"author\":{\"@id\":\"http:\/\/blog.purplescreen.fr\/#\/schema\/person\/ad63980c08d122ffe9115ade81b21fd3\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.purplescreen.fr\/?p=806#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.purplescreen.fr\/?p=806\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.purplescreen.fr\/?p=806#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/blog.purplescreen.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cr\u00e9ation de VMs en PowerCLI (Script)\"}]},{\"@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":"Cr\u00e9ation de VMs en PowerCLI (Script) - 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=806","twitter_misc":{"Written by":"ogosselin","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.purplescreen.fr\/?p=806","url":"https:\/\/blog.purplescreen.fr\/?p=806","name":"Cr\u00e9ation de VMs en PowerCLI (Script) - PurpleScreen","isPartOf":{"@id":"http:\/\/blog.purplescreen.fr\/#website"},"datePublished":"2016-12-16T16:22:59+00:00","dateModified":"2016-12-21T16:33:02+00:00","author":{"@id":"http:\/\/blog.purplescreen.fr\/#\/schema\/person\/ad63980c08d122ffe9115ade81b21fd3"},"breadcrumb":{"@id":"https:\/\/blog.purplescreen.fr\/?p=806#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.purplescreen.fr\/?p=806"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.purplescreen.fr\/?p=806#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/blog.purplescreen.fr\/"},{"@type":"ListItem","position":2,"name":"Cr\u00e9ation de VMs en PowerCLI (Script)"}]},{"@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\/806"}],"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=806"}],"version-history":[{"count":5,"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/posts\/806\/revisions"}],"predecessor-version":[{"id":811,"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=\/wp\/v2\/posts\/806\/revisions\/811"}],"wp:attachment":[{"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=806"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.purplescreen.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}