表格下方为powershell执行内容,过程中需要调用"D:\vm00.csv"文件,请提前准备。一定要注意为CSV文件格式
vm00.csv内容:
#Import-Module -name Azure
#Get-Module
#Login-AzureRmAccount -EnvironmentName AzureChinaCloud
#Get-AzureRmSubscription
##Select-AzureSubscription -SubscriptionId XXX #选择当前订阅
#Get-AzureRmVMSize -Location "ChinaNorth2" #查询虚机型号
#Get-AzureRmVMImage -Location "ChinaNorth2" -PublisherName OpenLogic -Offer CentOS -Skus 7.4
Import-Csv -Path "D:\vm00.csv" |foreach{
#所在地区
$location = $_.location
$vmName = $_.vmName
$vmSise = $_.size
#存储账户名称
$storageName = $_.storageName
#可用性集
$AvailabilitySetName = $_.aset
#登录名
$User = $_.userName
#公网IP
$pipName=$vmName + "-pip"
#内网IP
$dip = $_.dip
#密码
$PWord = ConvertTo-SecureString -String $_.passwd -AsPlainText -Force
$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $User, $PWord
#子网名称
$subnetName = $_.subnetName
$subaddress=$_.subaddress
#资源组名称
$rg = $_.resourceGroup
#虚拟网络名称
$vnetName = $_.vnetName
$address=$_.addressip
#将vm加入到另外一个虚拟网络
#$vnetrg = $_.vnetrg
#网络安全组
$securitygroup=$_.securitygroup
#数据盘
$datadisk = $_.datadisk
#镜像
$image=$_.image
"Power Shell Begin"
New-AzureRmResourceGroup -Name $rg -Location $location
$cred = $Credential
$vip = $vmName
$nicName = $vmName
$vnet = New-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $rg -Location $location -AddressPrefix $address -Subnet $subnet
#$vnetrg
$subnet = New-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix $subaddress
# -VirtualNetwork $vnet
Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
$vnet = get-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $rg
$pip = New-AzureRmPublicIpAddress -ResourceGroupName $rg -Location $location -AllocationMethod Static -Force -IpAddressVersion IPv4 -Name $pipName
# Create an inbound network security group rule for port 22
$nsgRuleSSH = New-AzureRmNetworkSecurityRuleConfig -Name myNetworkSecurityGroupRuleSSH -Protocol Tcp `
-Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 22 -Access Allow
# Create an inbound network security group rule for port 80
$nsgRuleWeb = New-AzureRmNetworkSecurityRuleConfig -Name myNetworkSecurityGroupRuleWWW -Protocol Tcp `
-Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 80 -Access Allow
# Create a network security group
#$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $rg -Location $location -Name $securitygroup -SecurityRules $nsgRuleSSH,$nsgRuleWeb
$nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rg -Location $location -SubnetId $vnet.Subnets[0].Id -Force -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
if(($aset = Get-AzureRmAvailabilitySet -ResourceGroupName $rg -Name $AvailabilitySetName -ErrorAction SilentlyContinue) -eq $null){
$aset = New-AzureRmAvailabilitySet -ResourceGroupName $rg -Name $AvailabilitySetName -Location $location -Sku aligned -PlatformFaultDomainCount 2 -PlatformUpdateDomainCount 2
#-Sku aligned
}
$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSise -AvailabilitySetId $aset.Id
$computerName = $vmName
$vm = Set-AzureRmVMOperatingSystem -Linux -VM $vmConfig -ComputerName $computerName -Credential $cred
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id
if($image -eq 7){
$vm = Set-AzureRmVMSourceImage -VM $vm -PublisherName OpenLogic -Offer CentOS -Skus 7.4 -Version 7.4.20180704
}
if($image -eq 6){
$vm = Set-AzureRmVMSourceImage -VM $vm -PublisherName OpenLogic -Offer CentOS -Skus 6.5 -Version 6.5.20150904
}
New-AzureRmVM -ResourceGroupName $rg -Location $location -VM $vmConfig
Get-AzureRmVM -ResourceGroupName $rg -Name $vmName
"Power Shell End"
}