Når jeg skriver PowerShell-scripts, har jeg ofte konstateret, at jeg har brug for at henvise til en dato. For eksempel har jeg lejlighedsvis skrevet scripts, der trækker eventindo .s-hændelseslogfiler fra en bestemt dato eller scripts, der arkiverer aldringsdata baseret på datoen, hvor en fil blev oprettet. Det er blot et par eksempler på, hvordan datoen muligvis skal henvises til i et Po .ershell-script., I denne artikel vil jeg vise dig et par tricks til at arbejde med datoer i Po .ershell.

hentning af datoen

det er nemt at få Po .ershell til at vise den aktuelle dato. For at gøre det, skal du blot indtaste Get-Date cmdlet. Hvis du har brug for at vise datoen på en bestemt måde, tilbyder Po .ershell en række forskellige muligheder for at gøre det. Den enkleste metode er at bruge et display tip. DisplayHint-parameteren kan indstilles til dato, tid eller DateTime. Billedet nedenfor viser, hvordan den grundlæggende Get-Date cmdlet fungerer, og et par eksempler på brug af DisplayHint-parameteren.,

Hvis du har brug for lidt mere kontrol over output, kan du bruge Formatparameteren eller UFormat-parameteren. Formatparameteren bruges mest, når du har brug for at sætte datoen i et bestemt format med det formål at foretage en sammenligning. Vi bruger ikke Formatparameteren i denne artikel, men det er stadig en god ide at være opmærksom på dens eksistens.

UFormat-parameteren bruges mere til visningsformål. Det giver dig mulighed for at arrangere de forskellige elementer, der udgør dato og klokkeslæt på en måde, du vælger., Alt hvad du skal gøre er at tilføje forskellige formateringstegn til UFormat-parameteren. De parametre, du kan bruge, Inkluderer:

%m — måned (som et tal)
%d — Dato
%Y — år
%a — ugedagen
%. — tids .onen, udtrykt som en forskydning fra UTC eller .ulu-tid. For eksempel er -5 Eastern Time i USA.

Du kan se et eksempel nedenfor på, hvordan UFormat-parameteren fungerer.

der er to ting, der er værd at være opmærksomme på i billedet ovenfor. For det første vil du bemærke, at alt efter UFormat-parameteren er vedlagt anførselstegn., Dette skyldes, at jeg ikke kun specificerer formateringstegn, jeg kan også bruge tekst. I figuren brugte jeg en blanding af tekst og formatering tegn.den anden ting at bemærke er, at selvom jeg bor på USAs østkyst, som normalt har en tids offsetoneforskydning på -5, viser outputtet i figuren ovenfor offset som -4. Dette skyldes, at det er sommertid. Men ville det ikke være rart at kunne bekræfte det? Det kan vi faktisk. Her er hvordan det gøres:

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

som du kan se på billedet nedenfor, viser Po .ershell en værdi af True, hvilket indikerer, at det faktisk er sommertid.

hvad med årets dag?

Vi kan også bruge Po .ershell til at fortælle os, hvilken dag i året det er. Sådan fungerer det:

$a=Get-Date
$A. DayOfYear

Hvis du virkelig ønsker at gøre tingene interessante, kan du dog angive en dato for at finde ud af, hvilken dag i året den dato falder på. Den dato, du angiver, kan være fortid eller fremtid. Her er et eksempel:

Get-Date-år 2018-måned 8-Daye 22).,DayOfYear

Du kan se et par eksempler på billedet nedenfor.

gør datosammenligninger

som jeg sagde tidligere, er det muligt at bruge Po .ershell til at lave datosammenligninger. Selvom du kan bruge parameteren-Format til at sætte datoen i et bestemt format, før du sammenligner den med en anden værdi, er det ikke altid nødvendigt at gøre det. For eksempel kræver sammenligning af filskrivningsdatoer ikke brug af nogen speciel formatering.,

lad os antage et øjeblik, at du ønskede at sammenligne den sidste skrivetid for en bestemt fil med en dato og klokkeslæt, du valgte, for at se, om filen blev skrevet til mere for nylig end den angivne dato.

i en situation som denne er det første, vi skal gøre, at kortlægge vores måldato til en variabel. Af hensyn til demonstrationen vil jeg kortlægge 2. januar 2017 (som er en tilfældig dato) til variablen a$. Jeg vil derefter kortlægge en bestemt fil til en variabel, som jeg vil kalde$$. Det vil derefter være muligt at foretage sammenligninger mellem de to., Så her er de kommandoer, jeg skal bruge:

$a = (Get-Date-år 2017-måned 01-Dag 02)
$a
$. = Get-ChildItem Readme.t .t
$ $. last .ritetime
$ $. last .ritetime-GT $a

den første linje med kode kortlægger $a-variablen til 2.januar 2017. Den næste linje kontrollerer blot, at variablen indeholder den ønskede dato. Den tredje kodelinje kortlægger $ variable-variablen til en fil med navnet ReadMe.t .t. Den fjerde linje viser den sidste skrivetid for filen. Den sidste kodelinje gør en sammenligning mellem de to datoer., Det vil vise sandt er filen blev skrevet for nylig end januar 2, 2017. Ellers vil det vise en værdi af falsk. Skærmbilledet nedenfor viser dette i aktion. Du vil også bemærke, at jeg har tilføjet en anden linje for at kontrollere, om filens sidste skrivetid er ældre end (-LT) januar 2, 2017. At lave to separate sammenligninger gør det muligt at se, at sammenligningen virkelig gør, hvad den skal gøre.,

Datoer i PowerShell: Mere at lære

PowerShell faktisk giver dig mulighed for at gøre langt mere med hensyn til dato formatering og sammenligninger, end hvad jeg har talt om i denne artikel. Hvis du gerne vil lære mere om brug af datoer i Po .ershell, er et godt sted at starte Microsofts dokumentation for Get-Date cmdlet.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *