-
Notifications
You must be signed in to change notification settings - Fork 2
/
Single-Hyper-V.ps1
58 lines (53 loc) · 2.28 KB
/
Single-Hyper-V.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
#建立資源群組HyperV
$resourceGroup = "hyperv"
$location = "Japan East"
$vmName = "hyperv"
New-AzResourceGroup -Name $resourceGroup -Location $location
#建立虛擬網路Hyper-V-VN
$virtualNetwork = New-AzVirtualNetwork `
-ResourceGroupName $resourceGroup `
-Location $location `
-Name $vmName-VN `
-AddressPrefix 172.16.0.0/16
$subnetWorkload = Add-AzVirtualNetworkSubnetConfig `
-Name Workload-SN `
-AddressPrefix 172.16.1.0/24 `
-VirtualNetwork $virtualNetwork
$subnetJump = Add-AzVirtualNetworkSubnetConfig `
-Name AzureBastionSubnet `
-AddressPrefix 172.16.2.0/24 `
-VirtualNetwork $virtualNetwork
$virtualNetwork | Set-AzVirtualNetwork
#建立Hyper-V VM
$User = "hyadmin"
$PWord = ConvertTo-SecureString -String "hyadmin@1234" -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
#Create a virtual Network
$virtualNetwork = Get-AzVirtualNetwork -Name $vmName-VN -ResourceGroupName $resourceGroup
$nic = New-AzNetworkInterface -Name $vmName-Nic -ResourceGroupName $resourceGroup -Location $location `
-SubnetId $virtualNetwork.Subnets[0].Id
#Create a virtual machine configuration
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize Standard_D8s_v3 | `
Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $Credential | `
Set-AzVMSourceImage -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2019-Datacenter -Version latest | `
Add-AzVMNetworkInterface -Id $nic.Id
# Create a virtual machine
New-AzVM -ResourceGroupName $resourceGroup -Location $location -VM $vmConfig
#建立Bastion
$publicip = New-AzPublicIpAddress `
-ResourceGroupName $resourceGroup `
-name $vmName-Bation-ip `
-location $location `
-AllocationMethod "Static" `
-Sku Standard
New-AzBastion `
-ResourceGroupName $resourceGroup `
-Name $vmName-Bation `
-PublicIpAddress $publicip `
-VirtualNetworkRgName $resourceGroup `
-VirtualNetworkName $vmName-VN
# Install Hyper-V
$PublicSettings = '{"commandToExecute":"powershell Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart"}'
Set-AzVMExtension -ExtensionName "HyperV" -ResourceGroupName $resourceGroup -VMName $vmName `
-Publisher "Microsoft.Compute" -ExtensionType "CustomScriptExtension" -TypeHandlerVersion 1.4 `
-SettingString $PublicSettings -Location $location