2010-04-26 10 views
2

J'essaie de changer la couleur de la sortie de l'hôte d'écriture en fonction de la propriété lastrunoutcome des travaux SQL Server dans Powershell .... comme dans ... si un travail a été réussi, la sortie de lastrunoutcome est "Succès" en vert .... en cas d'échec, puis "Échec" en rouge. J'ai le script qui fonctionne pour obtenir le statut de travail désiré ... Je ne sais pas comment changer les couleurs.Modifier la couleur de sortie de l'hôte en fonction du résultat de foreach if elseif dans Powershell

Voici ce que j'ai jusqu'à présent:

# Check for failed SQL jobs on multiple servers 

[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null 

foreach ($svr in get-content "C:\serverlist2.txt") 

{ 
    $a = get-date 
    $BegDate = (Get-Date $a.AddDays(-1) -f d) + " 12:00:00 AM" 
    $BegDateTrans = [system.datetime]$BegDate 

    write-host $svr 

    $srv=New-Object "Microsoft.SqlServer.Management.Smo.Server" "$svr" 

    $srv.jobserver.jobs | where-object {$_.lastrundate -ge $BegDateTrans -and $_.Name -notlike "????????-????-????-????-????????????"} | format-table name,lastrunoutcome,lastrundate -autosize 
foreach ($_.lastrunoutcome in $srv.jobserver.jobs) 
{ 
    if ($_.lastrunoutcome = 0) 
     { 
     -forgroundcolor red 
     } 
    else 
    {} 
    } 
} 

Cela semble être le plus proche, je suis devenu ... mais il me donne une erreur de « » LastRunOutcome « ​​est une propriété ReadOnly ».

Toute aide serait grandement appréciée!

Merci!

Emo

Répondre

1
if ($_.lastrunoutcome = 0) 

ressemble à une erreur; il devrait être "-eq" opérateur utilisé, pas "=". C'est:

if ($_.lastrunoutcome -eq 0) 
+0

Si je change le code de « = » à « eq » Je viens de l'erreur « Le terme « -forgroundcolor » est pas reconnu comme le nom d'une applet de commande, fonction, fichier script ou un programme utilisable. " – Emo

+0

Je sais que -eq est un argument comparatif, cela ne fonctionne pas ici – Emo

+0

Eh bien ... diable ... Je ne sais pas..ignore mes deux derniers commentaires LOL! – Emo

1

paramètres « Splat » vous permettent de passer un hachage de paires nom-valeur du paramètre à une fonction ou cmdlet. Ce hachage peut être construit progressivement ...

$extraArgs = @{} 
if ($thingsFailed) { 
    $extraArgs["foregroundColor"] = "Red" 
} 

write-host "Message" @extraArgs 

Si le hachage est rien vide sera ajouté, mais si $thingsFailed a été mis la sortie sera en rouge.