【问题标题】:ForEach Property in Get-MemberGet-Member 中的 ForEach 属性
【发布时间】:2013-11-26 21:23:49
【问题描述】:

我的 powershell 脚本中有以下 sn-p 代码

    $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 以某种方式遍历数据集中的列以访问字段中的值?还是我要完全倒退,有没有更好的方法来循环单个数据行中的值?

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

非常感谢!

【问题讨论】:

    标签: powershell foreach sqlcmd


    【解决方案1】:

    这有帮助吗?

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

    使用示例 foreach 更新

    【讨论】:

    • $doHDR.psobject.properties | select value 这似乎主要给了我我想要的东西,无论如何我可以根据name 过滤它,然后将每个值分配给一个变量......?跨度>
    • 看不出有什么理由。更新了一个过滤名称前缀的示例,并将值分配给具有相同名称的变量。
    • foreach($prop in $doHDR.psobject.properties | select value) { $hdr = $hdr + $prop.Value }这将为我将所有这些值串在一起,所以我只剩下如何根据name过滤它们了
    • 没关系,整理好了! foreach($prop in $doHDR.psobject.properties | ? {$_.name.StartsWith("F")} | select value)
    【解决方案2】:

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

    $doHDR | FormatList F*
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      • 2021-03-06
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      相关资源
      最近更新 更多