Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách áp dụng màu sắc trong đầu ra powershell

Xem câu trả lời của tôi cho câu hỏi tương tự với câu hỏi này.

Communary.ConsoleExtensions [liên kết] có thể giúp bạn

Invoke-ColorizedFileListing C:\Windows -m *.dmp

Lệnh trên sẽ tạo màu cho các loại tệp và đánh dấu các tệp kết xuất.

Để lưu đầu ra màu, bạn sẽ phải lưu vào định dạng duy trì màu sắc, như RTF hoặc HTML. Txt (tệp văn bản thuần túy) chỉ lưu trữ văn bản.

Đoạn mã dưới đây sẽ lưu đầu ra của bạn dưới dạng tệp html.

$time = (Get-Date).AddYears(-2)
Get-ChildItem -Recurse | Where-Object {$_.LastWriteTime -lt $time} |
Select Directory,Name,LastWriteTime |
ConvertTo-Html -Title "Services" -Body "<H2>The result of Get-ChildItem</H2> " -Property Directory,Name,LastWriteTime |
ForEach-Object {
  if ($_ -like '<tr><td>*') {
    $_ -replace '^(.*?)(<td>.*?</td>)<td>(.*?)</td>(.*)','$1$2<td><font color="green">$3</font></td>$4'
  } else {
    $_
  }
} | Set-Content "$env:TEMP\ColorDirList.html" -Force

Dòng:

if ($_ -like '<tr><td>*') {

... kiểm tra dòng trong đầu ra html là một hàng trong bảng.

Dòng:

$_ -replace '^(.*?)(<td>.*?</td>)<td>(.*?)</td>(.*)','$1$2<td><font color="green">$3</font></td>$4'

... sử dụng RegEx để thay thế nội dung ô thứ 2 bằng thẻ phông chữ có màu xanh lục. Đây là một tìm kiếm &thay thế RegEx rất đơn giản sẽ chỉ tô màu cho cột thứ 2 .

Và đây là một cách triển khai khác của chỉ bảng điều khiển tô màu, dựa trên liên kết này

$linestocolor = @(
'CSName         Version        OSArchitecture'
'------         -------        --------------'
'BENDER         6.1.7601       64-bit        '
'LEELA          6.1.7601       64-bit        '
'FRY            6.1.7600       64-bit        '
'FARNSWORTH     6.1.7601       32-bit        '
)


# http://www.bgreco.net/powershell/format-color/
function Format-Color {
    [CmdletBinding()]
    param(
      [Parameter(ValueFromPipeline=$true,Mandatory=$true)]
      $ToColorize
    , [hashtable][email protected]{}
    , [switch]$SimpleMatch
    , [switch]$FullLine
    )
  Process {
    $lines = ($ToColorize | Out-String).Trim() -replace "`r", "" -split "`n"
    foreach($line in $lines) {
      $color = ''
      foreach($pattern in $Colors.Keys){
        if     (!$SimpleMatch -and !$FullLine -and $line -match "([\s\S]*?)($pattern)([\s\S]*)") { $color = $Colors[$pattern] }
        elseif (!$SimpleMatch -and $line -match $pattern) { $color = $Colors[$pattern] }
        elseif ($SimpleMatch -and $line -like $pattern) { $color = $Colors[$pattern] }
      }
      if ($color -eq '') { Write-Host $line }
        elseif ($FullLine -or $SimpleMatch) { Write-Host $line -ForegroundColor $color }
        else {
        Write-Host $Matches[1] -NoNewline
        Write-Host $Matches[2] -NoNewline -ForegroundColor $color
        Write-Host $Matches[3]
      }
    }
  }
}

$linestocolor | Format-Color -Colors @{'6.1.7600' = 'Red'; '32-bit' = 'Green'}

# doesn't work...
# (Get-ChildItem | Format-Table -AutoSize) | Format-Color -Colors @{'sql' = 'Red'; '08/07/2016' = 'Green'}
# does work...
Format-Color -ToColorize (Get-ChildItem | Format-Table -AutoSize) -Colors @{'sql' = 'Red'; '08/07/2016' = 'Green'}

return

CHỈNH SỬA. để trả lời yêu cầu OP

$Result = @()
foreach($server in Get-Content C:\PowerSQL\List.txt)
{
  $Services=gwmi win32_service -computername $server | where {$_.Name -like ‘*SQL*’}
  if(!(Test-Connection -Cn $server -BufferSize 16 -Count 1 -ea 0 -quiet))
    {“Problem still exists in connecting to $server”}
  else {
    $services | ForEach {
      If ($_)
        { $Result += New-Object PSObject -Property @{
        HostName = $_.Systemname
        ServiceDisplayName = $_.Displayname
        ServiceName = $_.Name
        StartMode = $_.Startmode
        ServiceAccountName = $_.Startname
        State = $_.State
        Status = $_.Status
        }
      }
    }
  }
} 

$Result | ConvertTo-HTML `
  -Title "Services" `
  -Body "<H2>The result of gwmi win32_service</H2> " `
  -Property HostName,ServiceDisplayName,ServiceName,StartMode,ServiceAccountName,State,Status |
ForEach-Object {
  if ($_ -like '<tr><td>*') {
    switch ($_) {
      { $_ -like '*<td>Stopped</td>*' } {$color='red'}
      { $_ -like '*<td>Running</td>*' } {$color='green'}
      Default                           {$color='white'}
    }
  $_.Replace('<tr>', "<tr bgcolor=`"$color`">")
  } else {
  $_
  }
} | Set-Content C:\PowerSQL\service.htm -Force



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách nhanh chóng viết Truy vấn Chọn trong SQL Server - Hướng dẫn SQL Server / TSQL Phần 108

  2. Kích thước hàng tối đa của SQL Server Vs Kích thước Varchar (Tối đa)

  3. Có thể đặt thời gian chờ cho truy vấn SQL trên Microsoft SQL Server không?

  4. Cách chuyển giá trị tên cột làm đối số SQL bằng cách sử dụng trình giữ chỗ

  5. Nhập hàng loạt SQL từ CSV