Skip to content

SamErde/DLLPickle

🥒 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

About

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

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Contributors