如何在PowerShell中返回对象的第二列? [重复]

问题描述 投票:2回答:1

这个问题在这里已有答案:

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

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

这将返回一个System.Data.DataRow对象。对象类型并不重要。重要的是要知道结果将根据SQL Server语言而有所不同。在法语中,它将是“Mo disponible”,英语将是“MB Free”。我希望我的代码可以使用任何可用的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

是否有一种优雅的方式返回第二列而不使用它的名字?

sql-server powershell dbatools
1个回答
3
投票

不,这是“优雅”的方式。

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

$RST = Invoke-DbaSqlCmd -SqlInstance DBA -Query 'exec xp_fixeddrives'
$SecondCol = ($RST[0].psobject.Properties |Select -Index 1).Name
$RST.$SecondCol
© www.soinside.com 2019 - 2024. All rights reserved.