PowerShell può fare molte cose e, come ogni buon linguaggio di programmazione, può fare qualsiasi cosa tu voglia con le date. Usando il comando PowerShell Get-Date e altre tecniche, puoi trovare la data di oggi, la data di domani, le date di formato e molto altro ancora.

In questo articolo, si sta andando a imparare tutto su date e PowerShell!,

Sommario

Prerequisiti

A seguire gli esempi in questo articolo, si prega di assicurarsi di avere i seguenti prerequisiti incontrato prima del tempo:

  • Windows PowerShell v5 o superiore – Anche se si sta utilizzando una versione precedente, tutti gli esempi saranno probabilmente ancora funzionare bene.

Trovare la data corrente con PowerShell

Uno dei modi più semplici per scoprire la data corrente con PowerShell è utilizzando il cmdletGet-Date. Questo comando visualizza la data e l’ora correnti come mostrato di seguito.,

PS> Get-DateSunday, November 22, 2020 1:25:57 AM

Per impostazione predefinita,Get-Date sembra che restituisca solo la data e l’ora correnti ma, in realtà, restituisce molte più informazioni. Per trovare queste informazioni pipe l’output al cmdletFormat-List come mostrato di seguito.

È inoltre possibile utilizzare il cmdletGet-Memberper trovare tutte le proprietà dell’oggetto eseguendo ancheGet-Date | Get-Member -MemberType Properties.,

Se controlli il tipo di oggettoGet-Daterestituisce, noterai che è un tipo di oggettoSystem.DateTime. Questa classe è ciò che espone tutte le diverse proprietà e metodi che vedi. Puoi scoprire il suo tipo di oggetto usandoGet-Member o usandoGetType() come mostrato di seguito.

PS> (Get-Date).GetType().FullNameSystem.DateTime

Una volta visualizzate tutte le proprietà disponibili, è possibile fare riferimento con la notazione a punti come mostrato di seguito.,

PS> (Get-Date).Year2020PS> (Get-Date).DayOfWeekSundayPS> (Get-Date).Month11PS> (Get-Date).DayOfYear327

La notazione dei punti è un po ‘ troppo “devvy” per te? In tal caso, è anche possibile utilizzare il parametro DisplayHint per ottenere lo stesso risultato.

Usare Get-Date è il modo più semplice per trovare la data corrente e vari attributi, ma puoi fare molto di più!

Data aritmetica con PowerShell

Diciamo che è necessario conoscere la data e/o l’ora di un certo numero di giorni, anni o minuti in passato o in futuro. È possibile trovare queste informazioni utilizzando metodi.,

Usando i metodi DateTime

L’oggettoSystem.DateTime cheGet-Date restituisce ha vari metodi che puoi invocare per aggiungere o rimuovere blocchi di tempo. Se esegui Get-Date | Get-Member, vedrai vari metodi che iniziano con Add.

AddDays Method datetime AddDays(double value)AddHours Method datetime AddHours(double value)AddMilliseconds Method datetime AddMilliseconds(double value)AddMinutes Method datetime AddMinutes(double value)AddMonths Method datetime AddMonths(int months)AddSeconds Method datetime AddSeconds(double value)AddTicks Method datetime AddTicks(long value)AddYears Method datetime AddYears(int value)

È possibile chiamare ciascuno di questi metodi per trovare una data / ora nel futuro o nel passato. Di seguito vedrai alcuni esempi di invocare ciascuno di questi metodi e il loro output.,

Usando New-Timespan

Cosa succede se si desidera conoscere la differenza tra due date; non solo aggiungendo un numero specifico di blocchi temporali? Un modo per farlo è usare il cmdletNew-Timespan. Il cmdletNew-Timespan generaTimeSpan oggetti che rappresentano differenze di data/ora o intervalli.

Utilizzare il cmdletNew-TimeSpan fornendo unStart eEnd data / ora come parametri., Ad esempio, se desideri trovare la differenza tra il 23 novembre 2020 a mezzanotte e il 31 dicembre 2020 a mezzanotte, puoi utilizzare il seguente frammento di codice.

Usando TimeSpan oggetti, puoi trovare differenze di data/ora in quasi tutti gli incrementi che desideri.

Confronto delle date

Non solo è possibile trovare differenze in date e orari, ma è anche possibile confrontarle utilizzando gli operatori PowerShell standard. PowerShell sa quando una data è “minore di” (precedente a) o “maggiore di” (successiva a) un’altra data.,

