【问题标题】:It's possible to color hashtable column in powershell?可以在powershell中为哈希表列着色吗?
【发布时间】:2014-09-30 23:01:02
【问题描述】:

可以在 powershell 中为单个哈希表列着色吗?

例如将“数字”列颜色为绿色:

Number VMNic
------ ----- 
[0]    vmnic0 
[1]    vmnic1 
[2]    vmnic2 
[3]    vmnic3 
[4]    vmnic4 
[5]    vmnic5 
[6]    vmnic6 
[7]    vmnic7

我这样创建这个输出:[它是我代码中最简单的片段]

        $VMnics = get-vmhostnetworkadapter -Physical
        $NIC_collection = @()
        $VMnic_nr = "[$i]"
        Foreach ($VMnic in $VMnics){
                $NIC_Details = New-Object PSObject
                $NIC_Details | Add-Member -Name Number -Value $VMnic_nr -MemberType NoteProperty
                $NIC_Details | Add-Member -Name VMNic -Value $VMnic -MemberType NoteProperty
                [...]
                $NIC_collection += $NIC_Details
                $i++
             }
        $NIC_collection | Sort-Object VMNic | ft * -AutoSize

【问题讨论】:

    标签: powershell colors hashtable


    【解决方案1】:

    您可以将其与 write-host 命令一起破解,但这并不出色。这意味着要么手动格式化列,要么正则表达式匹配和格式化匹配。关键是 Write-Host 允许您指定颜色,并且它具有 -NoNewLine,因此您可以将线条串在一起。

    可能有更好的方法吗?也许吧,但我还没有找到它,所以如果我想向我的主机输出彩色,这就是我过去所做的。

    这几乎是你所拥有的,但是当你输出表格时,我做了两次。第一次只列出标题和它们下面的----。然后它跳过这些行,它首先将其余部分转换为字符串,将每一行与正则表达式模式匹配 "(\S+?\s+?)(\S+?\s*?)$" 这意味着任何非空白字符,一个或多个,然后是空白字符,一个或多个用于第一个匹配组,然后是第二个匹配组的一个或多个非空白字符,然后是任何空白字符(如果有),直到行尾。然后它将第一个匹配组以绿色写入主机,但不创建新行,然后将第二个匹配组以深黄色写入主机,这次确实放入了新行。

            $VMnics = get-vmhostnetworkadapter -Physical
            $NIC_collection = @()
            $VMnic_nr = "[$i]"
            Foreach ($VMnic in $VMnics){
                    $NIC_Details = New-Object PSObject -Property @{
                        Number=$VMnic_nr
                        VMNic=$VMnic
                    }
                    #[...]
                    $NIC_collection += $NIC_Details
                    $i++
                 }
            $NIC_collection | Sort-Object VMNic | ft * -AutoSize | Select -First 3
            $NIC_collection | Sort-Object VMNic | ft * -AutoSize | Select -Skip 3 | Out-String | ?{$_ -match "(\S+?\s+?)(\S+?\s*?)$"} | %{Write-Host $Matches[1] -ForegroundColor Green -NoNewline;Write-Host $Matches[2] -ForegroundColor DarkYellow}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 2021-06-24
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 2017-06-03
      • 2016-11-16
      相关资源
      最近更新 更多