Skip to content

Instantly share code, notes, and snippets.

@lidopaglia
Forked from tekmaven/Azure-To-RoyalTS.ps1
Created November 12, 2015 21:09
Show Gist options
  • Save lidopaglia/68c39336896c9d5443bf to your computer and use it in GitHub Desktop.
Save lidopaglia/68c39336896c9d5443bf to your computer and use it in GitHub Desktop.
RoyalTS Document Builder for Azure Virtual Machines
#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