Цветовое кодирование Invoke-SQL в Powershell - PullRequest
0 голосов
/ 12 июня 2019

Использование invoke-sql У меня есть скрипт PowerShell, который возвращает результаты из SQL-запроса. Этот запрос имеет статус нескольких локальных точек данных. Я хочу раскрасить всю строку, если столбец Status возвращает разные значения. Возможно ли это, поскольку я знаю, что вы можете раскрасить диаграммы в PowerShell, но не знаете, как будет работать больший возвратный запрос?

    param(
    [string] $dataSource = "SQLName",
    [string] $database = "DatabaseName",
    [string] $sqlCommand = $("Select tbldatafeed.datafeed_name,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(tbldatafeedhistory.status_id,1,'Running'),2,'Completed'),3,'Faulted'),4,'Warning'),5,'Terminating'),6,'Terminated'),7,'Pending') AS Status,DateDiff(MINUTE,tbldatafeedhistory.start_time, tbldatafeedhistory.end_time) As 'Run Time(minutes)'
    from tblDataFeedHistory
    left Join tblDatafeed on tbldatafeedhistory.datafeed_id = tbldatafeed.datafeed_id
    inner join 
    (
        Select max(start_time) as LatestDate, [datafeed_id]
        from tblDataFeedHistory
        Group by datafeed_id
    ) SubMax 
    on tblDataFeedHistory.start_time = SubMax.LatestDate
    and tblDataFeedHistory.datafeed_id = SubMax.datafeed_id 
    WHERE tbldatafeed.is_active = 1
    Order by tbldatafeed.datafeed_id")
    )

    $connectionString = "Data Source=$dataSource; " + "Integrated Security=SSPI; " + "Initial Catalog=$database"
    $connection = new-object system.data.SqlClient.SQLConnection($connectionString)
    $command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
    $connection.Open()

    $adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
    $dataset = New-Object System.Data.DataSet
    write-output $adapter.Fill($dataSet) | Out-Null

    $connection.Close()
    $dataSet.Tables
    }

    $FeedID = Invoke-SQL
    $FeedID

Вывод будет выделен красной линией, если столбец вернул Failed, желтым, если столбец вернет предупреждение, зеленым, если столбец вернет Completed.

1 Ответ

0 голосов
/ 13 июня 2019

Я лично не нашел и не видел причины сделать это с данными SQL в целом, и у меня нет записей в моем хранилище тех, кто имеет.

Все, что вы пишете на экран, может иметь цвет. Это один из основных направлений…

[Write-Host][1]

Или [Console] :: ForegroundColor]

... командлет или .Net класс .

Однако, если вы планируете использовать эти данные в конвейере или где-то еще, не используйте их. Особенно, если вы не используете новейшие версии PowerShell. Устаревший PowerShell, Write-Host очищает буфер, более поздние версии PowerShell отправляют его в информационный поток. Как рассказал изобретатель PowerShell Джеффри Сновер здесь:.

http://www.jsnover.com/blog/2013/12/07/write-host-considered-harmful

... Джеффри Сновер меняет свою позицию по этому вопросу с мая 2016 года.

С PowerShell v5 Write-Host больше не "убивает щенков". данные захватывается в информационный поток ...

https://twitter.com/jsnover/status/727902887183966208

https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Write-Information?view=powershell-5.1

Однако есть модули PowerShell, которые вы можете использовать, чтобы по-настоящему креативно использовать цвет.

Find-Module -Name '*color*' | Format-Table -AutoSize

У вас также есть несколько сценариев, которые можно использовать как есть или настроить для вашего случая использования.

Формат таблицы цветов в PowerShell Отформатируйте цвета выходной таблицы в хосте PowerShell с / без условного цветного форматирования.

Загрузить: Write-PSObject.ps1

У вас есть другой вариант. Если вы хотите обратить внимание, с цветом на заданную строку вывода экрана, вы можете использовать ...

Write-Warning 
Write-Error

... и просто примите цвет по умолчанию.

Тем не менее, ваш вопрос может почти дублировать эти вопросы и ответы и принятый ответ.

Powershell - Цвет вывода для определенных результатов

Есть ли способ указать цвет шрифта при использовании записи-вывода

Если вы говорите, что отправляете это в форму, то вам нужно обработать цвет в коде свойств формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...