Skip to content

Commit d2c9f08

Browse files
Special-case System.Management.Automation assembly loading
Refactored assembly loading logic to only special-case System.Management.Automation in Windows PowerShell 5.1/.NET Framework. Other assemblies now use normal loading logic, improving compatibility and reducing unnecessary warnings.
1 parent 0a07de2 commit d2c9f08

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

dbatools.library.psm1

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,23 @@ if ($PSVersionTable.PSEdition -ne "Core") {
6363
{
6464
if (assemblyName == dll)
6565
{
66-
// Generalized handling for all known DLLs:
67-
// If an assembly with the same name is already loaded, return it (warn if version differs).
68-
var loaded = AppDomain.CurrentDomain.GetAssemblies()
69-
.FirstOrDefault(a => a.GetName().Name == assemblyName);
70-
if (loaded != null)
66+
// Windows PowerShell 5.1/.NET Framework: Only special-case System.Management.Automation
67+
if (assemblyName == "System.Management.Automation")
7168
{
72-
var requestedVersion = name.Version;
73-
var loadedVersion = loaded.GetName().Version;
74-
if (requestedVersion != null && loadedVersion != null && requestedVersion != loadedVersion)
69+
var loaded = AppDomain.CurrentDomain.GetAssemblies()
70+
.FirstOrDefault(a => a.GetName().Name == "System.Management.Automation");
71+
if (loaded != null)
7572
{
76-
System.Diagnostics.Trace.TraceWarning(
77-
$"[dbatools] Requested {assemblyName} version {requestedVersion}, but loaded version is {loadedVersion}. Using loaded version. This may cause compatibility issues if APIs differ.");
73+
var requestedVersion = name.Version;
74+
var loadedVersion = loaded.GetName().Version;
75+
if (requestedVersion != null && loadedVersion != null && requestedVersion != loadedVersion)
76+
{
77+
System.Diagnostics.Trace.TraceWarning(
78+
string.Format("[dbatools] Requested System.Management.Automation version {0}, but loaded version is {1}. Using loaded version.", requestedVersion, loadedVersion));
79+
}
80+
return loaded;
7881
}
79-
return loaded;
82+
// If not found, fall through to normal logic (should not happen in PowerShell host)
8083
}
8184
string filelocation = "$dir" + dll + ".dll";
8285
//Console.WriteLine(filelocation);

0 commit comments

Comments
 (0)