5

我的 powershell 脚本中有以下代码片段

    $sqlHDR = "SELECT * FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=" + $dir + $m + ".xls;HDR=NO','SELECT * FROM [" + $y + "`$B1:Z1]')"
    $doHDR = invoke-sqlcmd -query $sqlHDR -ServerInstance $sqlserver -Database $db

    $doHDR | get-member -membertype properties

这是循环通过数百个 Excel 电子表格的循环的一部分。结果是一组动态变化的列,从 F1 到 F*n*(n是未知的最终列号),它们只有一行,每行有一个值。

我想知道是否可以使用 get-member 以某种方式遍历数据集中的列以访问字段中的值?还是我要完全倒退,有没有更好的方法来遍历单个数据行中的值?

或者有没有办法遍历属性名称本身?

非常感谢!

4

2 回答 2

10

这有帮助吗?

$doHDR.psobject.properties | 
 where {$_.name -like 'something*'} |
 foreach {set-variable -Name $_.name -Value $_.value}

使用示例 foreach 更新

于 2013-11-14T01:53:38.050 回答
1

使用起来不是更容易Format-List吗?

$doHDR | FormatList F*
于 2013-11-14T02:12:36.300 回答