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 cmdlet
Get-Member
per trovare tutte le proprietà dell’oggetto eseguendo ancheGet-Date | Get-Member -MemberType Properties
.,
Se controlli il tipo di oggettoGet-Date
restituisce, 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ù.
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-Date
non 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 UFormat
con 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 Y
caratteri 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.
Lascia un commento