Per confrontare le date, è sufficiente creare due DateTime oggetti utilizzando Get-Date o forse da casting stringhe con e quindi l’utilizzo di standard di PowerShell operatori come lt o gt.

Puoi vedere un semplice esempio di confronto delle date di seguito.

#Declaring the datePS> $Date1 = (Get-Date -Month 11 -Day 14 -Year 2020)PS> $Date2 = Get-DatePS> $Date1 -lt $Date2True

Conversione di stringhe (Casting) in oggetti DateTime

PowerShell può anche visualizzare le date in vari formati., Ad esempio, supponiamo che tu abbia un file CSV o un foglio di calcolo con varie date definite nel formato che vedi sotto nella colonna date_time_utc. Il formato è attualmente YYYY-MM-DDThh:mm:ss.0000000Z.

Vuoi analizzare questo file e trovare tutte le righe con una data di sette giorni o più.

Formato Data di Esempio

PowerShell, per impostazione predefinita, non sa che 2020-09-07T13:35:08.4780000Z la data e l’ora; si pensa che si tratta di una semplice stringa., Per far capire PowerShell, devi prima convertirlo in unDateTime oggetto comeGet-Date restituisce.

Per lanciare una stringa su un oggetto DateTime, prefazione della stringa (o variabile) con . Quando si esegue questa operazione, PowerShell tenta di interpretare la stringa come data e ora, quindi fornisce tutte le proprietà e i metodi disponibili su questo tipo di oggetto.,

PS> $Date = "2020-09-07T13:35:08.4780000Z"PS> $DateMonday, September 07, 2020 1:35:08 PM

PowerShell Data Formatting

Ora che siete a conoscenza dei metodi di base di utilizzare le date, è il momento di approfondire l’argomento. Giochiamo un po ‘ di più utilizzando diversi formati per visualizzare le date.

Ogni volta che eseguiGet-Date, vedrai un output comeMonday, September 07, 2020 1:35:08 PM. Questo output è in realtà un oggettoDateTime con proprietà e metodi; non una semplice stringa., Tuttavia, è possibile convertire questo oggetto DateTime in una stringa e rappresentarlo in modo diverso utilizzando vari metodi di formattazione della data.

Metodi DateTime

Un modo per modificare la visualizzazione di un oggettoDateTime è quello di utilizzare i metodi sull’oggettoDateTime., DateTime oggetto ha quattro metodi che è possibile utilizzare per modificare la formattazione:

  • ToLongDateString()
  • ToShortDateString()
  • ToLongTimeString()
  • ToShortTimeString()

È possibile vedere un esempio di utilizzo di ToShortDateString() e ToShortTimeString() metodi riportati di seguito.,

PS> $Date = $DatePS> $date.ToShortDateString() + " " + $date.ToShortTimeString()9/7/2020 7:05 PM

Il Parametro Format

Un modo per modificare il formato della data di un DateTime oggetto utilizzando Get-Date per generare l’oggetto e il Format parametro per cambiare il formato. Il parametroFormat accetta una stringa di caratteri ciascuno che rappresenta l’aspetto di una stringa data/ora.

Puoi vedere alcuni esempi dei caratteri che puoi usare con il parametro Format.,

Controlla la documentazione Microsoft per una ripartizione completa di tutti i caratteri che è possibile utilizzare con il Format parametro.

Vedrai non appena usi il parametro Format, Get-Datenon restituisce più un oggetto DateTime ma ora stringa una stringa.,

PS> (Get-Date -Format D).GetType().FullNameSystem.String

Il parametro UFormat

Simile al parametro Format, hai anche un parametro UFormatcon il Get-Date cmdlet. Il parametroUFormat consente di definire i formati di data utilizzando la formattazione della data UNIX.

Il parametroUFormat è simile al parametroFormat in quanto è possibile combinare i caratteri del formato della data per modificare il modo in cui la data viene restituita come stringa. Ad esempio, prova i seguenti formati e scopri cosa viene restituito.,

PS> Get-Date -UFormat %APS> Get-Date -UFormat %bPS> Get-Date -UFormat %B

È anche possibile combinare questi caratteri in formato data. Il frammento di codice riportato di seguito utilizza il d m e Ycaratteri per restituire la data nel formato dd-mm-yyyy and usa r carattere di restituire il tempo di formato a 12 ore utilizzando il fuso orario t carattere.

PS> Get-Date -UFormat "%d-%m-%Y %r %Z"22-11-2020 06:10:55 PM +05

Controllare la documentazione Microsoft per una ripartizione completa di tutti i caratteri che è possibile utilizzare con il UFormat parametro.