Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- . .\NewXMLDocument.ps1
- $rdp_domainname = "MicrosoftAccount"
- $rdp_username = "fred"
- $ssh_username = "fred"
- $vnc_username = "fred"
- $rdp_password = "changeme!"
- $ssh_password = "changeme!"
- $vnc_password = "changeme!"
- $Network = "192.168.1."
- $NetworkAddresses = 1..254 | ForEach-Object {
- @{
- ComputerName = "$($Network)$($_)"
- }
- }
- $Connections = $NetworkAddresses | ForEach-Object {
- if (Test-Connection -ComputerName $_ -Count 1 -TimeToLive 10) {
- if ((Test-NetConnection -ComputerName $_ -Port 22).TcpTestSucceeded) {
- $ssh = $true
- }
- if ((Test-NetConnection -ComputerName $_ -Port 5900).TcpTestSucceeded) {
- $vnc = $true
- }
- if ((Test-NetConnection -ComputerName $_ -Port 3389).TcpTestSucceeded) {
- $rdp = $true
- }
- [PSCustomObject]@{
- 'address' = $_
- 'ssh' = $ssh
- 'vnc' = $vnc
- 'rdp' = $rdp
- }
- }
- }
- ## used for testing
- # $Connections = @(
- # [PSCustomObject]@{
- # 'address' = "192.168.1.1"
- # 'ssh' = $true
- # 'vnc' = $false
- # 'rdp' = $false
- # }
- # [PSCustomObject]@{
- # 'address' = "192.168.1.2"
- # 'ssh' = $false
- # 'vnc' = $false
- # 'rdp' = $true
- # }
- # [PSCustomObject]@{
- # 'address' = "192.168.1.3"
- # 'ssh' = $true
- # 'vnc' = $false
- # 'rdp' = $true
- # }
- # )
- $xml = New-XmlDocument -ScriptBlock {
- user-mapping {
- authorize {
- username = $ssh_username
- password = $ssh_password
- $Connections | ForEach-Object {
- $Address = $_.address
- if ($_.rdp) {
- connection {
- name = "$([System.Net.Dns]::gethostentry($Address)) Desktop(RDP)"
- #name = "$Address Desktop(RDP)" # used for testing
- protocol {
- 'rdp'
- }
- param {
- name = "hostname"
- "$Address"
- }
- param {
- name = "security"
- 'nla'
- }
- param {
- name = "ignore-cert"
- 'true'
- }
- param {
- name = "domain"
- "$rdp_domainname"
- }
- param {
- name = "username"
- '${GUAC_USERNAME}'
- }
- param {
- name = "password"
- '${GUAC_PASSWORD}'
- }
- }
- }
- elseif ($_.vnc) {
- connection {
- name = "$([System.Net.Dns]::gethostentry($Address)) Desktop(VNC)"
- #name = "$Address Desktop(VNC)" # used for testing
- protocol {
- 'vnc'
- }
- param {
- name = "hostname"
- "$Address"
- }
- param {
- name = "username"
- '${GUAC_USERNAME}'
- }
- param {
- name = "password"
- '${GUAC_PASSWORD}'
- }
- }
- }
- if ($_.ssh) {
- connection {
- name = "$([System.Net.Dns]::gethostentry($Address)) Terminal"
- #name = "$Address Terminal" # used for testing
- protocol {
- 'ssh'
- }
- param {
- name = "hostname"
- "$Address"
- }
- param {
- name = "port"
- '22'
- }
- param {
- name = "username"
- '${GUAC_USERNAME}'
- }
- param {
- name = "password"
- '${GUAC_PASSWORD}'
- }
- }
- }
- }
- }
- }
- }
- ## For testing
- #$xml.ToString()
- # remove old user mappings
- Remove-Item "/etc/guacamole/user-mappings.xml" -Force
- # Output $xml to "/etc/guacamole/user-mappings.xml"
- $xml.Save("/etc/guacamole/user-mappings.xml")
Add Comment
Please, Sign In to add comment