-
-
Save lidopaglia/68c39336896c9d5443bf to your computer and use it in GitHub Desktop.
RoyalTS Document Builder for Azure Virtual Machines
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Auth to your azure account | |
Add-AzureAccount | |
Import-Module 'C:\Program Files (x86)\code4ward.net\Royal TS V3\RoyalDocument.PowerShell.dll' -Force | |
function CreateRoyalFolderHierarchy() | |
{ | |
param( | |
[string]$folderStructure, | |
[string]$splitter, | |
$Folder | |
) | |
$currentFolder = $Folder | |
$folderStructure -split $splitter | %{ | |
$folder = $_ | |
$existingFolder = Get-RoyalObject -Folder $currentFolder -Name $folder -Type RoyalFolder | |
if($existingFolder) | |
{ | |
Write-Verbose "Folder $folder already exists - using it" | |
$currentFolder = $existingFolder | |
} | |
else | |
{ | |
Write-Verbose "Folder $folder does not exist - creating it" | |
$newFolder= New-RoyalObject -Folder $currentFolder -Name $folder -Type RoyalFolder | |
$currentFolder = $newFolder | |
} | |
} | |
return $currentFolder | |
} | |
$fileName = "AzureEnv.rtsz" | |
$store = New-RoyalStore -UserName ((Get-Item Env:\USERNAME).Value) | |
$doc = New-RoyalDocument -Store $store -Name "Azure Environment" -FileName $fileName | |
foreach($activeSubscription in (Get-AzureSubscription | Sort SubscriptionName)) { | |
$subscriptionName = $activeSubscription.SubscriptionName | |
Write-Host "Importing Subscription: $subscriptionName - $($activeSubscription.SubscriptionId)" | |
Select-AzureSubscription -SubscriptionId $activeSubscription.SubscriptionId | |
Set-AzureSubscription -SubscriptionId $activeSubscription.SubscriptionId | |
Get-AzureVM | Sort Name | ForEach-Object { | |
$vm = $_ | |
$rdpEndpoint = $vm | Get-AzureEndpoint | Where LocalPort -eq 3389 | |
$sshEndpoint = $vm | Get-AzureEndpoint | Where LocalPort -eq 22 | |
if($rdpEndpoint -ne $null) { | |
$uri = "$($vm.ServiceName).cloudapp.net:$($rdpEndpoint.Port)"; | |
Write-Host "Importing Windows VM - $($vm.Name) - $uri" | |
$lastFolder = CreateRoyalFolderHierarchy -folderStructure "Connections/$subscriptionName/$($vm.ServiceName)" -Splitter "\/" -Folder $doc | |
$newConnection = New-RoyalObject -Folder $lastFolder -Type RoyalRDSConnection -Name $vm.Name | |
$newConnection.URI = $uri | |
} | |
elseif ($sshEndpoint -ne $null) { | |
$uri = "$($vm.ServiceName).cloudapp.net:$($sshEndpoint.Port)"; | |
Write-Host "Importing Linux VM - $($vm.Name) - $uri" | |
$lastFolder = CreateRoyalFolderHierarchy -folderStructure "Connections/$subscriptionName/$($vm.ServiceName)" -Splitter "\/" -Folder $doc | |
$newConnection = New-RoyalObject -Folder $lastFolder -Type RoyalSSHConnection -Name $vm.Name | |
$newConnection.URI = $uri | |
} | |
else { | |
Write-Host "Skipping $($vm.Name), no RDP or SSH endpoints" | |
} | |
} | |
# Print some whitespace between subscriptions | |
Write-Host | |
Write-Host | |
Write-Host | |
} | |
Out-RoyalDocument -Document $doc -FileName $fileName |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment