-
Notifications
You must be signed in to change notification settings - Fork 0
/
deployment.ps1
70 lines (51 loc) · 1.76 KB
/
deployment.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<#
# Script: Managed to Unmanaged disk conversion
# Date: December 2, 2018
# Author: Prakhar Sharma
#
DESCRIPTION:
This script is used to get input from serverlist.csv and create VM on the basis of that inside the same VNet.
#>
try
{
$CSVPath = Read-Host -Prompt "Provide the path of input csv (like C:\temp\abc.csv)"
$JsonPath = Read-Host -Prompt "Provide the path of input csv (like C:\temp\abc.json)"
#Getting input for username and password
[String]$UserName = Read-Host -Prompt "Enter User Name for Each VM"
[SecureString]$Password = Read-Host -Prompt "Enter Password for Each VM" -AsSecureString
$ResourceGroupName = "Test-RG"
$Location = "WestUS"
$VnetName = "vnet"
#Checking Path for Json and CSV is valid or not
if(!(Test-Path $CSVPath))
{
throw "$CSVPath does not exists"
}
if(!(Test-Path $JsonPath))
{
throw "$JsonPath does not exists"
}
$VMdetails = Import-Csv $CSVPath
foreach($VMdetail in $VMdetails)
{
Write-Output "$($VMdetail.VMHostName) is being deployed"
$ParamObj = @{
"VMName" = $VMdetail.VMName
"VMSize" = $VMdetail.VMSize
"VMHostName" = $VMdetail.VMHostName
"UserName" = $UserName
"Password" = $Password
"Location" = $Location
"NicName" = $VMdetail.nic
"PublicipName" = $VMdetail.publicip
"OSdiskName" = $VMdetail.OSdiskName
"IPconfName" = $VMdetail.IPconfName
}
New-AzureRmResourceGroup -Name $ResourceGroupName -Location $Location
New-AzureRmResourceGroupDeployment -Name $($VMdetail.VMName) -ResourceGroupName $ResourceGroupName -Mode Incremental -TemplateFile $JsonPath -TemplateParameterObject $ParamObj -Verbose
}
}
catch
{
throw $_
}