Come visualizzare la configurazione del computer in modo semplice e veloce
Esistono molti modi per visualizzare la configurazione del tuo computer e del tuo laptop.
E se il tuo PC potesse gestire le attività più banali al posto tuo? Con Windows PowerShell, può farlo. Ecco come usare PowerShell per automatizzare le attività quotidiane e ripetitive che nessuno vuole ripetere più e più volte.
Sommario
Microsoft PowerShell è un'utilità da riga di comando e un linguaggio di scripting che offre agli amministratori un potente strumento per automatizzare un'ampia gamma di attività su computer e reti. PowerShell contiene componenti del prompt dei comandi ed è basato sul framework .NET. Se state leggendo WebTech360, dovreste sapere che PowerShell è lo strumento preferito dagli amministratori IT per la gestione di reti di grandi dimensioni.
Imparare a usare PowerShell semplificherà molte noiose attività quotidiane. È anche possibile apportare modifiche a livello di sistema tramite la rete, senza dover configurare singolarmente ogni server. PowerShell sta diventando una componente essenziale per la gestione di ambienti cloud ibridi .
PowerShell offre molteplici possibilità di utilizzo per aiutarti a lavorare in modo più efficiente e a mantenere la tua rete efficiente. Gli utilizzi più basilari includono: la pianificazione di aggiornamenti giornalieri sui sistemi, la generazione di report sui processi in corso, l'esecuzione di servizi periodici e altro ancora. Sebbene molte di queste attività possano essere eseguite tramite l'interfaccia utente grafica, lo scopo di PowerShell è quello di eseguirle più velocemente.
Se hai un'attività di manutenzione di routine che richiede pochi minuti per essere configurata, puoi scriptare la stessa funzionalità in un singolo comando, denominato PowerShell. Quindi, la prossima volta che aprirai lo script, verrà eseguito in background. Padroneggiare la logica di scripting di PowerShell, comprendere il funzionamento di oggetti e variabili e distribuirlo in modo intelligente sulla tua rete ti farà chiedere perché non hai usato PowerShell prima.
Questo tutorial illustrerà le basi di PowerShell, utili per chi è alle prime armi con l'IT, soprattutto se ha familiarità con il Prompt dei comandi di Windows. Spiegherà come utilizzare strumenti e comandi di base, come lavorare con file e cartelle, comprendere gli oggetti, utilizzare le variabili e gestire server remoti.
Dopo il rilascio di Windows NT, CMD.EXE divenne l'utilità della riga di comando per Windows. Sebbene CMD.EXE ereditasse alcuni elementi dal suo predecessore DOS (COMMAN.COM), si basava ancora su un linguaggio di scripting piuttosto "primitivo": utilizzava i file di comando di Windows (.CMD e .BAT). L'aggiunta di Windows Scripting Host e dei linguaggi VBScript e JScript migliorò notevolmente le capacità di scripting dell'utilità.
Queste tecnologie rappresentano un mix piuttosto equilibrato di utilità avanzate da riga di comando e ambienti di scripting. La vera preoccupazione non è quanti file CMD.EXE, .CMD e Windows Scripting Host possano essere manipolati con esse. La principale lamentela e preoccupazione riguarda l'esecuzione di alcune attività apparentemente semplici.
Utilizzando un "framework" di strumenti da riga di comando e scripting, qualsiasi script moderatamente completo richiede una combinazione di comandi batch, Windows Scripting Host ed eseguibili autonomi. Ogni script utilizza convenzioni diverse per l'esecuzione e le richieste, l'analisi e la restituzione dei dati.
Lo scarso supporto delle variabili in CMD.EXE, le interfacce incoerenti e l'accesso limitato alle impostazioni di Windows, uniti a un'altra debolezza, rendono difficile implementare e utilizzare gli script da riga di comando. Qual è questa "altra debolezza", potreste chiedervi? È il testo. In queste tecnologie, tutto è testo. L'output di un comando o di uno script è testo e deve essere analizzato e riformattato per fungere da input per il comando successivo. Questo è il punto di partenza fondamentale che PowerShell trae da tutte le shell tradizionali.
I tre concetti introdotti in questa sezione sono solo le basi per comprendere i concetti chiave che costituiscono il fondamento di PowerShell. Sarà necessario dedicare più tempo all'apprendimento e alla padronanza dei concetti più avanzati man mano che si affrontano i comandi di PowerShell.
PowerShell è installato per impostazione predefinita in Windows 10, Windows 7, Windows Server 2008 R2 e nelle versioni più recenti di Windows. Le versioni più recenti di PowerShell aggiungono nuove funzionalità e "cmdlet" (termine Microsoft per i comandi di PowerShell, pronunciato "command-lets") e vengono installate con la versione corrispondente di Windows Management Framework (WMF).
Attualmente, WMF 5.1 è la versione più recente consigliata. In alcuni casi, alcune nuove funzionalità dipendono dal sistema operativo, oltre che dalla versione di WMF. Ad esempio, Windows 8 e Windows Server 2012 supportano il cmdlet Test-NetConnection, che consente di testare la connettività a una porta TCP/IP specifica , ma questo cmdlet non è disponibile in Windows 7, nemmeno quando si esegue l'ultima versione di WMF.
Sulla maggior parte dei sistemi Windows, gli utenti avranno a disposizione due ambienti PowerShell: la console di PowerShell e PowerShell ISE (Integrated Scripting Environment). La console di PowerShell si presenta come una tradizionale riga di comando, ma con tutte le funzionalità di PowerShell. Nomi di variabili, cicli, completamento automatico dei comandi e pipe sono tutti disponibili nella console di PowerShell.
Per utilizzi più avanzati (come la creazione di script), PowerShell ISE offre il completamento automatico dei comandi, l'evidenziazione del codice e il completamento del codice Intellisense di Microsoft per aiutarti a creare e testare il codice PowerShell. PowerShell ISE consente inoltre di lavorare con più script PowerShell contemporaneamente utilizzando la navigazione a schede.
Il fondamento dei comandi di PowerShell è il cmdlet. Microsoft ha adottato diverse strategie di progettazione durante la creazione dei cmdlet in PowerShell.
La prima è la possibilità di dedurre facilmente i nomi dei cmdlet, o almeno di renderli più facilmente individuabili. I comandi o cmdlet di PowerShell sono inoltre progettati per essere più semplici da usare, con una sintassi standardizzata, che semplifica la creazione di script dall'interfaccia della riga di comando.
I cmdlet utilizzano il formato Verbo-Nome, come in Get-Service, Stop-Service o Import-Csv. La parte verbo del nome del cmdlet indica l'azione eseguita sul nome. In genere, i cmdlet utilizzati per recuperare informazioni contengono il verbo Get nel nome, come Get-Process o Get-Content . I comandi utilizzati per modificare qualcosa di solito iniziano con il verbo Set , mentre i comandi utilizzati per aggiungere una nuova entità a qualcosa di solito iniziano con Add o New .
In secondo luogo, anche ai parametri comunemente utilizzati in PowerShell vengono assegnati nomi standardizzati. Ad esempio, il parametro -ComputerName consente l'esecuzione del cmdlet su uno o più computer remoti. -Credential viene utilizzato per fornire un oggetto di autenticazione, contenente le credenziali utente, per eseguire il comando come utente specifico.
È possibile utilizzare alias sia per i cmdlet che per i parametri per ridurre il numero di tasti da premere e la lunghezza complessiva del comando (utile quando si concatenano più comandi). Sebbene questi alias non utilizzino sempre convenzioni di denominazione standard, riflettono comunque le utilità tradizionali della riga di comando.
In PowerShell, alias come DIR, CD, DEL e CLS corrispondono rispettivamente ai cmdlet Get-ChildItem, Set-Location, Remove-Item e Clear-Host. Gli alias dei parametri possono funzionare in due modi: possono utilizzare un alias predefinito fornito dal cmdlet oppure possono essere creati immettendo un numero di caratteri sufficiente a creare una corrispondenza univoca tra i parametri supportati dal cmdlet.
La maggior parte degli amministratori di sistema deve gestire file e cartelle nel corso del proprio lavoro, che si tratti di spostare una cartella in un'altra posizione sul server, archiviare file di registro o cercare file di grandi dimensioni. Nei casi in cui le stesse operazioni vengano ripetute su molti file, l'utilizzo di PowerShell per automatizzarle rappresenta una soluzione efficace per risparmiare tempo.
Per trovare file e cartelle, uno dei primi strumenti da riga di comando che un amministratore avrebbe imparato a usare ai vecchi tempi dell'informatica era il comando dir. Dir elenca i file e le cartelle contenuti nella directory specificata.
PowerShell offre un comando simile, il cmdlet Get-ChildItem . Get-ChildItem consente di creare rapidamente un elenco di file in una directory, in modo da poterli manipolare tramite un comando pipe o assegnare l'output a una variabile.
Get-ChildItem può essere utilizzato semplicemente specificando un percorso, tramite una pipeline, utilizzando il parametro -Path o direttamente dopo il nome del cmdlet. Per modificare la risposta restituita da Get-ChildItem, è necessario considerare alcuni parametri resi disponibili dal cmdlet.
Il parametro -Filter è un modo per cercare i file. Per impostazione predefinita, Get-ChildItem restituisce solo i file figlio diretti della directory di destinazione. Questa funzionalità può essere estesa utilizzando il parametro -Recurse , che esegue una ricerca ricorsiva nelle directory contenute nella directory corrente.
In PowerShell 4.0, Get-ChildItem ha aggiunto la possibilità di limitare i risultati a file o directory utilizzando l' opzione –File o –Directory . Le versioni precedenti di PowerShell dovevano passare i risultati a Where-Object, filtrando in base alla proprietà PSIsContainer per effettuare questa determinazione. Un esempio di entrambe le tecniche utilizzate per restituire le directory contenute in C:Users è mostrato qui:
Get-ChildItem C:Users -Directory Get-ChildItem C:Users | Where-Object {$_.PSIsContainer –eq $true}
Per rilevare file nascosti o di sistema, è necessario utilizzare -Force . Get-ChildItem in PowerShell 4.0 e versioni successive può essere utilizzato anche per restituire solo file nascosti, di sola lettura o di sistema utilizzando rispettivamente -Hidden, -ReadOnly e -System . Funzionalità simili potevano essere ottenute nelle versioni precedenti filtrando la proprietà Mode tramite Where-Object:
Get-ChildItem C:Users | Where-Object {$_.Mode -like '*R*'}
Controlla se il file esiste
Normalmente, quando si lavora con i file, tutto ciò che ci serve sapere è se il file esiste o se il percorso della directory è valido. PowerShell fornisce un cmdlet per farlo, sotto forma di Test-Path, che restituisce un valore true o false.
Test-Path viene utilizzato come misura precauzionale prima di tentare di copiare o eliminare un file specifico.
Copia, sposta ed elimina i file
Copy-Item: copia uno o più file o directory da una posizione, specificata dal parametro -Path, alla posizione specificata dall'opzione -Destination.
Sposta elemento: sposta un file o una cartella.
Quando si copia o si sposta una struttura di directory, è necessario utilizzare -Recurse per far sì che il cmdlet esegua l'azione sulla directory e sul suo contenuto. In alcuni casi, è necessario anche -Force , ad esempio quando un file di sola lettura viene sovrascritto da un'operazione di copia.
Remove-Item: Elimina file, cartella.
L'opzione -Force deve essere utilizzata quando si incontra un file di sola lettura, mentre l'opzione -Recurse deve essere utilizzata quando si elimina una directory e il suo contenuto.
Utilizzo di PowerShell -WhatIf e -Confirm
Prima di eseguire un'eliminazione massiva e seria, usa -WhatIf . -WhatIf ti permette di vedere cosa accadrebbe se eseguissi uno script o un comando e se ciò avrebbe un potenziale impatto negativo eliminando dati aziendali importanti. Vale anche la pena notare che -WhatIf non è limitato alle operazioni sui file, ma è ampiamente utilizzato in PowerShell.
Per gli script che intendi eseguire manualmente o, peggio, che hanno comandi dipendenti che vengono eseguiti manualmente, valuta l'utilizzo di -Confirm . Questo ti consente di richiedere l'interazione dell'utente prima che l'operazione abbia effettivamente luogo.
Script PowerShell = file batch potenziati
PowerShell è scritto nel linguaggio .NET e si basa in larga misura sul .NET Framework. Pertanto, PowerShell è progettato come un linguaggio di scripting e shell orientato agli oggetti. Ogni elemento in PowerShell viene trattato come un oggetto con tutte le funzionalità del .NET Framework. Un comando espone una raccolta di oggetti che possono essere utilizzati tramite le proprietà e i metodi di quel tipo di oggetto. Quando si desidera inviare l'output di un comando a un altro, PowerShell passa effettivamente l'oggetto, non solo l'output testuale del primo comando. Questo fornisce al comando successivo pieno accesso a tutte le proprietà e i metodi dell'oggetto nella pipeline.
Trattare tutto come un oggetto e poter accettare oggetti tra i comandi rappresenta un grande cambiamento nella teoria delle utilità da riga di comando. Detto questo, PowerShell funziona ancora come una shell tradizionale. Comandi, script ed eseguibili possono essere digitati ed eseguiti dalla riga di comando e i risultati vengono visualizzati come testo. I file .CMD e .BAT di Windows, i VBScript, i JScript e gli eseguibili eseguiti all'interno di CMD.EXE continuano a essere eseguiti in PowerShell. Tuttavia, poiché non sono orientati agli oggetti, non hanno accesso completo agli oggetti creati e utilizzati in PowerShell. Questi script ed eseguibili legacy continueranno a trattare tutto come testo, ma è possibile combinare PowerShell con diverse altre tecnologie. Questo è particolarmente importante se si desidera iniziare a utilizzare PowerShell con una raccolta di script esistenti che non è possibile convertire tutti in una volta.
I cmdlet possono accettare parametri per modificarne il comportamento. Quando si esegue un cmdlet o una funzione, è possibile specificare valori di parametro per specificare cosa, quando, dove e come eseguire ciascun comando di PowerShell.
Ad esempio, Get-Process recupererà ed elencherà tutti i processi in esecuzione nel sistema operativo:
Ma cosa succede se si desidera ottenere solo un processo specifico? È possibile farlo utilizzando i parametri. Ad esempio, per ottenere tutti i processi Slack, è possibile utilizzare il parametro Name con il cmdlet Get-Process:
Get-Process -Name Slack
Quindi vedrai solo i processi denominati "slack":
Suggerimento : alcuni parametri sono "posizionali", ovvero i loro nomi sono facoltativi. In questo caso, Get-Process -Name Slack e Get-Process Slack eseguono entrambi la stessa attività.
Ogni cmdlet accetta diversi tipi di parametri. Utilizzare il comando Get-Help per visualizzare i parametri accettati dal cmdlet nella sezione SINTASSI.
Get-Help Get-Process
Verrà visualizzato un elenco di tutti i modi possibili in cui è possibile eseguire il cmdlet specificato:
In questo caso, il cmdlet Get-Process accetta parametri come Name, Id, ComputerName, Module, FileVersionInfo e altri parametri comuni. I simboli qui riportati hanno il seguente significato:
Simbolo |
Nome |
Senso |
---|---|---|
Tamburo |
Il parametro non accetta input |
|
- |
Trattino |
Specificare il nome del parametro |
<> |
parentesi graffe |
Segnaposto per il testo |
[] |
Parentesi |
Il parametro può accettare uno o più valori. |
{} |
parentesi graffe |
Il parametro accetta un set di valori. |
I parametri accettano un set di valori che indicano il tipo di dati richiesti, ad esempio stringa, intero, booleano o data/ora. Ad esempio, il seguente comando:
Get-Process [[-Name] ]
... significa che il parametro Nome accetta uno o più valori stringa, mentre questo comando:
Get-Process -Id
... significa che il parametro Id accetta uno o più valori interi.
Il precedente esempio Get-Process utilizzava il parametro Name per restringere i risultati. Tuttavia, se si desidera restringere il campo a un processo più specifico, è possibile utilizzare il parametro ID , che richiede un numero intero, come indicato nella sintassi.
Get-Process -Id 3016
Quindi vedrai solo un processo nell'elenco:
PowerShell elabora tutti i dati come oggetti. Per creare uno script, questi oggetti vengono eseguiti tramite una serie di cmdlet o funzioni collegate tramite il simbolo pipe (|). Scegliere i cmdlet corretti e collegarli in una sequenza logica tramite una pipeline è importante per uno script efficiente.
Supponiamo di voler creare uno script per ordinare e visualizzare i 5 file che occupano più spazio in una directory. Esistono metodi più efficaci per scrivere uno script di ordinamento dei file, ma questo è semplice e intuitivo:
Per farlo in PowerShell, utilizzare una pipeline simile a questa:
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize
Ora che abbiamo una pipeline funzionante, puoi salvarla come file di script PS1, così non dovrai importarla ogni volta che la usi.
Il modo più semplice per creare un file PS1 è incollare lo script nel Blocco note e salvare il file con estensione .ps1.
Dopo aver creato il file PS1, puoi utilizzarlo in PowerShell eseguendo ./ScriptName.ps1 :
Suggerimento : se si verifica un errore di autorizzazione, la soluzione più rapida è eseguire PowerShell con diritti di amministratore durante l'esecuzione dello script.
Congratulazioni! Ora puoi creare script PowerShell PS1.
Leggere e comprendere le meraviglie delle nuove tecnologie è una cosa, ma usarle davvero è un'altra! Nel resto di questo articolo, svilupperemo uno script di PowerShell per dimostrarne le capacità e come utilizzarlo.
DIR è uno dei comandi più comuni in CMD.EXE . Questo comando visualizza tutti i file e le sottodirectory contenuti in una directory padre (come mostrato nella Figura 1). Oltre al nome di ciascun oggetto, le informazioni fornite includono la data e l'ora dell'ultimo aggiornamento e la dimensione di ciascun file. DIR visualizza anche la dimensione complessiva di tutti i file nella directory, nonché il numero totale di file e sottodirectory.
Figura 1
Anche l'esecuzione di DIR in PowerShell produce un elenco di directory simile a quello della Figura 2, ma in modo leggermente diverso. PowerShell non dispone di un comando DIR, ma di Get-ChildItem, che esegue la stessa funzione. In PowerShell, DIR è un alias di Get-ChildItem. Non intendo addentrarmi negli alias in questo articolo. Potete pensare a DIR in PowerShell come a un'abbreviazione di Get-ChildItem.
DIR in PowerShell fornisce molte delle stesse informazioni menzionate sopra: un elenco di file e cartelle, la data e l'ora dell'ultima modifica e la dimensione di ciascun file. Tuttavia, mancano le informazioni di riepilogo fornite da DIR in CMD.EXE: la dimensione totale di tutti i file nella cartella, il numero totale di file e il numero totale di sottocartelle.
Figura 2
Per lo scenario di esempio, sarà necessario creare uno script di PowerShell che simuli il comando CMD.EXE DIR. Di seguito spiegherò le parti più essenziali di uno script.
DIR.PS1: Intestazione
Uno script di PowerShell è costituito da comandi di PowerShell in un file di testo normale con estensione .PS1. Invece di DIR, si utilizza un file di testo denominato DIR.PS1.
Per eseguire lo script, digitare il seguente comando nella schermata di PowerShell:
.DIR.PS1 X:Folder
Dove X è la lettera della partizione dell'unità (ad esempio C, D, E) e Cartella è il nome della cartella.
Per ottenere informazioni sulla partizione di un'unità, è necessario utilizzare Strumentazione gestione Windows (WMI). I dettagli di WMI esulano dallo scopo di questo articolo, quindi non li approfondiremo. Tuttavia, il codice PowerShell riportato di seguito è sufficientemente semplice da comprendere anche senza l'utilizzo di WMI. È possibile creare una variabile "$filter" da utilizzare con il comando Get-WmiObject. Questo filtro indica al comando Get-WmiObject che si desidera ottenere informazioni solo su un'unità specifica. I risultati del comando Get-WmiObject vengono memorizzati in una variabile denominata $volInfo. È importante ricordare che in PowerShell tutto è un oggetto; $volInfo è ora un oggetto restituito da Get-WmiObject.
$filter = "DeviceID = '" + $drive + ":'"
$volInfo = Get-WmiObject -Class Win32_LogicalDisk -Filter $filter
Ora hai accesso a tutti gli oggetti e metodi associati all'oggetto. Il numero di serie del volume è accessibile tramite la proprietà VolumeSerialNumber. Il numero restituito è una stringa di 8 caratteri. Spesso, però, si desidera formattarlo come quattro numeri, separati da un trattino. Questo può essere fatto in modo simile alla riga seguente. Il trattino alla fine della prima riga è il carattere di continuazione di riga in PowerShell. In pratica, indica a PowerShell che la riga non va a capo e che include la riga successiva. Le interruzioni di riga non sono necessarie durante la scrittura del codice, ma è consigliabile inserirle per ridurre la larghezza e rendere il codice più leggibile.
$serial = $volInfo.VolumeSerialNumber.SubString(0, 4) + "-" + `
$volInfo.VolumeSerialNumber.SubString(4, 4)
Ora che hai un oggetto $volInfo, puoi scrivere le informazioni dell'intestazione DIR sullo schermo. Se l'unità non ha un nome, il testo scritto sullo schermo sarà leggermente diverso rispetto a quello che verrebbe visualizzato se l'unità avesse un nome. Una semplice istruzione If-Else viene utilizzata per verificare se la proprietà VolumeName è una stringa vuota. L'istruzione Write-Host viene utilizzata per scrivere ogni riga di testo sullo schermo.
If ($volInfo.VolumeName -eq "") { Write-Host (" Volume in drive " + $drive + " has no label") } Else { Write-Host (" Volume in drive " + $drive + " is " + $volInfo.VolumeName) } Write-Host (" Volume Serial Number is " + $serial) Write-Host ("`n Directory of " + $args[0] + "`n")
Il carattere " `n " all'inizio e alla fine del comando Write-Host viene utilizzato per inserire una nuova riga prima e dopo il testo. Il comando Write-Host aggiunge una nuova riga alla fine di ogni riga. Quindi, l'effetto di " `n " è quello di creare una riga vuota prima e dopo il testo.
Avete notato "-eq" nel comando If? È un operatore di confronto di uguaglianza. La tabella seguente mostra tutti gli operatori di confronto:
-eq, -ieq | Confronta per |
-ne, -ine | Il confronto non è uguale |
-gt, -igt | Confronta maggiore di |
-ge, -ige | Confronta maggiore o uguale a |
-lt, -ilt | Confronta più piccolo di |
-le, -ile | Confronta minore o uguale a |
Il carattere -i prima degli operatori di confronto indica che l'operatore non distingue tra maiuscole e minuscole.
Figura 3: Dati di output dello script attualmente in uso
DIR.PS1: Elenco di file/cartelle
Ora sei pronto per visualizzare il contenuto e le proprietà di questa cartella. La prima cosa da fare è chiamare il comando Get-ChildItem di PowerShell per ottenere una raccolta di file e passarla allo script come parametro. Il comando Get-ChildItem otterrà una raccolta di oggetti file e cartelle, non solo i loro nomi, ma invierà anche questi oggetti direttamente al comando Sort-Object per ordinarli. Per impostazione predefinita, il comando Sort-Object ordina gli oggetti in base alla proprietà Name. Pertanto, non è necessario specificare altri parametri. La raccolta di oggetti ordinata verrà quindi memorizzata in una variabile denominata $items.
$items = Get-ChildItem $args[0] | Sort-Object
Una volta ottenuta una raccolta di oggetti file e cartelle, è necessario scorrerli e visualizzarne le proprietà appropriate. Il comando per farlo è ForEach. Per ogni file o cartella, le proprietà visualizzate saranno la data e l'ora dell'ultima modifica, il nome, la lunghezza o la dimensione del file. Le stringhe dall'aspetto insolito tra parentesi sono codici di formato stringa .NET. Servono per allineare i campi a sinistra/destra e formattare date, ore e numeri. Comprendere questi codici di formato stringa non è molto importante, in quanto non sono essenziali per la natura di questo script.
L'istruzione If è quella che determina se un oggetto è una directory o meno. Se il primo carattere dell'attributo Mode è "d", l'oggetto è una directory. È necessario verificare attentamente perché il codice per le directory è spesso diverso da quello per i file.
Si noti la riga $totalDirs++ all'interno dell'istruzione If. Si tratta di un contatore che tiene traccia del numero di directory. Analogamente, esiste una variabile $totalFiles che viene utilizzata per tenere traccia della dimensione totale di tutti i file. Questi valori vengono sempre calcolati durante l'esecuzione, ma vengono visualizzati solo al termine del processo di elencazione dei file.
ForEach ($i In $items)
{
$date = "{0, -20:MM/dd/yyyy hh:mm tt}" -f $i.LastWriteTime
$file = $i.Name
If ($i.Mode.SubString(0, 1) -eq "d")
{
$totalDirs++
$list = $date + " {0, -15}" -f "
" + " " + $file
}
Else
{
$totalFiles++
$size = "{0, 18:N0}" -f $i.Length
$list = $date + $size + " " + $file
}
$totalSize += $i.Length
Write-Host $list
}
Figura 4: Visualizza i dati di output dello script aggiornato.
DIR.PS1: Piè di pagina
L'unica cosa rimasta da fare è scrivere sullo schermo il numero totale di file, directory, la dimensione totale di tutti i file e lo spazio libero su questa partizione del disco. Per fare ciò, è necessario utilizzare le variabili contatore ($totalFiles, $totalDirs, $totalSize) create nella sezione precedente. È possibile scoprire la quantità di spazio libero dalla variabile $volInfo creata all'inizio dello script.
Write-Host ("{0, 16:N0}" -f $totalFiles + " File(s)" + `
"{0, 15:N0}" -f $totalSize + " bytes")
Write-Host ("{0, 16:N0}" -f $totalDirs + " Dir(s)" + `
"{0, 16:N0}" -f $volInfo.FreeSpace + " bytes free`n")
Figura 5: Visualizza i dati di output completi dello script.
Le previsioni e i miglioramenti possono essere
Sebbene lo script creato produca un output quasi identico al comando CMD.EXE DIR, ci sono alcune avvertenze di cui dovresti essere a conoscenza e alcuni miglioramenti che possono essere apportati.
È possibile utilizzare PowerShell per automatizzare praticamente qualsiasi cosa, come la ridenominazione in batch dei file per coerenza o l'avvio automatico delle applicazioni. Scriviamo alcuni semplici script di Windows PowerShell per vedere come funziona.
Nota : se si verifica un errore durante l'esecuzione dello script relativo alla policy di esecuzione, potrebbe essere necessario consentire temporaneamente l'esecuzione dello script eseguendo "Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass"
Rinomina in batch i file in una cartella
Puoi utilizzare PowerShell per copiare, spostare ed eliminare file sul tuo PC. Puoi anche rinominare file di uno specifico tipo in blocco. Ad esempio, ecco come puoi rinominare più file di testo sostituendo il prefisso "oldco" con "newco" nei nomi dei file:
Get-ChildItem -Path "C:\CompanyFiles" -Filter "*.txt" | Rename-Item -NewName {$_.Name -replace "oldco","newco"}
Nello script sopra, ".txt" è il filtro per l'estensione file. È possibile modificarlo e impostarlo su .jpg, .docx, ecc. per cercare diversi tipi di file.
Avvio automatico dell'applicazione
Se apri lo stesso set di applicazioni ogni giorno, puoi scrivere uno script di PowerShell per avviarle con un solo clic:
#Open multiple apps with a single click
Start-Process "notepad.exe"
Start-Process "calc.exe"
Start-Process "Chrome.exe"
Start-Process "slack.exe"
Incolla lo script in un file del Blocco note e salvalo come LaunchFavoriteApps.ps1. Quindi, fai doppio clic sul file per avviare tutte le app elencate nello script.
Copia i file importanti in una posizione di backup
È possibile eseguire periodicamente il backup dei file importanti in una posizione di backup utilizzando il seguente script. Assicurarsi di modificare i percorsi di origine e destinazione secondo necessità:
#Copy MyFiles folder contents to MyFilesBackup in D:\
Copy-Item -Path "C:\Documents\MyFiles" -Destination "D:\MyFilesBackup" -Recurse
Poiché ogni giorno vengono scaricati molti tipi di file, la cartella Download può rapidamente riempirsi di file di ogni tipo sparsi in giro. Per risolvere questo problema, possiamo scrivere uno script di PowerShell che ordini i file scaricati in cartelle in base al tipo di file alla fine di ogni giornata.
Apri un nuovo file del Blocco note e incolla il seguente script. Assicurati di modificare il percorso della cartella di origine nello script in modo che corrisponda al percorso della cartella Download:
# Change the source folder path below
$sourcePath = "E:\Downloads"
# Add file mapping folder names; the Others folder includes all the files that do not match file types in the other categories
$fileTypes = @{
"Documents" = @("*.docx", "*.pdf", "*.txt")
"Images" = @("*.jpg", "*.png", "*.gif")
"Media" = @("*.mp4", "*.mp3", "*.mov")
"Zip" = @("*.zip", "*.rar")
"ISO" = @("*.iso")
"Others" = @("*")
}
# Iterate through each folder type and prepare a destination folder for organizing files
foreach ($folder in $fileTypes.Keys) {
# Create the destination folder path
$destPath = Join-Path -Path $sourcePath -ChildPath $folder
# Check if the destination folder exists, and create it if it doesn't
if (!(Test-Path -Path $destPath)) {
New-Item -ItemType Directory -Path $destPath | Out-Null
}
# Move matching files from the source folder to the destination folder based on file type patterns
foreach ($pattern in $fileTypes[$folder]) {
Get-ChildItem -Path $sourcePath -Filter $pattern -File -ErrorAction SilentlyContinue | ForEach-Object {
try {
Move-Item -Path $_.FullName -Destination $destPath -Force -ErrorAction Stop
Write-Output "Moved: $($_.FullName) to $destPath"
} catch {
Write-Warning "Failed to move file: $($_.FullName). Error: $_"
}
}
}
}
Write-Output "Files organized successfully!"
Per salvare il file, clicca su File > Salva con nome e inserisci OrganizeDownloadsFolder.ps1 come nome del file. Quindi, clicca su Salva come tipo e seleziona Tutti i file . Fai doppio clic sul file OrganizeDownloadsFolder.ps1 per eseguire lo script.
Naturalmente, scrivere uno script è una parte del processo di automazione. La seconda parte consiste nell'assicurarsi che lo script possa essere eseguito automaticamente per svolgere l'attività. Per fare ciò, possiamo creare attività pianificate per eseguire lo script quotidianamente o secondo necessità.
Apri PowerShell, quindi copia e incolla lo script seguente e premi Invio . Assicurati di sostituire 'J:\OrganizeDownloadsFolder.ps1' con il percorso completo del file dello script OrganizeDownloadsFolder.ps1 .
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File 'J:\OrganizeDownloadsFolder.ps1'"
$trigger = New-ScheduledTaskTrigger -Daily -At "5:00 PM"
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "OrganizeDownloadsFolderDaily"
Una volta fatto, premi Invio . Lo script creerà un'attività pianificata in Utilità di pianificazione per eseguire lo script di organizzazione dei file ogni giorno alle 17:00. Se preferisci un orario diverso, puoi modificarlo nello script sopra.
Inoltre, puoi usare PowerShell per automatizzare altre attività quotidiane, come uno script di monitoraggio dello spazio che ti avvisa quando esaurisci lo spazio libero sull'unità principale, la protezione tramite password di batch di documenti PDF e persino l'applicazione di sfondi animati dalla cartella delle immagini.
Sebbene PowerShell sia un potente linguaggio di scripting e utility, comprenderlo e utilizzarlo richiede un po' di tempo, soprattutto se non si ha familiarità con l'ambiente .NET Framework. Spero che questo articolo e lo script di esempio siano utili a chiunque voglia comprendere PowerShell. Tuttavia, lo script di esempio creato nell'articolo è piuttosto semplice. Credo che possa essere compilato e sviluppato in modo più completo per supportare applicazioni più complesse.
Esistono molti modi per visualizzare la configurazione del tuo computer e del tuo laptop.
I tasti funzione Fn consentono di controllare alcune funzionalità hardware in modo più rapido e semplice.
Questo indicatore fuori posto solitamente significa che la crittografia BitLocker è stata disabilitata, che un aggiornamento richiede un riavvio o che è in sospeso un aggiornamento del firmware.
Per aprire Proprietà del computer (o Proprietà del sistema) su Windows 10, puoi utilizzare uno dei 6 metodi seguenti.
Se blocchi correttamente la tua rete Wi-Fi per gli ospiti, puoi condividere la tua connessione Internet con tutti i visitatori senza dover condividere altre informazioni.
In questo articolo, WebTech360 ti guiderà su come disattivare il firewall su Windows 11.
Quando hai comprato il tuo primo computer, si avviava in pochi secondi e funzionava alla grande. Ma col tempo le cose sono cambiate.
Questo documento riguarda l'eliminazione dei file .tmp, non come cancellare la cronologia di Internet o la cache del browser.
Puoi disattivare le app in background di Windows 11 per ottimizzare le prestazioni, risparmiare batteria e ridurre il consumo di RAM.
Installare una VPN contribuirà a rendere più sicuro il tuo computer Windows 11.
Windows offre numerose utili opzioni di accessibilità, ideali per personalizzare l'interfaccia del PC, migliorare il comfort e persino utilizzare le funzioni completamente a mani libere.
In Windows 10, Microsoft ha integrato una nuova applicazione chiamata Impostazioni. Questa applicazione è un'applicazione Metro creata da Microsoft per sostituire la classica applicazione Pannello di controllo.
Le cartelle di grandi dimensioni sul sistema sono tra i responsabili del consumo di molto spazio. Molte cartelle create dopo essere state eliminate, riappaiono dopo un po'. Forse si tratta di cartelle spazzatura che si tenta di rimuovere.
Se il server DNS predefinito fornito dal tuo ISP ti sembra lento, non sicuro o affidabile, non è necessario utilizzarlo. Ecco come modificare le impostazioni del server DNS sul tuo computer Windows 11.
GodeMode si chiama Shortcut Windows Master Control Panel. GodMode (o God Mode) è un pannello di controllo che consente di configurare e accedere a tutto il sistema operativo Windows.
Esistono molti modi per visualizzare la configurazione del tuo computer e del tuo laptop.
I tasti funzione Fn consentono di controllare alcune funzionalità hardware in modo più rapido e semplice.
Questo indicatore fuori posto solitamente significa che la crittografia BitLocker è stata disabilitata, che un aggiornamento richiede un riavvio o che è in sospeso un aggiornamento del firmware.
Per aprire Proprietà del computer (o Proprietà del sistema) su Windows 10, puoi utilizzare uno dei 6 metodi seguenti.
Se blocchi correttamente la tua rete Wi-Fi per gli ospiti, puoi condividere la tua connessione Internet con tutti i visitatori senza dover condividere altre informazioni.
In questo articolo, WebTech360 ti guiderà su come disattivare il firewall su Windows 11.
Quando hai comprato il tuo primo computer, si avviava in pochi secondi e funzionava alla grande. Ma col tempo le cose sono cambiate.
Questo documento riguarda l'eliminazione dei file .tmp, non come cancellare la cronologia di Internet o la cache del browser.
Puoi disattivare le app in background di Windows 11 per ottimizzare le prestazioni, risparmiare batteria e ridurre il consumo di RAM.
Installare una VPN contribuirà a rendere più sicuro il tuo computer Windows 11.
Windows offre numerose utili opzioni di accessibilità, ideali per personalizzare l'interfaccia del PC, migliorare il comfort e persino utilizzare le funzioni completamente a mani libere.
In Windows 10, Microsoft ha integrato una nuova applicazione chiamata Impostazioni. Questa applicazione è un'applicazione Metro creata da Microsoft per sostituire la classica applicazione Pannello di controllo.
Le cartelle di grandi dimensioni sul sistema sono tra i responsabili del consumo di molto spazio. Molte cartelle create dopo essere state eliminate, riappaiono dopo un po'. Forse si tratta di cartelle spazzatura che si tenta di rimuovere.
Se il server DNS predefinito fornito dal tuo ISP ti sembra lento, non sicuro o affidabile, non è necessario utilizzarlo. Ecco come modificare le impostazioni del server DNS sul tuo computer Windows 11.
GodeMode si chiama Shortcut Windows Master Control Panel. GodMode (o God Mode) è un pannello di controllo che consente di configurare e accedere a tutto il sistema operativo Windows.