Created
July 11, 2015 18:57
-
-
Save tekmaven/5cb4ea84776e929bb4f0 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
I know its been a couple of years, but do you know what to use instead for Get-AzureEndpoint? In the new powershell it is not longer valid. Most of the items you can just rename to "Az" instead of "Azure" but that one seems to be gone.