PowerShell: altri esercizi
Vi riepiloghiamo altri esercizi molto utili per PS, fateci sapere con un commento o una reaction se vi piacciono!
# Lista di tutti i processi ed ad ordinarla inversamente secondo la loro percentuale di utilizzo del processore.
Get-Process | Sort-Object CPU –Descending | Select-Object –First 10
# Generate una lista dei primi dieci processi, ordinati in base alla loro percentuale di utilizzo del processore.
Get-Process | Sort-Object CPU | Select-Object –Last 10
# Assegna alla variabile $P la lista dell’esercizio A2.
#Potete visualizzare il contenuto della variabile a video semplicemente digitando $P al prompt.
$P = Get-Process | Sort-Object CPU –Descending | Select-Object –First 10
# Prendete la variabile $P dall’esercizio A3 e memorizzatene il contenuto in un file con nome “A4.txt”.
# Poi salvate il contenuto di $P in un file CSV chiamato “A4.CSV“
# In un file XML con nome “A4.XML“.
$P > .\A4.txt
$P | Export-CSV .\a4.csv
$P | Export-CLIXML .\a4.xml
$P | ConvertTo-Html -Property Name,Path > test.htm
# Generate la lista di tutti i servizi ed ordinatela per stato
Get-Service | Sort-Object Status
# Generate una lista di servizi, visualizzando di ciascuno solo il nome e lo stato.
Get-Service | ForEach-Object{ Write-Host $_.Name $_.Status}
# Generate una lista di servizi e visualizzate di ciascuno solo il nome e lo stato in un colore a vostra scelta.
Get-Service | ForEach-Object{ Write-Host –F Yellow –B Red $_.Name $_.Status}
# Al posto di –F potete anche scrivere –ForegroundColor è anzichè –B potete scrivere –BackgroundColor.
# Recuperate la lista di tutti i servizi.
# Ordinate la lista per stato
# Visualizzate a video il nome di ciascun servizio utilizzando il colore rosso o verde a seconda dello del stato del servizio.
# Poi utilizzate un ciclo ForEach ma, anzichè sfruttare direttamente Write-Host, aggiungete un blocco if.
Get-Service | ForEach-Object{
if ($_.Status -eq "Stopped") { Write-Host -F Green $_.Name $_.Status }
else{ Write-Host -F Red $_.Name $_.Status }
} # fine for-each
# Convertite l’output prodotto da Get-Service in formato HTML.
Get-Service | ConvertTo-HTML
# Utilizzate i comandi che conoscete per memorizzare l’output dell’esercizio precedente in un file di nome “.\A10.html”.
Get-Service | ConvertTo-HTML > .\a10.html
# Generate una pagina web più concisa e riportate solo il nome e lo stato di ciascun servizio.
# Potete anche ordinare l’output per stato prima della conversione.
Get-Service | Sort-Object Status | ConvertTo-HTML Name, Status > .\a11.html
#####################################################################################
# Visualizzate solo il nome del file e la dimensione, escludendo sempre i file temporanei con estensione tmp o temp.
Get-ChildItem * -Exclude *.tmp | Select-Object Name, Length
# Ordinate i file per dimensione (length), e per nome (name).
Get-ChildItem * -Exclude *.tmp | Select-Object Name, Length | Sort-Object Length, Name
# Create una lista di tutti i possibili attributi per un file utilizzando il cmdlet Get-Member.
# Ordinate tutti i file per la data di ultimo accesso.
Get-ChildItem | Get-Member
# Raggruppate i file in base alla loro estensione.
# Ordinate il risultato in base al numero di file per ciascuna estensione
Get-ChildItem | Group-Object Extension | Sort-Object Count
# Determinate la dimensione totale di tutti i file con estensione TMP.
# In uno step successivo, visualizzate a video SOLO la dimensione totale.
# Dopo aver eserguito la catena di comandi, ripetete i comandi con l’aggiunta di Get-Member per visualizzare tutti gli attributi dei risultati
(Get-ChildItem .\*.tmp | Measure-Object Length –Sum).Sum
# Eliminate tutti i file TMP usando il cmdlet Remove-Item con gli argomenti corretti!
Remove-Item .\*.tmp
# Ora eliminate tutti i file di dimensione maggiore di 2 MB, considerando che 2MB rappresentano indicativamente 2000000 di byte.
Get-ChildItem | Where-Object {$_.Length –gt 2000000} | ForEach-Object {Remove-Item $_.Fullname}
# Create una sotto-cartella separata per ciascuna estensione di file presente nella vostra cartella di test.
# Ora ordinatela utilizzando il parametro –Unique.
# Assegnare questa lista ad una variabile e passare al prossimo step: usando un ciclo
# ad ogni iterazione create una sottocartella con il nome di ciascuna estensione.
Get-ChildItem | Select-Object Extension | Sort-Object Extension -Unique | ForEach-Object {New-Item (".\New" + $_.Extension) -Type Directory}
# Spostate tutti i file dalla cartella di test alle sotto-cartelle appena create.
# Create un’altra lista di tutti gli elementi e filtratela utilizzando un operatore di confronto sul tipo di elemento.
# Un ciclo per la lista, che ora contiene solo file.
# Per ciascun oggetto, trovate la cartella di destinazione corretta utilizzando l’estensione del file e spostate il file in quella cartella.
# Per memorizzare i risultati temporanei utilizzate delle variabili.
Get-ChildItem | Where-Object {$_.Mode -notmatch "d"} | ForEach-Object {$b= ".\New" + $_.Extension; Move-Item $_.Fullname $b}
# Memorizzate il risultato dell’esercizio precedente incluse tutte le sotto-cartelle in un file di testo e salvatelo con nome FinalOutput.txt.
Get-ChildItem –Recurse > .\finaloutput.txt
# Imposta per ogni file word *.doc l'attributo di default ReadOnly
Get-ChildItem *.doc | ForEach-Object {$_.IsReadOnly = 0}