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 => 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 > $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 > $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 > $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