如何在PowerShell中的无类型DataTable中显示类型属性?

时间:2009-04-22 19:29:16

标签: powershell dataset

以下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.

1 个答案:

答案 0 :(得分:2)

这是PowerShell扩展类型系统的一部分。对于许多已知类型(如数据集,XML文档,COM,AD和WMI对象),PowerShell将基础本机对象包装在PSObject中,该对象具有非常受欢迎的附加属性。