如何在PowerShell中返回对象的第二列?

时间:2018-02-14 16:41:44

标签: sql-server powershell dbatools

我想使用Invoke-DbaSqlCmd在PowerShell中查询SQL Server。

Invoke-DbaSqlCmd -SqlInstance DBA -Query 'exec xp_fixeddrives'

这将返回System.Data.DataRow对象。对象类型并不重要。重要的是要知道结果将根据SQL Server语言而有所不同。在法语中,它将是“Mo disponible'和英语将是“免费”#MB;我希望我的代码能够使用任何可用的SQL Server语言。

enter image description here

我想在不使用Get-Member的情况下选择第二列。就像这里的解决方案一样:

$RST = Invoke-DbaSqlCmd -SqlInstance DBA -Query 'exec xp_fixeddrives'
$SecondCol = ($RST | Get-Member -MemberType Properties)[1].Name
$RST.$SecondCol

是否有一种优雅的方式可以在不使用它的名称的情况下返回第二列?

1 个答案:

答案 0 :(得分:3)

不,这是"优雅"这样做的方式。

出于性能原因,您可能只想检查返回到$RST的第一个对象,而不是将每一行汇总到Get-Member

$RST = Invoke-DbaSqlCmd -SqlInstance DBA -Query 'exec xp_fixeddrives'
$SecondCol = ($RST[0].psobject.Properties |Select -Index 1).Name
$RST.$SecondCol