Как я могу вернуть второй столбец объекта в PowerShell?

Я хочу запросить SQL Server в PowerShell, используя Invoke-DbaSqlCmd.

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

Это вернет объект System.Data.DataRow. Тип объекта не очень важен. Важно знать, что результат будет отличаться в зависимости от языка SQL Server. На французском языке это будет "Mo disponible", а на английском - "MB Free". Я хочу, чтобы мой код работал на любом доступном языке SQL Server.

введите описание изображения здесь

Я хочу выбрать второй столбец без использования Get-Member. Понравилось решение здесь:

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

Есть ли элегантный способ вернуть второй столбец без использования его имени?

1 ответ

Нет, это "элегантный" способ сделать это.

По соображениям производительности вы можете проверить только первый объект, возвращенный $RST вместо того, чтобы обвести каждый ряд Get-Member:

$RST = Invoke-DbaSqlCmd -SqlInstance DBA -Query 'exec xp_fixeddrives'
$SecondCol = ($RST[0].psobject.Properties |Select -Index 1).Name
$RST.$SecondCol
Другие вопросы по тегам