我试图在PowerShell中运行下面的代码,并获得错误“关键字不支持:“数据源”。
using namespace System.Data.SqlClient
$builder = New-Object SqlConnectionStringBuilder
$builder.DataSource = "localhost"
字符串
在搜索中,当您尝试打开键设置为“DataSource”而不是正确的“Data Source”的连接时,会出现此错误。但我并没有直接写入连接字符串,我只是试图在builder class上设置属性。
问题是,当我在C#中运行等效的时候,它工作得很好:
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = "localhost";
型
我已经使用builder.GetType().Assembly.Location检查了程序集,并且它们都是从同一个程序集(C:\Windows\Microsoft.NET\assembly\GAC_64\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll)加载的,那么为什么PowerShell尝试写入连接字符串而不是设置属性?此问题在PowerShell 5.1和7中都会出现
1条答案
按热度按时间mzmfm0qo1#
您在这里遇到的是PowerShell的字典适配器和本机.NET成员适配器之间的冲突。
简而言之,
SqlConnectionStringBuilder
类实现了IDictionary
接口,这反过来又会导致PowerShell尝试处理属性访问(即$builder.PropertyName
)作为索引操作(即,$builder['PropertyName']
)。您可以使用基础目标键名称:
字符串
...或者您可以通过与
psobject
成员集交互来绕过字典适配器:型