可以在powershell中为单个哈希表列着色吗?
例如color" Number"列到绿色:
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
答案 0 :(得分:0)
你可以将它与写主机命令一起破解,但它并不令人敬畏。这意味着手动格式化列,或正则表达式匹配和格式匹配。关键是Write-Host允许你指定颜色,和它有-NoNewLine,所以你可以把线串起来。
可能有更好的方法吗?也许,但我还没有找到它,所以如果我想向我的主人输出彩色输出,这就是我过去所做的。
这几乎就是你所拥有的,但当你输出表格时,我会做两次。第一次只列出标题和它们下面的----。然后它会跳过这些行,它首先将其余部分转换为字符串,将每行与RegEx模式匹配“(\ 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}