Come visualizzare il nome del server e il risultato del ping solo dallo script PowerShell nella pagina web html

Nov 13 2020

Sto cercando di creare lo script per controllare se i server sono online, che verrà visualizzato come pagina web HTML utilizzando la proprietà "ConvertTo-Html". Ho anche applicato alcuni piccoli CSS.

Ecco il mio codice:

$Header = @" <style> table { font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; border-collapse: collapse; width: 100%; } th { padding-top: 12px; padding-bottom: 12px; text-align: left; background-color: green; color: white; } </style> "@ $OS = Test-Connection -ComputerName Server1, Server2, Server3 | ConvertTo-Html
ConvertTo-Html -Body "$OS" -Title "Fragment" -Head $Header | Out-File StatusReport.html

Il risultato dell'output nel file " StatusReport.html " mostra troppe informazioni non necessarie (foto allegata). Come posso visualizzarne solo alcuni: nome del server, risultato del ping?

Risposte

2 DougMaurer Nov 14 2020 at 00:59

Ass Lee ha commentato, dovrai selezionare le proprietà che desideri dall'output. Ci sono alcune proprietà ma nessuna di esse è Servero result.

Per visualizzare un elenco delle proprietà, reindirizza l'output a Get-Member

Test-Connection google.com -count 1 | Get-Member

Puoi anche usare Format-List *per vedere le proprietà e i valori

Test-Connection google.com -count 1 | Format-List *

Una volta che conosci le proprietà che stai cercando, puoi selezionarle per nome

Test-Connection google.com -count 1 | Select-Object Address,IPv4Address,StatusCode

Se vuoi rinominare le proprietà, puoi usare le proprietà calcolate

Test-Connection google.com -count 1 |
    Select-Object @{n='Server';e={$_.Address}},IPv4Address,@{n='Result';e={'Successful'}}

Tuttavia, ciò non tiene conto di eventuali risultati di ping non riusciti. Ecco un po 'di codice che raccoglierà i successi e gli insuccessi, quindi combinerà i due. Notare che i nomi delle proprietà devono corrispondere.

$targets = 'server1', 'server2', 'server3', 'dontexist'

$success = Test-Connection -ComputerName $targets -Count 1 -ErrorAction SilentlyContinue -ErrorVariable errors |
               Select-Object @{n='Server';e={$_.address}},IPv4Address,@{n='Result';e={'Successful'}} $failed = $errors.exception.message | Where-Object {$_ -match "computer '(.+?)'"} |
                  Select-Object @{n='Server';e={$matches.1}}, @{n='IPv4Address';e={"N/A"}}, @{n='Result';e={'Failed'}} $success + $failed

Puoi usare lo splatting per rendere il codice più facile da leggere e mantenere.

$params = @{
    ComputerName  = 'server1', 'server2', 'server3', 'dontexist'
    Count         =  1
    ErrorAction   = 'SilentlyContinue'
    ErrorVariable = 'errors'
}

$success = Test-Connection @params | Select-Object @{n='Server';e={$_.address}},
                             IPv4Address,
                             @{n='Result';e={'Successful'}}

$failed = $errors.exception.message |
              Where-Object {$_ -match "computer '(.+?)'"} | Select-Object @{n='Server';e={$matches.1}},
                                @{n='IPv4Address';e={"N/A"}},
                                @{n='Result';e={'Failed'}}

$success + $failed

Combinando questo con una versione leggermente modificata del tuo codice, finiamo con questo come lo script finale.

$Header = @" <style> table { font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; border-collapse: collapse; width: 100%; } th { padding-top: 12px; padding-bottom: 12px; text-align: left; background-color: green; color: white; } </style> "@ $params = @{
    ComputerName  = 'server1', 'server2', 'server3', 'dontexist'
    Count         =  1
    ErrorAction   = 'SilentlyContinue'
    ErrorVariable = 'errors'
}

$success = Test-Connection @params | Select-Object @{n='Server';e={$_.address}},
                             IPv4Address,
                             @{n='Result';e={'Successful'}}

$failed = $errors.exception.message |
              Where-Object {$_ -match "computer '(.+?)'"} | Select-Object @{n='Server';e={$matches.1}},
                                @{n='IPv4Address';e={"N/A"}},
                                @{n='Result';e={'Failed'}}

$success + $failed |
    ConvertTo-Html -Title "Fragment" -Head $Header |
        Set-Content -Path StatusReport.html -Encoding UTF8