Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

पॉवरशेल आउटपुट में रंग कैसे लागू करें

देखें my answer इसी तरह के प्रश्न के लिए।

Communary.ConsoleExtensions [link] आपकी मदद कर सकता है

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

उपरोक्त आदेश फ़ाइल प्रकारों को रंगीन करेगा और डंप फ़ाइलों को हाइलाइट करेगा।

रंग आउटपुट को बचाने के लिए, आपको एक ऐसे प्रारूप में सहेजना होगा जो रंग को संरक्षित करता है, जैसे आरटीएफ, या एचटीएमएल। टेक्स्ट (सादा टेक्स्ट फ़ाइल) केवल टेक्स्ट को स्टोर करता है।

नीचे दिया गया कोड आपके आउटपुट को एक 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

लाइन:

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

... html आउटपुट में लाइन की जांच करता है जो एक टेबल रो है।

लाइन:

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

... दूसरी तालिका सेल सामग्री को हरे रंग के साथ एक फ़ॉन्ट टैग के साथ बदलने के लिए एक RegEx का उपयोग करता है। यह एक बहुत ही सरल RegEx खोज और प्रतिस्थापन है जो केवल दूसरे स्तंभ को रंग देगा

और यहां केवल कंसोल . का एक और कार्यान्वयन है रंग, इस लिंक पर आधारित है

$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

संपादित करें। ओपी के अनुरोध का जवाब देने के लिए

$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. एलिमिनेशन में शामिल हों:जब SQL सर्वर अनावश्यक टेबल्स को हटाता है

  2. sql:कॉलम के रूप में पंक्तियों का मान

  3. तालिका में कॉलम जोड़ें और फिर इसे लेनदेन के अंदर अपडेट करें

  4. SQL सर्वर डेटाबेस प्रतिकृति

  5. SQL सर्वर में ट्रिग्राम वाइल्डकार्ड स्ट्रिंग खोज