Visualizzazione post con etichetta get-process. Mostra tutti i post
Visualizzazione post con etichetta get-process. Mostra tutti i post

lunedì 11 marzo 2019

PowerShell: Creazione di un documento Excel contenente l'elenco dei processi in esecuzione

Lo script PowerShell presentato in quest'articolo consente di creare un documento MS Excel in cui vengono elencati i processi in esecuzione sulla postazione con relative informazioni su Nome del processo, ID, tempo di CPU ed eventuale percorso del file eseguibile. Un prerequisito per l'esecuzione di tale script è che sulla postazione sia installato MS Excel.
Se eseguendo lo script si riceve errore relativo a restrizioni impostate sulla postazione, eseguire il comando
set-executionpolicy unrestricted

Analizziamo lo script nel dettaglio.
Nella variabile $path andiamo ad inserire il nome, comprensivo di percorso, da assegnare al documento MS Excel una volta creato.
$path = "c:\ElencoProcessi.xlsx"
Con le successive tre istruzioni viene avviato MS Excel, creata una nuova cartella di lavoro e all'interno di quest'ultima ci si posiziona sul foglio di lavoro che andrà a contenere le informazioni sui processi.
$objExcel = new-object -comobject excel.application 
$objWorkbook = $objExcel.Workbooks.Add() 
$objWorksheet = $objWorkbook.Worksheets.Item(1)

Per non visualizzare a video la finestra di MS Excel in fase di creazione del file, nello script viene utilizzata l'istruzione
$objExcel.Visible = $False
All'interno del foglio di lavoro utilizziamo la prima riga come riga di intestazione assegnando un nome a ciascuna colonna in base al contenuto che andremo successivamente ad inserire.
$objWorksheet.Cells.Item(1, 1) = "Process"
$objWorksheet.Cells.Item(1, 2) = "ID"
$objWorksheet.Cells.Item(1, 3) = "CPU"
$objWorksheet.Cells.Item(1, 4) = "Path"
Il cuore dello script è rappresentato dalle seguenti istruzioni. 
$row=2
Get-Process | Sort-Object ProcessName | Select ID, ProcessName,CPU, Path | foreach-object{ 
 $objWorksheet.Cells.Item($row,1) = $_.processname;
 $objWorksheet.Cells.Item($row,2) = $_.id;
 $objWorksheet.Cells.Item($row,3) = $_.cpu;
 $objWorksheet.Cells.Item($row,4) = $_.path;
 $row++
}
La variabile $row viene inizializzata a 2 (nella prima riga del foglio di lavoro abbiamo inserito l'intestazione) e verrà utilizzata per spostarci alla riga successiva man mano che verranno trovati e inseriti i processi all'interno del foglio. Tramite il cmdlet Get-Process otteniamo i processi in esecuzione che vengono ordinati per nome  con Sort-Object ProcessName e inseriti all'interno del foglio di lavoro.
Al termine non resta che salvare il documento creato e chiudere MS Excel. Nel caso in cui il nome del file risulti già presente, apparirà una finestra di dialogo in cui viene richiesto all'utente se intende sovrascriverlo.
$objWorkbook.SaveAs($path)
$objWorkbook.Close()
$objExcel.Quit()
PowerShell, Script ElencoProcessi.ps1
FIG 1 - PowerShell, Script ElencoProcessi.ps1

Lo script può essere scaricato dal seguente link
DOWNLOAD
All'interno dello script è presente la funzione Use-RunAs che forza l'esecuzione con i privilegi amministrativi (PowerShell: Forzare l'esecuzione di uno script con privilegi elevati). L'utilizzo di tale funzione non è strettamente necessaria ma può essere utile se si tenta di salvare il file in path che richiedono privilegi elevati.

MS Excel, Elenco Processi
FIG 2 - MS Excel, Elenco Processi





lunedì 8 giugno 2015

Windows Quick Tip: Elenco stampabile dei processi attivi

Per visualizzare i processi in esecuzione su un computer dotato di Windows basta eseguire, ad es. tramite la combinazione di tasti CTRL+SHIFT+ESC, Gestione Attività (Task Manager nei sistemi Windows XP e antecedenti)  e selezionare la scheda Processi (In Windows 8 e 8.1 è possibile selezionare la scheda Dettagli). Purtroppo il tool non permette facilmente di salvare l'elenco o di stamparlo. Per questo tipo di operazione possiamo affidarci al Prompt dei comandi o alla console avanzata PowerShell.


Gestione attività
FIG 1 - Gestione Attività

Prompt dei comandi
  • Avviare il prompt dei comandi: WIN+R e digitare cmd seguito da invio. 
  • Digitare il seguente comando seguito da invio per visualizzare l'elenco dei processi in esecuzione
    tasklist
  • Se i processi attivi sono numerosi e vogliamo visualizzarli in più pagine, il comando da eseguire è
    tasklist |more
  • Se intendiamo salvare l'elenco dei processi all'interno degli appunti (clipboard)
    tasklist |clip
  • Se, invece, vogliamo salvare l'output del comando in un file di testo
    tasklist > c:\processi.txt 

    in questo modo l'elenco dei processi in esecuzioni sarà salvato nel file processi.txt presente in c:\ e possiamo stamparlo facilmente.

PowerShell
  • Avviare PowerShell: WIN+R e digitare powershell seguito da invio
  • Per visualizzare l'elenco dei processi digitare il seguente comando e premere invio per eseguirlo 
    get-process
  • Per dirottare l'output del comando in un file di testo possiamo eseguire il comando
    get-process |out-file "c:\processi.txt"