2016-09-14 3 views
0

Как добавить цвет в колонку имени. Если возможно, будет ли он сохранять цвет, если я экспортирую его в txt-файл?Добавить цвет в колонку в Powershell Результаты

$time = (Get-Date).AddYears(-2) 
Get-ChildItem -Recurse | `Where-Object {$_.LastWriteTime -lt $time} | ft -Wrap 
Directory,Name,LastWriteTime | Out-File spacetest.txt 

Благодаря

ответ

0

Посмотрите на (Get-Host) .UI.RawUI.ForegroundColor. И нет, вы не можете сохранить цвет в текстовый файл. Вы можете сохранить цвет в XML-файл, HTML-файл или использовать Excel или Word Automation для создания соответствующих файлов, поддерживающих цвет.

0

Communary.ConsoleExtensions [link] может помочь вам

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

Данная команда Colorise типы файлов и файлов дампа изюминкой.

Чтобы сохранить выходной цвет, вам необходимо сохранить его в формате, который сохраняет цвет, например RTF или HTML. Txt (текстовый файл) сохраняет только текст.

Код ниже сохранит ваш результат как файл 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' 

... использует регулярные выражения для замены 2-го содержимого ячейки таблицы с шрифта тега с зеленым цветом. Это очень простой поиск в RegEx & заменить, что будет только цветной 2-й столбец.

А вот еще одна реализация консоли только раскраски, на основе this link

$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 
Смежные вопросы