我想使用Invoke-DbaSqlCmd在PowerShell中查询SQL Server。
Invoke-DbaSqlCmd -SqlInstance DBA -Query 'exec xp_fixeddrives'
这将返回System.Data.DataRow对象。对象类型并不重要。重要的是要知道结果将根据SQL Server语言而有所不同。在法语中,它将是“Mo disponible'和英语将是“免费”#MB;我希望我的代码能够使用任何可用的SQL Server语言。
我想在不使用Get-Member的情况下选择第二列。就像这里的解决方案一样:
$RST = Invoke-DbaSqlCmd -SqlInstance DBA -Query 'exec xp_fixeddrives'
$SecondCol = ($RST | Get-Member -MemberType Properties)[1].Name
$RST.$SecondCol
是否有一种优雅的方式可以在不使用它的名称的情况下返回第二列?
答案 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