Remove-Variable * -ErrorAction SilentlyContinue; Remove-Module *; $error.Clear();
$config = @{
SubscriptionName = "";
VMName = ""
}
$myip = (Invoke-WebRequest -uri "http://ifconfig.me/ip").Content
Write-Host "My Public IP is", $myip;
if (-Not(Get-InstalledModule -Name "Az")) {
Write-Host "Installing Azure Package from PS Gallery...";
Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force;
}
if (-Not(Get-Module -Name "Az") -and -Not(Get-Command -Name Get-AZContext)) {
Write-Host "Importing Azure Module..."
Import-Module -Name Az -Force;
}
if (-Not (Get-AZContext)) {
Write-Host "Connecting to Azure..."
Connect-AzAccount #-Credential $azCredF
}
if ([bool]((Get-AZContext))) { Write-Host "Connected to Azure using :", ((Get-AZContext).Account) }
else { Write-Error "Failed to connect to Azure"; return; }
if (((Get-AZContext).Subscription.Name) -ne $config.SubscriptionName) {
Write-Host "Switching Subscription Context...";
(Get-AzSubscription -SubscriptionName $config.SubscriptionName) | Set-AzContext | Out-Null;
}
Write-Host "Subscription =", ((Get-AZContext).Subscription.Name);
$vm = Get-AzVM -VMName $config.VMName
Write-Host "Located Azure VM '$($vm.Name)' within '$($vm.ResourceGroupName)' ResourceGroup";
$nic = $vm.NetworkProfile.NetworkInterfaces;
$networkinterface = ($nic.id -split '/')[-1];
$nicdetails = Get-AzNetworkInterface -Name $networkinterface;
$nsg = Get-AzNetworkSecurityGroup -Name (($nicdetails.NetworkSecurityGroup.Id -split '/')[-1]) -ResourceGroupName ($vm.ResourceGroupName)
# $rules = Get-AzNetworkSecurityRuleConfig -NetworkSecurityGroup $networkSecurityGroup
# $rdpRule = $rules | Where-Object { $_.Protocol -eq 'TCP' -and $_.DestinationPortRange -contains 3389 }
Write-Host "Before Updating public ip";
($nsg.SecurityRules | Where-Object { $_.Name -eq "RDP" }).SourceAddressPrefix
Write-Host ("*" * 10)
($nsg.SecurityRules | Where-Object { $_.Name -eq "RDP" }).SourceAddressPrefix = ([System.String[]] @("xxx.xxx.xxx.xxx", "xxx.xxx.xxx.xxx", $myip))
$nsg | Set-AzNetworkSecurityGroup | Get-AzNetworkSecurityRuleConfig -Name "RDP" | Out-Null
Write-Host "After Updating public ip";
($nsg.SecurityRules | Where-Object { $_.Name -eq "RDP" }).SourceAddressPrefix
Disconnect-AzAccount | Out-Null