Når jeg skriver PowerShell-skript, jeg har ofte funnet ut at jeg må referanse dato. For eksempel, jeg har tidvis skrevet manus som trekker Windows event logger fra en bestemt dato eller skript som arkiv aldring data basert på datoen da filen ble opprettet. De er bare et par eksempler på hvordan datoen må være referert i en PowerShell-skript., I denne artikkelen vil jeg vise deg noen triks for å jobbe med datoer i PowerShell.
Hente dato
Det er enkelt å gjøre PowerShell vise gjeldende dato. For å gjøre dette, skriver du bare inn det Få-Dato-cmdleten. Hvis du trenger å vise dato på en bestemt måte, så PowerShell tilbyr en rekke ulike alternativer for å gjøre det. Den enkleste metoden er å bruke en skjerm hint. Den DisplayHint parameteren kan settes til Dato, Tid eller DateTime. Bildet nedenfor viser hvordan de grunnleggende Få Oppdatert cmdlet fungerer, og noen eksempler på bruk av DisplayHint parameter.,
Hvis du trenger litt mer kontroll over produksjonen, kan du bruke Formatet parameter eller UFormat parameter. Formatet parameteren er for det meste brukes når du trenger å sette av datoen i et bestemt format for å kunne foreta en sammenligning. Vi vil ikke bruke Format-parameteren i denne artikkelen, men det er fortsatt en god idé å være klar over dens eksistens.
UFormat parameteren brukes mer for å vise formål. Den lar deg organisere de ulike elementene som utgjør dato og tid på en måte som du velger., Alt du trenger å gjøre er å legge ulike formatering av tegn til UFormat parameter. De parametere som du kan bruke er:
%M — Måned (som et tall)
%D — Dato
%Y — År
%A — dagen i uken
%Z — tidssonen, uttrykt som en forskyvning fra UTC eller Zulu tid. For eksempel, -5 er Øst-Tiden i Usa.
Du kan se et eksempel nedenfor av hvordan de UFormat parameteren fungerer.
Det er to ting som er verdt å betale oppmerksomhet til i bildet over. Først, vil du merke at alt etter UFormat parameteren er i anførselstegn., Dette er fordi jeg er ikke bare å angi formatering av tegn, kan jeg også bruke tekst. I figur, jeg brukte en blanding av tekst og formatering av tegn.
Den andre tingen å merke seg er at selv om jeg bor på østkysten av Usa, som normalt har en tidssone forskyvning av -5, utgang i figuren over viser offset as -4. Dette er fordi det er sommertid. Men ville ikke det være fint å være i stand til å kontrollere det? Vi kan faktisk. Her er hvordan det gjøres:
$A=Get-Date
$A.,IsDaylightSavingTime()
Som du kan se i bildet nedenfor, PowerShell viser verdien True, noe som indikerer at det er faktisk sommer / vintertid.
Hva om dagen i året?
Vi kan også bruke PowerShell for å fortelle oss hvilken dag i året det er. Her er hvordan det fungerer:
$A=Get-Date
$A. DayOfYear
Hvis du virkelig ønsker å gjøre ting som er interessant, kan du angi en dato for å finne ut hvilken dag i året, som dato faller på. Den dato som du kan angi være i fortiden eller fremtiden. Her er et eksempel:
Komme-Dato -År 2018 -Måned 8 -Daye 22).,DayOfYear
Du kan se et par eksempler på bildet nedenfor.
Gjør dato sammenligninger
Som jeg sa tidligere, det er mulig å bruke PowerShell for å gjøre dato sammenligninger. Selv om du kan bruke den -Format parameter for å sette dato i et bestemt format før å sammenligne det til en annen verdi, gjøre det er ikke alltid nødvendig. For eksempel sammenligne filen skrive datoer krever ikke bruk av noen spesiell formatering.,
La oss anta at for et øyeblikk at du ønsket å sammenligne sist skrive tid for en bestemt fil til en dato og klokkeslett som du velger for å se om filen ble skrevet til mer nylig enn den angitte dato.
I en situasjon som dette, er det første vi må gjøre er å kartlegge våre mål dato til en variabel. For å få til demonstrasjon, jeg vil kartet januar 2, 2017 (som er en tilfeldig dato), til En variabel$. Jeg vil deretter tilordne en bestemt fil til en variabel, som jeg vil kalle X$. Det vil da være mulig å gjøre sammenligninger mellom de to., Så her er de kommandoene som jeg kommer til å bruke:
$A = (Få-Dato -År 2017 -Måned 01 -Dag 02)
$A
$X = Get-ChildItem Viktig.txt
$X. LastWriteTime
$X. LastWriteTime -GT $A
Den første linjen med kode kart $En variabel til 2. januar 2017. Neste linje bare bekrefter at variabelen inneholder ønsket dato. Den tredje linjen med kode kart $X-variabel til en fil som heter Viktig.txt. Den fjerde linjen viser den siste skrive tid for filen. Den siste linjen med kode som gjør en sammenligning mellom to datoer., Det vil vise Sann er den filen ble skrevet mer nylig enn 2. januar 2017. Ellers, vil det vise en verdi av Falske. Skjermen capture nedenfor viser dette i handling. Du vil også legge merke til at jeg har lagt til en annen linje for å sjekke for å se om filen er sist skrive tid er eldre enn (-LT) januar 2, 2017. Gjør to separate sammenligninger gjør det mulig å se at sammenligningen virkelig gjør det den er ment å gjøre.,
Datoer i PowerShell: Mer å lære
PowerShell faktisk lar deg gjøre langt mer med hensyn til dato for formatering og sammenligninger enn det jeg har snakket om i denne artikkelen. Hvis du ønsker å lære mer om bruk av datoer i PowerShell, et godt sted å starte er Microsofts dokumentasjon for Get-Date-cmdleten.