PowerShell: Esercitazione sui servizi

CONSEGNA:
– prendere servizi in base a status
– contare n processi per ogni tipo
– esportare ogni quey in 3 formati
– zippare il tutto e inviare per mail dopo aver visualizzato riepilogo servizi

# definisco path
$path_work = "C:\"

# definisco contatori
$run = 0
$stop = 0
$tot = 0

# definisco "query" che mi vanno a prendere i processi in base al loro status
$queryRun =  gsv | ? Status -eq "Running"
$queryStop = gsv | ? Status -eq "Stopped"
$queryAll =  gsv

# Get-Service alias =&gt gtv
# ? alias di Where o Where Object

Get-Service |
ForEach-Object{
    # se servizio è attivo incremento il relativo contatore
    if($_.Status -eq "Running"){ $run++ } # fine if
    $queryRun | Out-File $path_work\run.txt
    $queryRun | ConvertTo-Html &gt $path_work\run.html
    $queryRun | Export-Csv $path_work\run.csv
    
    # se servizio è stoppato incremento relativo contatore
    if($_.Status -eq "Stopped"){ $stop++ } # fine if
    $queryStop | Out-File $path_work\stop.txt
    $queryStop | ConvertTo-Html &gt $path_work\stop.html
    $queryStop | Export-Csv $path_work\stop.csv
    
    # incremento contatore totale servizi
    $tot++
    $queryAll | Out-File $path_work\all.txt
    $queryAll | ConvertTo-Html &gt $path_work\all.html
    $queryAll | Export-Csv $path_work\all.csv
    
} # fine for-each

# zippo i file creati per ogni tipo
Compress-Archive -LiteralPath $path_work\run.csv, $path_work\run.html, $path_work\run.txt -CompressionLevel Optimal -DestinationPath $path_work\run.zip
Compress-Archive -LiteralPath $path_work\stop.csv, $path_work\stop.html, $path_work\stop.txt -CompressionLevel Optimal -DestinationPath $path_work\stop.zip
Compress-Archive -LiteralPath $path_work\all.csv, $path_work\all.html, $path_work\all.txt -CompressionLevel Optimal -DestinationPath $path_work\all.zip

# elimino vecchi file
Remove-Item –path $path_work\run.csv –recurse
Remove-Item –path $path_work\run.html –recurse
Remove-Item –path $path_work\run.txt –recurse

Remove-Item –path $path_work\stop.csv –recurse
Remove-Item –path $path_work\stop.html –recurse
Remove-Item –path $path_work\stop.txt –recurse

Remove-Item –path $path_work\all.csv –recurse
Remove-Item –path $path_work\all.html –recurse
Remove-Item –path $path_work\all.txt –recurse

# visualizzo riepilogo
Write-Host "`nServizi Totali: " $tot
Write-Host "Servizi che stanno lavorando: " $run
Write-Host "Servizi che sono fermi: " $stop

$From = "mail@gmail.com"
$To = "mail@gmail.com"
$Cc = "mail@gmail.com"
$Subject = "Finalmenteee"
$Body = "Ecco gli allegati:"
$Attachment = "$path_work\run.zip", "$path_work\all.zip", "$path_work\stop.zip"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"

$pass = ConvertTo-SecureString "PASSW_MAIL" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ("mail@gmail.com", $pass)

Send-MailMessage `
    -From $From `
    -to $To `
    -Cc $Cc `
    -Subject $Subject `
    -Body $Body `
    -SmtpServer $SMTPServer `
    -port $SMTPPort `
    -UseSsl `
    -Credential $cred `
    -Attachments $Attachment

You may also like...


x

Leggi anche...

PowerShell: altri esercizi
Vi riepiloghiamo altri esercizi molto utili per PS, fateci sapere con un commento o una reaction se vi piacciono! [code lang="powershell"] # ...
PowerShell: Cartelle e sottocartelle
Consegna: Ho un PATH rootHo un numero N in inputCrea n cartelleNumero M in inputM cartelle sotto la cartella N [code lang="powershell"] #...
PowerShell: operazioni sui file
Consegna: Dato path bisogna chiedere estensione da cercareTrovare quanti file con tale estensione e calcolarne l'occupazione totale [code ...
powered by RelatedPosts