Quando scrivo script PowerShell, ho spesso scoperto che ho bisogno di fare riferimento alla data. Ad esempio, ho scritto occasionalmente script che estraggono i registri eventi di Windows da una data particolare o script che archiviano i dati di invecchiamento in base alla data in cui è stato creato un file. Questi sono solo un paio di esempi di come potrebbe essere necessario fare riferimento alla data all’interno di uno script PowerShell., In questo articolo, voglio mostrarti alcuni trucchi per lavorare con le date in PowerShell.

Recupero della data

È semplice far visualizzare a PowerShell la data corrente. Per fare ciò, basta inserire il cmdlet Get-Date. Se è necessario visualizzare la data in un certo modo, PowerShell offre una serie di opzioni diverse per farlo. Il metodo più semplice consiste nell’utilizzare un suggerimento di visualizzazione. Il parametro DisplayHint può essere impostato su Data, Ora o DateTime. L’immagine seguente mostra come funziona il cmdlet Get-Date di base e alcuni esempi di utilizzo del parametro DisplayHint.,

Se hai bisogno di un po ‘ più di controllo sull’output, puoi usare il parametro Format o il parametro UFormat. Il parametro Format viene utilizzato principalmente quando è necessario inserire la data in un determinato formato allo scopo di effettuare un confronto. Non useremo il parametro Format in questo articolo, ma è comunque una buona idea essere consapevoli della sua esistenza.

Il parametro UFormat viene utilizzato più per scopi di visualizzazione. Esso consente di organizzare i vari elementi che compongono la data e l’ora in un modo di vostra scelta., Tutto quello che devi fare è aggiungere vari caratteri di formattazione al parametro UFormat. I parametri che puoi usare includono:

%M — Mese (come numero)
%D — Data
%Y — Anno
%A — Il giorno della settimana
%Z — Il fuso orario, espresso come offset dall’ora UTC o Zulu. Ad esempio, -5 è l’ora orientale negli Stati Uniti.

Puoi vedere un esempio di come funziona il parametro UFormat.

Ci sono due cose a cui vale la pena prestare attenzione nell’immagine sopra. Innanzitutto, noterai che tutto ciò che segue il parametro UFormat è racchiuso tra virgolette., Questo perché non sto solo specificando i caratteri di formattazione, posso anche usare il testo. Nella figura, ho usato una miscela di testo e caratteri di formattazione.

L’altra cosa da notare è che anche se vivo sulla costa orientale degli Stati Uniti, che normalmente ha un offset del fuso orario di -5, l’output nella figura sopra mostra l’offset come -4. Questo perché è l’ora legale. Ma non sarebbe bello essere in grado di verificare che? Possiamo davvero. Ecco come è fatto:

A A = Get-Date
A A.,IsDaylightSavingTime()

Come puoi vedere nell’immagine qui sotto, PowerShell mostra un valore di True, indicando che si tratta effettivamente dell’ora legale.

Che dire del giorno dell’anno?

Possiamo anche usare PowerShell per dirci che giorno dell’anno è. Ecco come funziona:

A A=Get-Date
Day A. DayOfYear

Se vuoi davvero rendere le cose interessanti, puoi specificare una data per scoprire in quale giorno dell’anno cade quella data. La data specificata può essere passata o futura. Ecco un esempio:

Get-Date-Year 2018-Month 8-Daye 22).,DayOfYear

Puoi vedere un paio di esempi nell’immagine qui sotto.

Fare confronti di data

Come ho detto prima, è possibile utilizzare PowerShell per fare confronti di data. Sebbene sia possibile utilizzare il parametro-Format per inserire la data in un formato specifico prima di confrontarla con un altro valore, non è sempre necessario farlo. Ad esempio, il confronto delle date di scrittura dei file non richiede l’uso di alcuna formattazione speciale.,

Supponiamo per un momento di voler confrontare l’ultima ora di scrittura per un particolare file con una data e un’ora di tua scelta per vedere se il file è stato scritto più recentemente della data specificata.

In una situazione come questa, la prima cosa che dobbiamo fare è mappare la nostra data di destinazione a una variabile. Per motivi di dimostrazione, mapperò il 2 gennaio 2017 (che è una data casuale), alla variabile A$. Quindi mapperò un particolare file a una variabile, che chiamerò X$. Sarà quindi possibile effettuare confronti tra i due., Quindi ecco i comandi che userò:

= A = (Get-Date-Year 2017-Month 01-Day 02)
A A
X X = Get-ChildItem Readme.txt
X X. LastWriteTime
X X. LastWriteTime-GT

La prima riga di codice mappa la variabile$A al 2 gennaio 2017. La riga successiva verifica semplicemente che la variabile contenga la data desiderata. La terza riga di codice mappa la variabile X X in un file chiamato ReadMe.txt. La quarta riga visualizza l’ultimo tempo di scrittura per il file. La riga finale di codice fa un confronto tra le due date., Mostrerà Vero è che il file è stato scritto più di recente rispetto al 2 gennaio 2017. Altrimenti, mostrerà un valore di False. La cattura dello schermo qui sotto mostra questo in azione. Noterai anche che ho aggiunto un’altra riga per verificare se l’ultimo tempo di scrittura del file è precedente a (-LT) 2 gennaio 2017. Fare due confronti separati rende possibile vedere che il confronto sta davvero facendo quello che dovrebbe fare.,

Date in PowerShell: Più da imparare

PowerShell in realtà permette di fare molto di più per quanto riguarda la formattazione della data e confronti di quello che ho parlato in questo articolo. Se vuoi saperne di più sull’utilizzo delle date in PowerShell, un buon punto di partenza è la documentazione di Microsoft per il cmdlet Get-Date.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *