PSDataverse 2.0.0-rc1
Pre-releasePSDataverse 2.0.0-rc1
PSDataverse 2 is a substantial modernization of the high-performance PowerShell
module for Microsoft Dataverse. This release candidate keeps the recognizable
low-level Web API model while adding safer authentication, first-class connections,
bounded concurrency, structured diagnostics, and a broad PowerShell-native command
surface.
This is a public prerelease. Please test important automation in a non-production
environment and report feedback through
GitHub Issues.
Install
PSDataverse 2 requires PowerShell 7.6 or later.
Install-PSResource -Name PSDataverse -Version 2.0.0-rc1 -PrereleasePowerShellGet users can install it with:
Install-Module -Name PSDataverse -RequiredVersion 2.0.0-rc1 -AllowPrereleaseReview the 0.x migration guide
before upgrading existing automation.
Highlights
Authentication and connections
- Interactive authentication uses Windows Web Account Manager where available and
the system browser elsewhere, including passwordless and passkey experiences
offered by the identity platform. - Device code, Integrated Windows Authentication, client secret, certificate,
supplied access token, token provider, and compatible legacy connection-string
flows are supported. - Connections are first-class objects. Scripts can create, inspect, select, switch,
refresh, and dispose named connections without relying on undocumented globals. - Concurrent requests coalesce token refresh instead of acquiring duplicate tokens.
Performance without hidden semantics
- A bounded
System.Threading.Channelsscheduler replaces polling-based task
coordination and provides backpressure, cancellation, response-order controls,
and explicit degrees of parallelism. - Individual requests, concurrent
$batchenvelopes, and CreateMultiple,
UpdateMultiple, and UpsertMultiple remain explicit choices because they have
different ordering, transaction, and failure semantics. - Dataverse
x-ms-dop-hintandRetry-Afterguidance are respected. - Ambiguous writes are not silently replayed.
- Multiple-operation capability checks are cached per connection and avoid sending
large unsupported workloads.
In the disposable test environment, five concurrent 20-operation batch envelopes
reached a median 165.52 POST operations/second, versus 57.76 for individual requests
at DOP 20. Two concurrent 50-row bulk envelopes reached a median 131.85 PATCH
operations/second, versus 51.12 for individual requests at DOP 20. These measurements
are workload-specific starting points, not universal defaults. See the
benchmark and methodology
and transport-selection guide.
PowerShell-native commands
Invoke-DataverseRequestis the preferred low-level command;
Send-DataverseOperationremains as a compatibility alias.- New commands cover connection inspection, WhoAmI testing, row CRUD, table
metadata and provisioning, actions and functions, CSV/JSON import and export,
and Dataverse multiple-operation messages. - Every exported command ships with generated, schema-validated external help,
examples, pipeline metadata, and an online Markdown reference.
Actionable failures and safer behavior
- Batch responses are parsed deterministically, including malformed proxy bodies,
mixed line endings, duplicate headers, throttling responses, and failed content
IDs. - Multiple-operation failures identify the failed chunk, source row range, retained
input objects, failed content IDs, and successful sibling chunks without exposing
row contents in the displayed error message. - Cancellation flows through requests, pagination, batches, retry delays, and
scheduler waits. - Successful non-200 responses retain their bodies and content headers.
- Long-standing defects in change-set removal, row counts, option-set export, and
connection isolation are corrected.
Runtime and release quality
- Targets .NET 10 and requires PowerShell 7.6.
- Supports Windows, Linux, and macOS; Integrated Windows Authentication remains
available for compatible federated identities, while WAM is recommended for
managed Entra identities on Windows. - Removes the unused Scriban/Humanizer feature and dependencies.
- Builds twice from clean Release directories and requires matching module-file and
canonical package hashes. - Installs the generated package through an isolated local repository and smoke-tests
it outside the source tree. - Passes .NET tests, packaged Pester tests, static analysis, dependency vulnerability
auditing, guarded live Dataverse integration tests, and PowerShell 7.6 package
installation on Windows, Linux, and macOS.
Breaking changes
- PowerShell 5.1 and PowerShell 7.4 are not supported by the PSDataverse 2 binary.
- Scripts should retain and pass the connection returned by
Connect-Dataverse
instead of reading undocumented global variables. - New scripts should choose an explicit authentication flow.
- Write replay, output ordering, and concurrency are more explicit to avoid hidden
correctness risks. - The unexported experimental
Connect-DataverseNewand unused Scriban-based
ConvertTo-CustomTextimplementation were removed.
The complete compatibility table and runnable replacements are in the
migration guide.