如何判断新对象来自哪个版本的程序集?

How to tell new-object is from which version of assembly?

在 PowerShell 中,我使用以下代码加载两个程序集

#sql server 2012 assembly
add-type -assembly "microsoft.sqlserver.smo, version=11.0.0.0, culture=neutral, publickeytoken=89845dcd8080cc91";
#sql server 2017 assembly
add-type -assembly "microsoft.sqlserver.smo, version=14.0.0.0, culture=neutral, publickeytoken=89845dcd8080cc91";

我可以看到两个程序集都已成功加载

[AppDomain]::CurrentDomain.GetAssemblies() | where location -like "C:\WINDOWS\assembly\GAC_MSIL\microsoft.sqlserver.smo*"

现在如果我有以下代码

$svr = new-object "microsoft.sqlserver.management.smo.server" 'localhost';

这个 $svr 来自 SQL Server 2012 程序集(版本 11.0.0.0)还是来自 SQL Server 2017 程序集(版本 14.0.0.0) )?

类型将从您加载的第一个程序集中加载。要查看类型的程序集,您可以使用以下代码:

$svr.GetType().Assembly.FullName

如果您想查看不同之处,可以在新的 PowerShell 会话中测试不同的顺序。