Když jsem se napsat PowerShell skripty, často jsem zjistil, že potřebuji, aby se odkaz na datum. Například jsem občas napsal skripty, které stahují protokoly událostí systému Windows z určitého data nebo skripty, které archivují data stárnutí na základě data vytvoření souboru. To je jen několik příkladů toho, jak může být třeba odkazovat na datum v rámci skriptu PowerShell., V tomto článku vám chci ukázat několik triků pro práci s daty v PowerShell.
načítání data
je jednoduché, aby PowerShell zobrazoval aktuální datum. Chcete-li tak učinit, stačí zadat get-Date cmdlet. Pokud potřebujete zobrazit datum určitým způsobem, pak PowerShell nabízí řadu různých možností. Nejjednodušší metodou je použití nápovědy displeje. Parametr DisplayHint lze nastavit na datum, čas nebo DateTime. Obrázek níže ukazuje, jak funguje základní get-Date cmdlet, a několik příkladů použití parametru DisplayHint.,
Pokud potřebujete trochu větší kontrolu nad výstupem, můžete použít parametr formát nebo parametr UFormat. Parametr formátu se většinou používá, když potřebujete Datum vložit do určitého formátu za účelem srovnání. V tomto článku nebudeme používat parametr formátu, ale je stále dobré si uvědomit jeho existenci.
parametr UFormat se používá více pro účely zobrazení. To vám umožní uspořádat různé prvky, které tvoří datum a čas způsobem podle vašeho výběru., Jediné, co musíte udělat, je připojit různé formátovací znaky k parametru UFormat. Parametry, které můžete použít, patří:
%M — Měsíc (jako číslo)
%D — Datum
%Y — Rok
%A — den V týdnu
%Z — časová zóna, vyjádřená jako posun od UTC nebo Zulu time. Například -5 je východní čas ve Spojených státech.
níže vidíte příklad fungování parametru UFormat.
Na obrázku výše stojí za to věnovat pozornost dvěma věcem. Nejprve si všimnete, že vše, co následuje po parametru UFormat, je uzavřeno v uvozovkách., Je to proto, že nejen specifikuji formátovací znaky, ale mohu také použít text. Na obrázku jsem použil směs textových a formátovacích znaků.
další věc, kterou musíte vědět je, že i když bydlím na Východním Pobřeží Spojených Států, což má obvykle za časové pásmo offset -5, výstup na obrázku výše ukazuje posun jako -4. Je to proto, že je letní čas. Ale nebylo by hezké to ověřit? Vlastně můžeme. Zde je návod, jak se to dělá:
$a=Get-Date
$ a.,IsDaylightSavingTime ()
jak můžete vidět na obrázku níže, PowerShell ukazuje hodnotu True, což naznačuje, že je to skutečně letní čas.
a co den v roce?
můžeme také použít PowerShell, abychom nám řekli, jaký je den v roce. Zde je, jak to funguje:
$=Get-Date
$A. DayOfYear
Pokud opravdu chcete, aby věci zajímavé, i když, můžete určit datum, zjistit, co den v roce tento den připadá na. Datum, které zadáte, může být minulé nebo budoucí. Zde je příklad:
Get-Date-rok 2018-Měsíc 8-Daye 22).,DayOfYear
na obrázku níže můžete vidět několik příkladů.
Takže porovnávání
Jak jsem již řekl dříve, je možné použít PowerShell k porovnávání. Přestože parametr-Format můžete použít k vložení data do určitého formátu před porovnáním s jinou hodnotou, není to vždy nutné. Například porovnání dat zápisu souborů nevyžaduje použití žádného zvláštního formátování.,
předpokládejme na okamžik, že jste chtěli porovnat poslední čas zápisu pro konkrétní soubor s datem a časem vašeho výběru, abyste zjistili, zda byl soubor zapsán na poslední dobu než zadané datum.
v takové situaci je první věcí, kterou musíme udělat, mapovat naše cílové datum na proměnnou. Kvůli demonstraci zmapuji 2. ledna 2017 (což je náhodné datum) na proměnnou a$. Pak budu mapovat konkrétní soubor na proměnnou, kterou budu volat X$. Poté bude možné provést srovnání mezi těmito dvěma., Takže zde jsou příkazy, které budu používat:
$A = (Get-Date-Year 2017-Month 01-Day 02)
$a
$X = Get-ChildItem Readme.txt
$X LastWriteTime
$X LastWriteTime -GT $A
první řádek kódu mapy $proměnná do 2. ledna 2017. Další řádek jednoduše ověří, že proměnná obsahuje požadované datum. Třetí řádek kódu mapuje proměnnou $ X do souboru s názvem ReadMe.txt. Čtvrtý řádek zobrazuje poslední čas zápisu souboru. Konečný řádek kódu porovnává obě data., Ukáže se pravda, že soubor byl napsán nedávno než 2. ledna 2017. V opačném případě bude vykazovat hodnotu False. Níže uvedený snímek obrazovky To ukazuje v akci. Také si všimnete, že jsem přidal další řádek, abych zkontroloval, zda je čas posledního zápisu souboru starší než (- LT) 2.ledna 2017. Provedení dvou samostatných srovnání umožňuje vidět, že srovnání skutečně dělá to, co má dělat.,
data v PowerShell: více se dozvíte
PowerShell vám ve skutečnosti umožňuje dělat mnohem více s ohledem na formátování a srovnání data, než o čem jsem mluvil v tomto článku. Pokud byste se chtěli dozvědět více o používání dat v PowerShell, dobrým místem pro spuštění je dokumentace společnosti Microsoft pro Get-Date cmdlet.