N2C.GuacAdmin
1.0.0
Administrative PowerShell module for Apache Guacamole 1.6.x: authentication sessions, connections, connection groups, users, user groups, sharing profiles, permissions, history, schemas, active sessions and tunnels via the Guacamole REST API, plus a Guacamole protocol (WebSocket) client.
Minimum PowerShell version
5.1
Installation Options
Owners
Copyright
(c) 2026 Neon Cyber Crutches
Package Details
Author(s)
- ahpooch
Tags
guacamole apache remote-desktop rdp ssh vnc rest administration powershell
Functions
New-GuacSession Get-GuacSession Remove-GuacSession Test-GuacSession Set-GuacDataSource Get-GuacConnection New-GuacConnection Update-GuacConnection Remove-GuacConnection Get-GuacConnectionGroup Get-GuacConnectionGroupTree New-GuacConnectionGroup Update-GuacConnectionGroup Remove-GuacConnectionGroup Get-GuacUser New-GuacUser Update-GuacUser Remove-GuacUser Set-GuacUserPassword Get-GuacUserGroup New-GuacUserGroup Update-GuacUserGroup Remove-GuacUserGroup Get-GuacSharingProfile New-GuacSharingProfile Update-GuacSharingProfile Remove-GuacSharingProfile Add-GuacPermission Remove-GuacPermission Add-GuacUserGroupMember Remove-GuacUserGroupMember Add-GuacUserGroupChildGroup Remove-GuacUserGroupChildGroup Get-GuacHistoryConnections Get-GuacHistoryUsers Get-GuacSchema Get-GuacProtocol Get-GuacActiveConnection Stop-GuacActiveConnection Get-GuacSharingCredential Get-GuacTunnel Get-GuacLanguage Get-GuacPatches Get-GuacExtension New-GuacActiveSession Send-GuacInstruction Receive-GuacInstruction Remove-GuacActiveSession
PSEditions
Dependencies
This module has no dependencies.
Release Notes
1.0.0 — first stable release, all 5 phases complete (163 tests green)
Phase 1 — Scaffold, transport, auth/session lifecycle
- Module layout, manifest, loader (PS 5.1 / 7.x compatible).
- Private REST transport (Invoke-GuacRest): APIError parsing, terminating
GuacRestException on every failure, TLS 1.2 enforcement on Windows PowerShell
5.1, proxy and client certificate plumbing, token masking in verbose output.
- New-GuacSession: POST /api/tokens with PSCredential, optional TOTP
(SecureString), data source defaulting from the token response.
- Remove-GuacSession: DELETE /api/tokens/{token} (SupportsShouldProcess,
ConfirmImpact High), clears module session state.
- Test-GuacSession: HEAD /api/session token validity check.
- Module session state providing a default -Session resolution
(the -CmsSession pattern); no script-scope globals.
Phase 2 — Entity CRUD
- Connections: Get/New/Update/Remove-GuacConnection (-Name, -Protocol filters;
ParentGroupName resolution).
- Connection groups: Get/New/Update/Remove-GuacConnectionGroup +
Get-GuacConnectionGroupTree (hierarchical tree with Permission filtering).
- Users: Get/New/Update/Remove-GuacUser, Set-GuacUserPassword
(-Permissions, -EffectivePermissions flags).
- User groups: Get/New/Update/Remove-GuacUserGroup + Add/Remove-GuacUserGroupMember
+ Add/Remove-GuacUserGroupChildGroup.
- Sharing profiles: Get/New/Update/Remove-GuacSharingProfile
(PrimaryConnectionName resolution).
- Permissions: Add-GuacPermission / Remove-GuacPermission (JSON Patch RFC 6902;
user/user-group subjects, all target kinds).
- History & schemas: Get-GuacHistoryConnections, Get-GuacHistoryUsers,
Get-GuacSchema, Get-GuacProtocol.
Phase 3 — Active sessions, tunnels, extensions (REST)
- Get-GuacActiveConnection (ConnectionName resolution), Stop-GuacActiveConnection,
Get-GuacSharingCredential.
- Get-GuacTunnel (read-only tunnel UUID listing).
- Get-GuacLanguage, Get-GuacPatches, Get-GuacExtension.
Phase 4 — Protocol client (interactive sessions)
- New-GuacActiveSession: opens WebSocket tunnel (guacamole subprotocol) + full
handshake (select/args/size/audio/video/image/timezone/connect → ready).
- Send-GuacInstruction / Receive-GuacInstruction (low-level instruction pump).
- Remove-GuacActiveSession (graceful disconnect).
Phase 4.5 — Get-GuacConnectionGroupTree split (Issue #1)
- Tree retrieval extracted into dedicated Get-GuacConnectionGroupTree cmdlet;
Get-GuacConnectionGroup simplified to flat list/get semantics.
Phase 5 — Hardening & release
- PSScriptAnalyzer strict ruleset as CI lint gate (run-lint.ps1).
- Pester v5 suite: unit tests + self-contained mock Guacamole server integration
tests (Tests/GuacMockServer.ps1).
- Multi-data-source support (-DataSource All, per-object DataSource property,
Set-GuacDataSource).
- Name resolution (ParentGroupName, PrimaryConnectionName, ConnectionName).
- GitHub Actions CI (lint + test + publish dry-run).
FileList
- N2C.GuacAdmin.nuspec
- N2C.GuacAdmin.Format.ps1xml
- run-tests.ps1
- Private\ConvertTo-GuacFormUrlEncoded.ps1
- Private\Get-GuacEntityResponse.ps1
- Private\Invoke-GuacPatch.ps1
- Private\Resolve-GuacContextUrl.ps1
- Public\Get-GuacConnection.ps1
- Public\Get-GuacLanguage.ps1
- Public\Get-GuacSharingProfile.ps1
- Public\New-GuacConnectionGroup.ps1
- Public\Remove-GuacActiveSession.ps1
- Public\Remove-GuacUser.ps1
- Public\Set-GuacUserPassword.ps1
- Public\Update-GuacUser.ps1
- Tests\DataSource.Tests.ps1
- Tests\Permissions.Tests.ps1
- TODO.md
- Private\ConvertTo-GuacInstructionString.ps1
- Private\Get-GuacHistoryRecords.ps1
- Private\Invoke-GuacProtocolHandshake.ps1
- Private\Resolve-GuacSessionForServer.ps1
- Public\Get-GuacConnectionGroup.ps1
- Public\Get-GuacPatches.ps1
- Public\Get-GuacTunnel.ps1
- Public\New-GuacSession.ps1
- Public\Remove-GuacConnection.ps1
- Public\Remove-GuacUserGroup.ps1
- Public\Stop-GuacActiveConnection.ps1
- Public\Update-GuacUserGroup.ps1
- Tests\GuacMockServer.ps1
- Tests\SessionLifecycle.Tests.ps1
- N2C.GuacAdmin.psd1
- Types.ps1
- Private\ConvertTo-GuacJson.ps1
- Private\Get-GuacResponseDetails.ps1
- Private\Invoke-GuacRelatedSetPatch.ps1
- Public\Add-GuacPermission.ps1
- Public\Get-GuacConnectionGroupTree.ps1
- Public\Get-GuacProtocol.ps1
- Public\Get-GuacUser.ps1
- Public\New-GuacSharingProfile.ps1
- Public\Remove-GuacConnectionGroup.ps1
- Public\Remove-GuacUserGroupChildGroup.ps1
- Public\Test-GuacSession.ps1
- Tests\ActiveSessions.Tests.ps1
- Tests\GuacTestHelpers.psm1
- Tests\SharingProfiles.Tests.ps1
- N2C.GuacAdmin.psm1
- Private\ConvertFrom-GuacErrorBody.ps1
- Private\ConvertTo-GuacMaskedSecret.ps1
- Private\Get-GuacSessionState.ps1
- Private\Invoke-GuacRest.ps1
- Public\Add-GuacUserGroupChildGroup.ps1
- Public\Get-GuacExtension.ps1
- Public\Get-GuacSchema.ps1
- Public\Get-GuacUserGroup.ps1
- Public\New-GuacUser.ps1
- Public\Remove-GuacPermission.ps1
- Public\Remove-GuacUserGroupMember.ps1
- Public\Update-GuacConnection.ps1
- Tests\ConnectionGroups.Tests.ps1
- Tests\Helpers.Tests.ps1
- Tests\UserGroups.Tests.ps1
- PSScriptAnalyzerSettings.psd1
- Private\ConvertFrom-GuacInstructionString.ps1
- Private\ConvertTo-GuacServerUrl.ps1
- Private\Get-GuacUserPermissions.ps1
- Private\New-GuacPermissionPatch.ps1
- Public\Add-GuacUserGroupMember.ps1
- Public\Get-GuacHistoryConnections.ps1
- Public\Get-GuacSession.ps1
- Public\New-GuacActiveSession.ps1
- Public\New-GuacUserGroup.ps1
- Public\Remove-GuacSession.ps1
- Public\Send-GuacInstruction.ps1
- Public\Update-GuacConnectionGroup.ps1
- Tests\Connections.Tests.ps1
- Tests\HistorySchema.Tests.ps1
- Tests\Users.Tests.ps1
- run-lint.ps1
- Private\ConvertFrom-GuacSecureString.ps1
- Private\Get-GuacDataSourceFromObject.ps1
- Private\Invoke-GuacDirectory.ps1
- Private\New-GuacTunnelUrl.ps1
- Public\Get-GuacActiveConnection.ps1
- Public\Get-GuacHistoryUsers.ps1
- Public\Get-GuacSharingCredential.ps1
- Public\New-GuacConnection.ps1
- Public\Receive-GuacInstruction.ps1
- Public\Remove-GuacSharingProfile.ps1
- Public\Set-GuacDataSource.ps1
- Public\Update-GuacSharingProfile.ps1
Version History
| Version | Downloads | Last updated |
|---|---|---|
| 1.0.1 | 5 | 10/8/2026 |
| 1.0.0 (current version) | 9 | 10/5/2026 |