När jag skriver PowerShell-skript har jag ofta funnit att jag behöver referera till datumet. Till exempel har jag ibland skrivit skript som drar Windows händelseloggar från ett visst datum eller skript som arkiverar åldrande data baserat på det datum då en fil skapades. Det är bara ett par exempel på hur datumet kan behöva refereras inom ett PowerShell-skript., I den här artikeln vill jag visa dig några knep för att arbeta med datum i PowerShell.

hämta datum

det är enkelt att göra PowerShell visa aktuellt datum. För att göra det, skriv bara in Get-Date cmdlet. Om du behöver visa datumet på ett visst sätt, erbjuder PowerShell ett antal olika alternativ för att göra det. Den enklaste metoden är att använda en displaytips. Parametern DisplayHint kan ställas in på datum, tid eller DateTime. Bilden nedan visar hur de grundläggande Get-Date cmdlet fungerar, och några exempel på att använda DisplayHint parameter.,

om du behöver lite mer kontroll över utmatningen kan du använda Formatparametern eller uformat-parametern. Formatparametern används oftast när du behöver sätta datumet i ett visst format för att göra en jämförelse. Vi kommer inte att använda parametern Format i den här artikeln, men det är fortfarande en bra idé att vara medveten om dess existens.

uformat-parametern används mer för visning. Det låter dig ordna de olika elementen som utgör datum och tid på ett sätt som du väljer., Allt du behöver göra är att lägga till olika formateringstecken till parametern uformat. De parametrar som du kan använda inkluderar:

%m-månad (som ett tal)
%d — datum
%Y — år
%a — veckodagen
%Z — tidszonen, uttryckt som en förskjutning från UTC eller Zulu tid. Till exempel är -5 Östlig tid i USA.

Du kan se ett exempel nedan på hur uformat-parametern fungerar.

det finns två saker som är värda att uppmärksamma i bilden ovan. Först kommer du att märka att allt som följer uformat-parametern är inneslutet i citattecken., Detta beror på att jag inte bara anger formateringstecken, jag kan också använda text. I figuren använde jag en blandning av text och formateringstecken.

det andra att märka är att även om jag bor på USA: s östkust, som normalt har en tidszonförskjutning på -5, visar produktionen i figuren ovan förskjutningen som -4. Detta beror på att det är sommartid. Men skulle det inte vara trevligt att kunna verifiera det? Det kan vi faktiskt. Så här gör du:

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

som du kan se i bilden nedan visar PowerShell ett värde av Sant, vilket indikerar att det verkligen är sommartid.

hur är det med årets dag?

Vi kan också använda PowerShell för att berätta vilken dag på året det är. Så här fungerar det:

$a=Get-Date
$A. DayOfYear

om du verkligen vill göra saker intressanta kan du dock ange ett datum för att ta reda på vilken dag på året det datumet faller på. Det datum du anger kan vara tidigare eller framtida. Här är ett exempel:

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

Du kan se ett par exempel i bilden nedan.

gör datumjämförelser

som jag sa tidigare är det möjligt att använda PowerShell för att göra datumjämförelser. Även om du kan använda-Formatparametern för att sätta datumet i ett visst format innan du jämför det med ett annat värde, är det inte alltid nödvändigt att göra det. Till exempel kräver jämförelse av filskrivdatum inte användning av någon speciell formatering.,

låt oss för ett ögonblick anta att du ville jämföra den senaste skrivtiden för en viss fil till ett datum och tid för att du väljer att se om filen skrevs till mer nyligen än det angivna datumet.

i en situation som denna är det första vi måste göra att kartlägga vårt måldatum till en variabel. För demonstrationens skull kommer jag att kartlägga 2 januari 2017 (vilket är ett slumpmässigt datum) till variabeln a$. Jag kommer sedan att kartlägga en viss fil till en variabel, som jag kommer att ringa X$. Det kommer då att vara möjligt att göra jämförelser mellan de två., Så här är de kommandon som jag ska använda:

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

den första raden av kod kartlägger $a-variabeln till 2 januari 2017. Nästa rad verifierar helt enkelt att variabeln innehåller önskat datum. Den tredje raden av kod kartlägger $ X-variabeln till en fil som heter ReadMe.txt. Den fjärde raden visar den sista skrivtiden för filen. Den sista raden av kod gör en jämförelse mellan de två datumen., Det kommer att visa sant är filen skrevs mer nyligen än 2 januari 2017. Annars kommer det att visa ett värde av falskt. Skärminspelningen nedan visar detta i åtgärd. Du kommer också att märka att jag har lagt till en annan rad för att kontrollera om filens senaste skrivtid är äldre än (- LT) 2 januari 2017. Att göra två separata jämförelser gör det möjligt att se att jämförelsen verkligen gör vad den ska göra.,

datum i PowerShell: mer att lära sig

PowerShell faktiskt kan du göra mycket mer när det gäller datum formatering och jämförelser än vad jag har talat om i den här artikeln. Om du vill veta mer om att använda datum i PowerShell, är ett bra ställe att börja Microsofts dokumentation för Get-Date cmdlet.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *