Private/Wissen/X_Technology/X71_AzureCloud.ps1

<#
 
# Microsoft Azure Cloud
 
PowerShell mit und in der Azure Cloud nutzen
 
- **Hashtags** Sicherheit Azure Remoting Cloud
- **Version** 2020.01.17
 
#>


# https://portal.azure.com

# ? Azur bietet folgende Dienste an:
# ! http://azure.microsoft.com/de-de/services
# ! Die neuen Cmdlets enthalten "Rm" im Noun und sind zu bevorzugen.

# Azure wurde 2010 eingeführt
Get-Module -Name Azure* -ListAvailable # ! 57 Modules
Get-Command -Name * -Module Azure* | Group-Object -Property CommandType  # ! 2.487 Cmdlets

Login-AzureRmAccount
Get-AzureRmSubscription

#region VM anlegen

$newResourceGroup = New-AzureRmResourceGroup -Name "DemoResourceGroup" -Location "West Europe" -Verbose
$newStorageAccount = New-AzureRmStorageAccount -Name "demostorageaccountkak" -SkuName Standard_LRS -ResourceGroupName $newResourceGroup.ResourceGroupName -Location $newResourceGroup.Location -Verbose
$newVhdUri = $newStorageAccount.PrimaryEndpoints.Blob + "vhds/DemoVM_OS.vhd"
$newPublicIpAddress = New-AzureRmPublicIpAddress -Name "DemoVM_NIC1" -DomainNameLabel "akademo" -AllocationMethod Dynamic -ResourceGroupName $newResourceGroup.ResourceGroupName -Location $newResourceGroup.Location -Force -Verbose
$newVNSubnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name "Subnet-1" -AddressPrefix "10.0.0.0/24" -Verbose
$newVN = New-AzureRmVirtualNetwork -Name "DemoVNet" -AddressPrefix "10.0.0.0/16" -Subnet $newVNSubnetConfig -ResourceGroupName $newResourceGroup.ResourceGroupName -Location $newResourceGroup.Location -Force -Verbose
$newNetworkInterface = New-AzureRmNetworkInterface -Name "DemoVM_NIC1" -SubnetId $newVN.Subnets[0].Id -PublicIpAddressId $newPublicIpAddress.Id -ResourceGroupName $newResourceGroup.ResourceGroupName -Location $newResourceGroup.Location -Force -Verbose
$newAdministratorName = "DemoAdmin"
$newAdministratorPassword = "Asdfg09876Yxcvb" | ConvertTo-SecureString -AsPlainText -Force
$newCredential = [PSCredential]::new($newAdministratorName, $newAdministratorPassword)
$newVMImage = Get-AzureRmVMImage -Location "West Europe" -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer" -Skus "2019-Datacenter" | Sort-Object -Property Version -Descending | Select-Object -First 1
$newVM = New-AzureRmVMConfig -Name "DemoVM" -VMSize "Basic_A0" |
    Add-AzureRmVMNetworkInterface -Id $newNetworkInterface.Id |
    Set-AzureRmVMOperatingSystem -Windows -ProvisionVMAgent -EnableAutoUpdate:$false -ComputerName "DemoVM" -Credential $newCredential -Verbose |
    Set-AzureRmVMSourceImage -PublisherName $newVMImage.PublisherName -Offer $newVMImage.Offer -Skus $newVMImage.Skus -Version $newVMImage.Version -Verbose |
    Set-AzureRmVMOSDisk -Name "DemoVM_OS" -VhdUri $newVhdUri -Caching ReadWrite -CreateOption FromImage -Verbose
$newJob = New-AzureRmVM -VM $newVM -ResourceGroupName $newResourceGroup.ResourceGroupName -Location $newResourceGroup.Location -AsJob -Verbose
$newJob | Get-Job | Receive-Job -Keep
$newJob = $newVM | Start-AzureRmVM -ResourceGroupName $newResourceGroup.ResourceGroupName -Verbose -AsJob
$newJob | Get-Job | Receive-Job -Keep
$demoVM = Get-AzureRmVm -Name "DemoVM" -ResourceGroupName $newResourceGroup.ResourceGroupName

$networkInterfaceName = $demoVM.NetworkProfile.NetworkInterfaces[0].Id -split "/" | Select-Object -Last 1
$networkInterface = Get-AzureRmNetworkInterface -Name $networkInterfaceName -ResourceGroupName "DemoResourceGroup"
$publicIpAddressName = $networkInterface.IpConfigurations.PublicIPAddress.Id -split "/" | Select-Object -Last 1
$publicIpAddress = Get-AzureRmPublicIpAddress -Name $publicIpAddressName -ResourceGroupName "DemoResourceGroup"
$rdpUrl = "$($publicIpAddress.DnsSettings.Fqdn):3389"
mstsc.exe /v:$rdpUrl

# ! Wieder alles löschen

$newJob = Get-AzureRmResourceGroup -Name "DemoResourceGroup" -Location "West Europe" | Remove-AzureRmResourceGroup -Verbose -AsJob
$newJob | Get-Job | Receive-Job -Keep

#endregion