Skip to main content

Homotechsual Discord GitHub contributors Build and Publish CI PowerShell Gallery License GitHub Sponsors Stable Release

About​

Printix is a PowerShell wrapper for the Printix Cloud Print API. It covers print queues and jobs, users and ID codes, groups, cards, sites, networks, SNMP configurations and workstation monitoring. It also covers partner-managed tenant listing, creation, tenant details and billing information through the Partner API.

Requires PowerShell 7.0 or later; Windows PowerShell 5.1 is not supported. There are no runtime PowerShell module dependencies. This is an independent MIT-licensed module, not an official Printix or Tungsten Automation product.

Application types are mutually exclusive

Printix application types are not combinable OAuth scopes. Each application has exactly one type. Workflows spanning types need separate applications and credentials; there is no single application type that grants all documented API operations.

For example, User manager cannot generate ID codes, and Cloud Print API cannot monitor workstations. The module has one active Cloud Print connection: reconnect using the appropriate application's credentials before switching types. The separate Partner API connection uses credentials issued directly by Printix and does not replace the active Cloud Print connection. See the application permissions matrix for each command's requirements and the Card registration/Card manager naming discrepancy.

Costs / Licensing

Each OAuth application registered in Printix is billed as a full / active user by Printix. This combined with the above means that creating multiple applications for different types can increase your licensing costs.

I strongly suggest you let Printix know how completely and entirely ridiculous this API model is, loudly and often!

Installing​

Run the following in PowerShell 7 or later to install from PowerShell Gallery for the current user. Administrator privileges are not required:

Install-Module -Name Printix -Repository PSGallery -Scope CurrentUser
Import-Module Printix

Review and accept PowerShell's repository trust prompt if shown.

Installing from source​

For development, import the module directly from the project root:

Import-Module .\Source\Printix.psd1

To build and import the versioned distribution instead:

.\DevOps\Build\bootstrap.ps1
.\DevOps\Build\build.ps1
Import-Module .\Output\Printix\0.1.0\Printix.psd1

Bootstrap installs development tools; it is not required to use the source module.

Updating​

For an installation made with Install-Module, install the latest Gallery version:

Update-Module -Name Printix

Updating does not replace a version already loaded in a PowerShell session. Start a new PowerShell session, run Import-Module Printix, and reconnect. Connections and credentials are not retained between sessions.

For source-checkout installations, update your checkout or rebuild instead. Reload the source module in existing sessions and reconnect:

Remove-Module Printix
Import-Module .\Source\Printix.psd1

Getting Started​

Creating an application in Printix​

  1. Open the Applications page in Printix Administrator and create an application.
  2. Give it a descriptive name and select the one type required by your workflow.
  3. Review the licensing terms shown in the dialog before accepting and creating it.
  4. Store the client secret in your organization's approved key vault or secrets manager. Do not embed secrets in scripts, configuration files or shell history.
  5. Create separate applications for operations requiring different types.

The Administrator UI lists Cloud Print API, Card manager, Go registration, Workstation monitoring and User manager. The API documentation uses the additional label "Card registration"; see the terminology note.

Connecting to Printix​

For print operations and user listing, use a Cloud Print API application. Like the NinjaOne examples, build a parameter hashtable and pass it using splatting. Printix uses client credentials, not NinjaOne's interactive authorization-code flow.

Recommended: retrieve the client secret from a key vault or secrets manager. This example assumes Microsoft.PowerShell.SecretManagement and your approved vault extension are installed, and a vault is already registered locally as OrganizationVault. Replace the IDs, vault name and secret name for your environment. See secrets and key vaults for prerequisites and automation guidance.

Import-Module Microsoft.PowerShell.SecretManagement -ErrorAction Stop

$ConnectPrintixParams = @{
ClientId = 'your-cloud-print-client-id'
ClientSecret = Get-Secret -Name 'Printix-CloudPrint-ClientSecret' -Vault 'OrganizationVault' -ErrorAction Stop
TenantId = 'your-tenant-id'
ErrorAction = 'Stop'
}

if ($ConnectPrintixParams.ClientSecret -isnot [securestring]) {
throw 'The vault secret must be a string secret returned as SecureString.'
}

Connect-Printix @ConnectPrintixParams
Remove-Variable ConnectPrintixParams
Get-PrintixRoot

Do not use Get-Secret -AsPlainText for ClientSecret: the connection parameter accepts a SecureString directly. The vault modules are optional example tooling, not Printix runtime dependencies. For a one-off interactive session, a secure prompt is an alternative; see the secrets guide.

OAuth client credentials and access tokens are retained in module memory only; expiring tokens are renewed automatically. Authentication success does not mean the application can access every endpoint. Removing the parameter hashtable does not clear the module's active connection; use Disconnect-Printix when finished.

See Connect-Printix.

Running a command​

Get-PrintixPrintQueues -All
Get-PrintixUsers -All
Get-PrintixUsers -Role USER -All

User listing includes normal and guest users by default. Cloud Print collection commands return one page unless -All is supplied. Use -Raw to retain the HAL document, including links and paging metadata. -TenantId overrides the connection default.

Workstation monitoring needs another application and connection:

$ConnectMonitoringParams = @{
ClientId = 'your-workstation-monitoring-client-id'
ClientSecret = Get-Secret -Name 'Printix-WorkstationMonitoring-ClientSecret' -Vault 'OrganizationVault' -ErrorAction Stop
TenantId = 'your-tenant-id'
ErrorAction = 'Stop'
}
Connect-Printix @ConnectMonitoringParams
Remove-Variable ConnectMonitoringParams
Get-PrintixWorkstations -All

Reconnect with Cloud Print API credentials before returning to print operations.

Printing a document​

After connecting with an authorized print application's credentials, obtain printer and queue IDs from the queue's HAL links, then:

$submission = New-PrintixJob -PrinterId $printerId -QueueId $queueId -Title 'Report'
$submission.uploadLinks | Send-PrintixJobFile -Path '.\report.pdf'
Invoke-PrintixRequest -Resource $submission._links.uploadCompleted.href -Method POST

Submission, storage upload and upload completion are separate steps. Cloud storage must never receive the Printix bearer token. To defer printing, create the job with -ReleaseImmediately $false.

See New-PrintixJob and the endpoint reference for both submission versions.

Output and troubleshooting​

For build, release, docs-publishing and PowerShell Gallery setup, see the development and publishing guide.

Use Get-Help <command> -Full for local help and -Verbose for diagnostic output. Remote mutations and uploads support -WhatIf and -Confirm. Printix shares a rate limit across endpoints; the module retries throttled requests using the server's delay. Other failures are surfaced rather than hidden.

For FORBIDDEN, check the application's type, selected tenant and licensing first. Retain the response's printix-errorId and timestamp if Printix support is needed. Responses may include sensitive user information; redact logs before sharing.

Disconnect-Printix