Skip to content

๐Ÿฅ’ DLL Pickle

A PowerShell module that helps you get un-stuck from dependency version conflicts that can occur when connecting to multiple Microsoft online services.

GitHub top language Codacy Badge PRs Welcome PowerShell Gallery Version OpenSSF Best Practices

A stressed pickle trying to explain the problem in their code to a rubber duck.

๐Ÿง‘โ€๐Ÿ’ป Getting Started

Prerequisites

PowerShell 7.4 or later on Linux, macOS, or Windows.

Installation

Install-Module DLLPickle -Scope CurrentUser

Or, with Microsoft.PowerShell.PSResourceGet:

Install-PSResource -Name DLLPickle

Using

Import DLL Pickle and run Import-DPLibrary before connecting to other service modules โ€” ideally as the first thing in your PowerShell profile, so it loads first in every session.

Import-Module DLLPickle
Import-DPLibrary

For diagnostic detail, add -ShowLoaderExceptions -Verbose.

Commands

Primary:

  • Import-DPLibrary โ€” preload DLLPickle-managed assemblies in dependency-aware order.
  • Import-DPBaseProfile โ€” preload, then import the validated base-profile modules (Exchange Online, Teams, Graph, Az.Accounts) in a known-good order.
  • Test-DPLibraryConflict โ€” report known-incompatible module pairs loaded in the current session, with the workaround.
  • Get-DPConfig / Set-DPConfig โ€” view or change configuration (for example, show logo, skip libraries).

Inspection helpers:

  • Find-DLLInPSModulePath โ€” find DLLs across module paths, filtered by product metadata.
  • Get-ModuleImportCandidate โ€” show which installed module version would import.
  • Get-ModulesWithDependency โ€” list installed modules that package a given dependency.
  • Get-ModulesWithVersionSortedIdentityClient โ€” compare modules by packaged Microsoft.Identity.Client.dll version.

Full syntax and examples: docs index ยท command reference.

๐Ÿฅ’ How It Works

Many PowerShell modules โ€” Az, Exchange Online, Microsoft Graph, Teams, and more โ€” bundle their own copy of the Microsoft Authentication Library (MSAL) and related DLLs. A single PowerShell session can only load one version of a given DLL, so when two modules ship different versions you hit “an assembly with the same name is already loaded” and authentication breaks.

DLL Pickle preloads a current, compatible set of these assemblies first, so the “first one wins” rule works in your favor and the modules you load afterward reuse what’s already there. A new DLL Pickle release is published automatically whenever a new MSAL version ships โ€” so keep it updated and load it first.

For the full explanation (and the real-world issues that motivated it), read the Deep Dive. The supported platform is PowerShell 7.4+ (Core, net8.0); compatibility, versioning, and dependency details live in DEPENDENCIES.md.

๐Ÿ“š Documentation Map