Isystem.PowerShell.PowerPlatform.Dataverse
1.0.0
Minimum PowerShell version
7.5
Installation Options
Owners
Copyright
(c) Isystem. All rights reserved.
Package Details
Author(s)
- Ondrej Kracmar
Tags
Dataverse PowerPlatform Dynamics365 CRM PowerApps Upsert Windows Linux MacOS
Cmdlets
Connect-PSDataverse Disconnect-PSDataverse Get-PSDataverseConnection Get-PSDataverseRecord Get-PSDataverseRecordCount Find-PSDataverseRecord Test-PSDataverseRecord New-PSDataverseRecord Set-PSDataverseRecord Remove-PSDataverseRecord Invoke-PSDataverseBatch Invoke-PSDataverseTransaction Invoke-PSDataverseFetchXml Get-PSDataverseTokenCache
PSEditions
Dependencies
This module has no dependencies.
Release Notes
## [1.0.0] - 2026-09-21
First public release (PowerShell Gallery). Breaking changes against the internal 0.1.0 are listed under **Changed**.
### Added
- **Upsert and alternate keys.** `Set-PSDataverseRecord -Key @{ ... } -Upsert` creates or updates
a record addressed by an alternate key and returns a `DataverseUpsertResult` (`Id`,
`RecordCreated`). `Get-`, `Set-`, `Remove-` and `Test-PSDataverseRecord` all accept `-Key`
instead of `-Id`. Batch and transaction operations gained `Action = 'Upsert'` and a `Key`
entry for Update/Upsert/Delete. This is the primitive an idempotent sync is built on.
- **Lookups without SDK types.** Any attribute value written as
`@{ LogicalName = 'account'; Id = $guid }` or
`@{ LogicalName = 'it3c_company'; Key = @{ it3c_name = 'Acme' } }` becomes an
`EntityReference` - the SDK equivalent of an OData `@odata.bind`. `PSObject`-wrapped values
are unwrapped before they reach the SDK serializer.
- **Delegated sign-in with a portable token cache.** `Connect-PSDataverse -Delegated` signs a
user in through MSAL with an *in-memory* cache; `Get-PSDataverseTokenCache` exports it as
one opaque string and `-TokenCache` seeds the next session with it. The refresh token thus
lives wherever the caller keeps secrets (Azure Key Vault via PSDataRepository, for
instance), which is what Dataverse for Teams - no application users, no premium licence -
requires. `-LoginMode Silent` makes unattended runs fail fast instead of prompting;
`Interactive` / `DeviceCode` cover the one-time bootstrap. The cache survives
`Disconnect-PSDataverse` so it can be persisted after the work is done.
- **Isystem.AzAuth authentication.** `Connect-PSDataverse -AuthMode` acquires tokens through
`Isystem.AzAuth.Core` with the same mode names PSDataRepository uses: `ClientSecret`,
`ClientCertificate` (thumbprint, file or `X509Certificate2`), `ManagedIdentity`,
`WorkloadIdentity`, `NonInteractive` (Azure.Identity default chain), `Interactive`,
`DeviceCode` and `Cache` (named on-disk MSAL cache). Device-code prompts are relayed to the
host from the pipeline thread.
- **Structured batch results.** `DataverseBatchResult.Items` carries one
`DataverseBatchItemResult` per operation - `Index`, `Action`, `LogicalName`, the record
`Id` (created, upserted or targeted), `Succeeded`, `RecordCreated`, `ErrorCode` and
`Message`. Operations that never ran because an earlier one faulted (without
`-ContinueOnError`) are reported as such instead of vanishing.
- `Get-PSDataverseConnection` reports `OrganizationFriendlyName`, `OrganizationId`,
`EnvironmentId`, `Identity`, `AuthenticationType` and `HasTokenCache`.
- `Get-PSDataverseRecordCount -PrimaryIdAttribute` for tables whose primary key does not
follow the `{logicalname}id` convention.
- `net10.0` build next to `net9.0`; the new `.psm1` loader picks `bin/<tfm>/` for the running
PowerShell (7.5 → net9.0, 7.6+ → net10.0), the same way PSSqlRepository and
PSDataRepository do, so side-by-side modules share one `Microsoft.Extensions.*` major.
- Assemblies are strong-named (public key token `9dfdba2f30eafd53`); see SECURITY.md for what
that does and does not protect.
- `build/Update-MamlSyntax.ps1` regenerates the MAML syntax blocks from cmdlet metadata so a
parameter change cannot drift from the shipped help.
- Release pipeline: GitVersion 6.7, Conventional Commits check on pull requests, NuGet
vulnerability gate, CycloneDX SBOM artifact, strong-name validation of the staged module,
optional Authenticode signing, publish to Azure Artifacts, the GitHub mirror and the
PowerShell Gallery from `v*` tags.
### Changed
- **BREAKING - per-record cmdlets raise non-terminating errors.** `Get-`, `New-`, `Set-`,
`Remove-` and `Test-PSDataverseRecord` now `WriteError` instead of terminating the pipeline,
so `$ids | Get-PSDataverseRecord` reports one missing record and continues; use
`-ErrorAction Stop` for the old behaviour. Connection, query, batch and transaction failures
stay terminating.
- **BREAKING - `Invoke-PSDataverseTransaction` returns a `DataverseBatchResult`** (was the
operation count) so callers get the ids of created records.
- `Invoke-PSDataverseFetchXml -All` strips a `top` attribute with a warning and refuses
aggregate queries with a clear error instead of letting Dataverse fail the request.
- `Connect-PSDataverse` reports invalid parameter combinations as `InvalidArgument`
(`DataverseInvalidConnectionParameter`) rather than as a connection failure.
- The module package no longer carries PowerShell host runtime bits and MSAL satellite
resources (32 MB → 13 MB per target).
### Fixed
- `tests/general/strings.Tests.ps1` had executed zero tests since February 2026: the assembly
path was wrong for a `bin/`-based root module and the `::ResourceManager` access on an
internal type yielded `$null`. `tests/pester.ps1` now counts container-level discovery
failures, so a broken test file can no longer pass CI silently.
- `tests/general/FileIntegrity.Tests.ps1` had a syntax error and never ran.
- `global.json` pinned `10.0.100` with `latestPatch`, which refused every other 10.0.x SDK.
- The committed `TestResults/` folder is gone and ignored.
FileList
- Isystem.PowerShell.PowerPlatform.Dataverse.nuspec
- CHANGELOG.md
- Isystem.PowerShell.PowerPlatform.Dataverse.Format.ps1xml
- Isystem.PowerShell.PowerPlatform.Dataverse.psd1
- Isystem.PowerShell.PowerPlatform.Dataverse.psm1
- LICENSE
- README.md
- bin\net10.0\Azure.Core.dll
- bin\net10.0\Azure.Identity.Broker.dll
- bin\net10.0\Azure.Identity.dll
- bin\net10.0\Isystem.AzAuth.Core.dll
- bin\net10.0\Isystem.PowerShell.PowerPlatform.Dataverse.dll
- bin\net10.0\Isystem.PowerShell.PowerPlatform.Dataverse.pdb
- bin\net10.0\Isystem.Shared.Infrastructure.Core.dll
- bin\net10.0\Isystem.Shared.Infrastructure.PowerPlatform.Dataverse.dll
- bin\net10.0\Microsoft.Bcl.AsyncInterfaces.dll
- bin\net10.0\Microsoft.Crm.Sdk.Proxy.dll
- bin\net10.0\Microsoft.Extensions.Caching.Abstractions.dll
- bin\net10.0\Microsoft.Extensions.Caching.Memory.dll
- bin\net10.0\Microsoft.Extensions.Configuration.Abstractions.dll
- bin\net10.0\Microsoft.Extensions.Configuration.Binder.dll
- bin\net10.0\Microsoft.Extensions.Configuration.dll
- bin\net10.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
- bin\net10.0\Microsoft.Extensions.DependencyInjection.dll
- bin\net10.0\Microsoft.Extensions.Diagnostics.Abstractions.dll
- bin\net10.0\Microsoft.Extensions.FileProviders.Abstractions.dll
- bin\net10.0\Microsoft.Extensions.Hosting.Abstractions.dll
- bin\net10.0\Microsoft.Extensions.Http.dll
- bin\net10.0\Microsoft.Extensions.Logging.Abstractions.dll
- bin\net10.0\Microsoft.Extensions.Logging.dll
- bin\net10.0\Microsoft.Extensions.ObjectPool.dll
- bin\net10.0\Microsoft.Extensions.Options.dll
- bin\net10.0\Microsoft.Extensions.Primitives.dll
- bin\net10.0\Microsoft.Identity.Client.Broker.dll
- bin\net10.0\Microsoft.Identity.Client.Extensions.Msal.dll
- bin\net10.0\Microsoft.Identity.Client.NativeInterop.dll
- bin\net10.0\Microsoft.Identity.Client.dll
- bin\net10.0\Microsoft.IdentityModel.Abstractions.dll
- bin\net10.0\Microsoft.IdentityModel.JsonWebTokens.dll
- bin\net10.0\Microsoft.IdentityModel.Logging.dll
- bin\net10.0\Microsoft.IdentityModel.Tokens.dll
- bin\net10.0\Microsoft.PowerPlatform.Dataverse.Client.dll
- bin\net10.0\Microsoft.VisualStudio.Threading.dll
- bin\net10.0\Microsoft.VisualStudio.Validation.dll
- bin\net10.0\Microsoft.Xrm.Sdk.dll
- bin\net10.0\Newtonsoft.Json.dll
- bin\net10.0\System.ClientModel.dll
- bin\net10.0\System.Configuration.ConfigurationManager.dll
- bin\net10.0\System.Diagnostics.EventLog.dll
- bin\net10.0\System.IdentityModel.Tokens.Jwt.dll
- bin\net10.0\System.Memory.Data.dll
- bin\net10.0\System.Runtime.Caching.dll
- bin\net10.0\System.Security.Cryptography.Pkcs.dll
- bin\net10.0\System.Security.Cryptography.ProtectedData.dll
- bin\net10.0\System.Security.Cryptography.Xml.dll
- bin\net10.0\System.Security.Permissions.dll
- bin\net10.0\System.ServiceModel.Duplex.dll
- bin\net10.0\System.ServiceModel.Http.dll
- bin\net10.0\System.ServiceModel.Primitives.dll
- bin\net10.0\System.ServiceModel.Security.dll
- bin\net10.0\System.ServiceModel.dll
- bin\net10.0\System.Windows.Extensions.dll
- bin\net9.0\Azure.Core.dll
- bin\net9.0\Azure.Identity.Broker.dll
- bin\net9.0\Azure.Identity.dll
- bin\net9.0\Isystem.AzAuth.Core.dll
- bin\net9.0\Isystem.PowerShell.PowerPlatform.Dataverse.dll
- bin\net9.0\Isystem.PowerShell.PowerPlatform.Dataverse.pdb
- bin\net9.0\Isystem.Shared.Infrastructure.Core.dll
- bin\net9.0\Isystem.Shared.Infrastructure.PowerPlatform.Dataverse.dll
- bin\net9.0\Microsoft.Bcl.AsyncInterfaces.dll
- bin\net9.0\Microsoft.Crm.Sdk.Proxy.dll
- bin\net9.0\Microsoft.Extensions.Caching.Abstractions.dll
- bin\net9.0\Microsoft.Extensions.Caching.Memory.dll
- bin\net9.0\Microsoft.Extensions.Configuration.Abstractions.dll
- bin\net9.0\Microsoft.Extensions.Configuration.Binder.dll
- bin\net9.0\Microsoft.Extensions.Configuration.dll
- bin\net9.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
- bin\net9.0\Microsoft.Extensions.DependencyInjection.dll
- bin\net9.0\Microsoft.Extensions.Diagnostics.Abstractions.dll
- bin\net9.0\Microsoft.Extensions.FileProviders.Abstractions.dll
- bin\net9.0\Microsoft.Extensions.Hosting.Abstractions.dll
- bin\net9.0\Microsoft.Extensions.Http.dll
- bin\net9.0\Microsoft.Extensions.Logging.Abstractions.dll
- bin\net9.0\Microsoft.Extensions.Logging.dll
- bin\net9.0\Microsoft.Extensions.ObjectPool.dll
- bin\net9.0\Microsoft.Extensions.Options.dll
- bin\net9.0\Microsoft.Extensions.Primitives.dll
- bin\net9.0\Microsoft.Identity.Client.Broker.dll
- bin\net9.0\Microsoft.Identity.Client.Extensions.Msal.dll
- bin\net9.0\Microsoft.Identity.Client.NativeInterop.dll
- bin\net9.0\Microsoft.Identity.Client.dll
- bin\net9.0\Microsoft.IdentityModel.Abstractions.dll
- bin\net9.0\Microsoft.IdentityModel.JsonWebTokens.dll
- bin\net9.0\Microsoft.IdentityModel.Logging.dll
- bin\net9.0\Microsoft.IdentityModel.Tokens.dll
- bin\net9.0\Microsoft.PowerPlatform.Dataverse.Client.dll
- bin\net9.0\Microsoft.VisualStudio.Threading.dll
- bin\net9.0\Microsoft.VisualStudio.Validation.dll
- bin\net9.0\Microsoft.Xrm.Sdk.dll
- bin\net9.0\Newtonsoft.Json.dll
- bin\net9.0\System.ClientModel.dll
- bin\net9.0\System.Configuration.ConfigurationManager.dll
- bin\net9.0\System.Diagnostics.DiagnosticSource.dll
- bin\net9.0\System.Diagnostics.EventLog.dll
- bin\net9.0\System.IO.Pipelines.dll
- bin\net9.0\System.IdentityModel.Tokens.Jwt.dll
- bin\net9.0\System.Memory.Data.dll
- bin\net9.0\System.Runtime.Caching.dll
- bin\net9.0\System.Security.Cryptography.Pkcs.dll
- bin\net9.0\System.Security.Cryptography.ProtectedData.dll
- bin\net9.0\System.Security.Cryptography.Xml.dll
- bin\net9.0\System.Security.Permissions.dll
- bin\net9.0\System.ServiceModel.Duplex.dll
- bin\net9.0\System.ServiceModel.Http.dll
- bin\net9.0\System.ServiceModel.Primitives.dll
- bin\net9.0\System.ServiceModel.Security.dll
- bin\net9.0\System.ServiceModel.dll
- bin\net9.0\System.Text.Encodings.Web.dll
- bin\net9.0\System.Text.Json.dll
- bin\net9.0\System.Windows.Extensions.dll
- en-US\Isystem.PowerShell.PowerPlatform.Dataverse.dll-Help.xml
- en-US\about_Isystem.PowerShell.PowerPlatform.Dataverse.help.txt
Version History
| Version | Downloads | Last updated |
|---|---|---|
| 1.0.0 (current version) | 4 | 9/21/2026 |