Powershell: Esercitazione sui processi

CONSEGNA:
– contare il numero dei processi attivi
– far selezionare all’utente quanti processi vuole esportare
– prendere n. processi ordinati in base a uso cpu
– far scegliere a utente formato export tramite menu apposito
– zippare il/i file
– chiedere se vuole inviare per mail altrenti fine programma
– ATTUARE TUTTI I CONTROLLI DEL CASO (Es. input dati utente)

# setto path lavoro
$percorso = "C:\"

#conto processi attivi
$processi_attivi = @(get-process -ea silentlycontinue ).count
#$processi_attivi

# faccio inserire quanti processi vuole esportare + controllo su input
do {
    try{ 
        $numOk = $true
        [int]$numero = Read-Host "Inserisci quanti processi vuoi esportare"
       }catch{
            $numOK = $false
            Clear-Host
       } # fine try-catch
}until(($numero -ge 1 -and $numero -lt $processi_attivi) -and $numOK)

# prendo i primi $numero processi ordinati per uso della cpu
$get = Get-Process | Sort-Object CPU -Descending | Select-Object -First $numero

# facccio selezionare all'utente come vuole esportare il risultato + controllo su input
do{
    $check = 0 # flag
    
    # chiedo formato esportazione
    $type_export = Read-Host "Scegli il formato di esportazione digitando il numero corrispondente`n1) Txt`n2) Html`n3) Csv`n4) Xml`n5) Tutti`nInserisci numero opzione scelta "
    
    switch ( $type_export ) {
        1 { $get | Out-File $percorso\processi.txt    }
        2 { $get | ConvertTo-Html &gt $percorso\processi.html   }
        3 { $get | Export-Csv $percorso\processi.csv }
        4 { $get | Export-Clixml $percorso\processi.xml  }

        5 { $get | Out-File $percorso\processi.txt
            $get | ConvertTo-Html &gt $percorso\processi.html
            $get | Export-Csv $percorso\processi.csv
            $get | Export-Clixml $percorso\processi.xml
            
            # creo zip
            Compress-Archive -LiteralPath $percorso\processi.xml, $percorso\processi.csv, $percorso\processi.html, $percorso\processi.txt -CompressionLevel Optimal -Update -DestinationPath $percorso\processi.zip
            
            # rimuuovo vecchi file
            Remove-Item –path $percorso\processi.csv –recurse
            Remove-Item –path $percorso\processi.html –recurse
            Remove-Item –path $percorso\processi.txt –recurse
            Remove-Item –path $percorso\processi.xml –recurse
          } # fine case 5

        default { Write-Host "Input non riconosciuto!"
                  $check++ # flag che mi fa ricominciare ciclo ++
                  Clear-Host # pulisco schermo
                } # fine default
    } # fine switch-case
} until($check -eq 0)

do{
    $check1 = 0 # flag
    $mail = Read-Host "Vuoi inviare via mail l'allegato?`n1) Si`n2) No`nSeleziona la tua risposta digitando il relativo numero "
    if($mail -eq 1) {
        # invio mail
        $From = "mail@gmail.com"
        $To = "mail@gmail.com"
        $Cc = "mail@gmail.com"
        $Subject = "OGGI PROCESSI"
        $Body = "Hello World!:"
        $Attachment = "$percorso\processi.zip", "$percorso\es.ps1"
        $SMTPServer = "smtp.gmail.com"
        $SMTPPort = "587"

        $pass = ConvertTo-SecureString "PASSWORD_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

    } elseif($mail -eq 2) {
        Write-Host "Fine del programma"
    } else {
        Write-Host "Errore, Input non riconosciuto!"
        $check1++ # flag che mi fa ricominciare ciclo ++
        Clear-Host # pulisco schermo
    } # fine if-else

} until($check1 -eq 0)

You may also like...


x

Leggi anche...

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...
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"] #...
powered by RelatedPosts