【问题标题】:How to colour a variable in PSObject output如何在 PSObject 输出中为变量着色
【发布时间】:2014-07-03 10:37:46
【问题描述】:

如何仅将变量 $server 涂成红色?

类似于 Add-Member Noteproperty -name Server -value (Write-Host $server -foregroundcolour red)

$object = New-Object PSObject
$object | Add-Member Noteproperty -name User -value $user
$object | Add-Member Noteproperty -name Server -value $server
$object |fl

谢谢

【问题讨论】:

    标签: powershell


    【解决方案1】:

    如果有人想知道,如果你的控制台支持VT (Virtual Terminal) escape sequences,你可以直接使用它。

    原帖使用New-Object,被认为是legacy approach。因此,在我的示例中,我将使用[PSCustomObject] 类型来转换[ordered]hashtable

    对于 VT 颜色,我引用了我找到的 StackExchange's SuperUser post
    另外,我在 VT 命令的末尾添加了ESC[0m(以$esc[0m 的形式)来重置颜色。

    # Grab some data to work with
    # NOTE: This grabs either the domain name or Windows workgroup name
    $domain = (Get-CimInstance -ClassName "Win32_ComputerSystem").Domain
    
    $boolDomainJoined = (Get-CimInstance -ClassName "Win32_ComputerSystem").PartOfDomain
    
    # VT (Virtual Terminal) escape sequences
    $esc = [char]27
    $grayDark = 90
    $greenBright = 92
    $redBright = 91
    
    # New empty object
    $objHT = [PSCustomObject][ordered]@{}
    
    # Get fancy and even colorize the custom property name
    $objHT | Add-Member -MemberType NoteProperty -Name "$esc[${grayDark}m$("Computer name")$esc[0m" -Value $env:COMPUTERNAME
    
    # Check if computer is part of a domain
    if ($boolDomainJoined) {
        $objHT | Add-Member -MemberType NoteProperty -Name "Domain" -Value "$esc[${greenBright}m$($domain)$esc[0m"
    } else {
        $objHT | Add-Member -MemberType NoteProperty -Name "Workgroup" -Value "$esc[${redBright}m$($domain)$esc[0m"
    }
    
    # Display object as a list
    $objHT | Format-List
    

    输出:

    【讨论】:

      【解决方案2】:

      你不能开箱即用。着色或-ForegroundColor-BackgroundColor 开关仅在Write-Host cmdlet 上可用。
      您必须编写一个自定义函数来处理来自$object 的值并使用Write-Host 将它们写入控制台。

      【讨论】:

        猜你喜欢
        • 2021-06-08
        • 1970-01-01
        • 1970-01-01
        • 2018-08-16
        • 1970-01-01
        • 1970-01-01
        • 2010-11-29
        • 2011-01-20
        • 1970-01-01
        相关资源
        最近更新 更多