N2C.GuacAdmin
1.0.1
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.1 — bug fixes
- Remove-GuacConnection: piping multiple connections now deletes all of them
(previously only the last one was deleted because the deletion logic was in
the end block). Deletion now occurs in the process block, operating on each
piped object individually. (#46, #47)
- Get-GuacConnection now returns connection parameters (host, port, credentials,
guac-* options) by fetching them from the /parameters sub-resource. Added
new -IncludeParameters switch (default $true) to skip parameter fetching
for better performance when listing many connections. If a user lacks
UPDATE/ADMINISTER permission on a connection, parameter fetching fails
silently with a Verbose message and the connection is still returned. (#48)
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
- Types.ps1
- Private\Get-GuacResponseDetails.ps1
- Public\Add-GuacUserGroupChildGroup.ps1
- Public\Remove-GuacUser.ps1
- N2C.GuacAdmin.psd1
- Private\New-GuacTunnelUrl.ps1
- Public\Remove-GuacSharingProfile.ps1
- Public\New-GuacSession.ps1
- TODO.md
- Private\Invoke-GuacProtocolHandshake.ps1
- Public\Update-GuacUser.ps1
- Public\Get-GuacHistoryConnections.ps1
- Private\ConvertFrom-GuacSecureString.ps1
- Public\Remove-GuacUserGroup.ps1
- Public\Get-GuacConnectionGroup.ps1
- PSScriptAnalyzerSettings.psd1
- Private\New-GuacPermissionPatch.ps1
- Public\Get-GuacSharingCredential.ps1
- Public\New-GuacUserGroup.ps1
- run-tests.ps1
- Private\Get-GuacEntityResponse.ps1
- Public\Remove-GuacUserGroupChildGroup.ps1
- Public\New-GuacUser.ps1
- N2C.GuacAdmin.Format.ps1xml
- Private\Invoke-GuacRelatedSetPatch.ps1
- Public\Remove-GuacUserGroupMember.ps1
- Public\Update-GuacSharingProfile.ps1
- N2C.GuacAdmin.psm1
- Private\ConvertTo-GuacInstructionString.ps1
- Public\Get-GuacConnection.ps1
- Public\Get-GuacConnectionGroupTree.ps1
- run-lint.ps1
- Public\Update-GuacConnectionGroup.ps1
- Public\Set-GuacUserPassword.ps1
- Public\Set-GuacDataSource.ps1
- Private\Get-GuacHistoryRecords.ps1
- Public\Get-GuacLanguage.ps1
- Public\Test-GuacSession.ps1
- Public\Update-GuacConnection.ps1
- Private\Resolve-GuacContextUrl.ps1
- Public\New-GuacConnectionGroup.ps1
- Public\Get-GuacProtocol.ps1
- Tests\ActiveSessions.Tests.ps1
- Private\Invoke-GuacRest.ps1
- Public\Get-GuacPatches.ps1
- Public\Get-GuacSession.ps1
- Tests\SharingProfiles.Tests.ps1
- Private\ConvertTo-GuacJson.ps1
- Public\Remove-GuacConnection.ps1
- Public\Stop-GuacActiveConnection.ps1
- Tests\Connections.Tests.ps1
- Private\Invoke-GuacPatch.ps1
- Public\Remove-GuacActiveSession.ps1
- Public\Remove-GuacSession.ps1
- Tests\GuacMockServer.ps1
- Private\Get-GuacSessionState.ps1
- Public\Get-GuacSharingProfile.ps1
- Public\Get-GuacTunnel.ps1
- Tests\ConnectionGroups.Tests.ps1
- Private\ConvertTo-GuacFormUrlEncoded.ps1
- Public\Get-GuacUser.ps1
- Public\Add-GuacPermission.ps1
- Tests\HistorySchema.Tests.ps1
- Private\ConvertTo-GuacServerUrl.ps1
- Public\Get-GuacSchema.ps1
- Public\Get-GuacHistoryUsers.ps1
- Tests\SessionLifecycle.Tests.ps1
- Private\Get-GuacDataSourceFromObject.ps1
- Public\New-GuacSharingProfile.ps1
- Public\Receive-GuacInstruction.ps1
- Tests\DataSource.Tests.ps1
- Private\ConvertFrom-GuacErrorBody.ps1
- Public\Get-GuacUserGroup.ps1
- Public\Update-GuacUserGroup.ps1
- Tests\Permissions.Tests.ps1
- Private\Resolve-GuacSessionForServer.ps1
- Public\Get-GuacExtension.ps1
- Public\Get-GuacActiveConnection.ps1
- Tests\Helpers.Tests.ps1
- Private\Get-GuacUserPermissions.ps1
- Public\New-GuacActiveSession.ps1
- Public\New-GuacConnection.ps1
- Tests\Users.Tests.ps1
- Private\Invoke-GuacDirectory.ps1
- Public\Remove-GuacPermission.ps1
- Public\Send-GuacInstruction.ps1
- Tests\UserGroups.Tests.ps1
- Private\ConvertFrom-GuacInstructionString.ps1
- Public\Add-GuacUserGroupMember.ps1
- Public\Remove-GuacConnectionGroup.ps1
- Tests\GuacTestHelpers.psm1
- Private\ConvertTo-GuacMaskedSecret.ps1
Version History
| Version | Downloads | Last updated |
|---|---|---|
| 1.0.1 (current version) | 5 | 10/8/2026 |
| 1.0.0 | 9 | 10/5/2026 |