Как я могу вернуть второй столбец объекта в 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