以下PowerShell代码将SQL结果加载到数据集中:
$sqlCommand = "SELECT A, B FROM TestTable"
$connection = New-Object System.Data.OleDb.OleDbConnection $connectionString
$command = New-Object System.Data.OleDb.OleDbCommand $sqlCommand,$connection
$connection.Open()
$adapter = New-Object System.Data.OleDb.OleDbDataAdapter $command
$dataset = New-Object System.Data.DataSet
[void] $adapter.Fill($dataSet)
我很惊讶地发现$ dataset.Tables [0] .Rows [0] .A有效!我尝试将行连接到Get-Member,实际上A和B被列为对象的属性。有谁知道为什么这个有效? DataSet不是从XSD生成的。我尝试在C#中编写相同的代码行,并使用调试器,我看不到属性A和B.
答案 0 :(得分:2)
这是PowerShell扩展类型系统的一部分。对于许多已知类型(如数据集,XML文档,COM,AD和WMI对象),PowerShell将基础本机对象包装在PSObject中,该对象具有非常受欢迎的附加属性。