Я использую сценарий Powershell, чтобы получить список серверов в домене Active Directory, опросить их, чтобы определить, установлена ли роль SMTP-сервера, а затем вывести этот список на дисплей несколькими способами.
Я хочу отформатировать вывод сценария, чтобы использовать цвета на основе значений.
Я создаю собственный PSO-объект с выводом, который состоит из двух свойств, которые просто называются «Имя» и «IsInstalled».».Имя - это строковое поле, а IsInstalled - это логическое значение.Я хочу, чтобы оба значения отображались красным, если значение IsInstalled равно False, и зеленым, если оно равно True.
import-module ServerManager
import-module ActiveDirectory
$Computers = Get-ADComputer -Filter {(OperatingSystem -like "*windows*server*") -and (OperatingSystem -notlike "*2003*") -and (Enabled -eq "True")} -Properties Name,OperatingSystem | Select Name | Sort-Object -Property Name #| Select-Object -First 5
$Present = ""
$YesCount = $null
$Results = @()
$Count = 0
ForEach ($Computer in $Computers)
{
$Name = $Computer.Name
$SMTP = Get-WindowsFeature "smtp-server"
$IsInstalled = $null
if($SMTP.Installed)
{
Write-host "SMTP is installed on $Name"
$Present = "True"
$IsInstalled = $True
$YesCount++
}
else
{
Write-host "Not on $Name"
$IsInstalled = $False
}
$object = New-Object -TypeName PSObject
$object | Add-Member -MemberType NoteProperty -Name Name -Value $Name
$object | Add-Member -MemberType NoteProperty -Name IsInstalled -Value $IsInstalled
$Results += $object
$Count++
}
if (($Present = "True"))
{
Write-host ""
Write-host "Checked $Count machines, and SMTP is installed on no servers!"
}
else
{
Write-host "Checked $Count machines, and SMTP is installed on $YesCount servers!"
}
$Results |Select Name,IsInstalled | Sort-Object Name | Format-Table -AutoSize
Я могу использовать Sort-Object и Format-Table для управления сортировкой и разметкой вывода, ноЯ не могу понять, как изменить цвет текста в зависимости от значения.Помощь