Skip to content

Instantly share code, notes, and snippets.

@tekmaven
Created July 11, 2015 18:57
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save tekmaven/5cb4ea84776e929bb4f0 to your computer and use it in GitHub Desktop.
Save tekmaven/5cb4ea84776e929bb4f0 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
@riemers
Copy link

riemers commented Apr 11, 2020

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment