kiedy piszę skrypty PowerShell, często stwierdzam, że muszę odwołać się do daty. Na przykład czasami pisałem skrypty, które pobierają dzienniki zdarzeń systemu Windows z określonej daty lub skrypty, które archiwizują starzejące się dane na podstawie daty utworzenia pliku. To tylko kilka przykładów na to, w jaki sposób można odwoływać się do daty w skrypcie PowerShell., W tym artykule chcę pokazać kilka sztuczek dotyczących pracy z datami w PowerShell.

pobieranie daty

w PowerShell łatwo jest wyświetlić aktualną datę. Aby to zrobić, po prostu wprowadź cmdlet Get-Date. Jeśli chcesz wyświetlić datę w określony sposób, PowerShell oferuje wiele różnych opcji, aby to zrobić. Najprostszą metodą jest użycie podpowiedzi wyświetlania. Parametr DisplayHint można ustawić na Date, Time lub DateTime. Poniższy obrazek pokazuje, jak działa podstawowy cmdlet Get-Date oraz kilka przykładów użycia parametru DisplayHint.,

Jeśli potrzebujesz nieco większej kontroli nad wyjściem, możesz użyć parametru Format lub parametru UFormat. Parametr Format jest najczęściej używany, gdy musisz umieścić datę w określonym formacie w celu dokonania porównania. Nie będziemy używać parametru Format w tym artykule, ale nadal warto mieć świadomość jego istnienia.

parametr UFormat jest używany bardziej do celów wyświetlania. Pozwala na dowolne ułożenie różnych elementów składających się na datę i godzinę., Wszystko, co musisz zrobić, to dołączyć różne znaki formatowania do parametru UFormat. Parametry, których możesz użyć to:

%m — miesiąc (jako liczba)
%D — Data
%Y — rok
%a — dzień tygodnia
%z — Strefa czasowa, wyrażona jako przesunięcie od czasu UTC lub Zulu. Na przykład -5 to czas wschodni w Stanach Zjednoczonych.

poniżej znajduje się przykład działania parametru UFormat.

na powyższym obrazku są dwie rzeczy, na które warto zwrócić uwagę. Po pierwsze, zauważysz, że wszystko po parametrze UFormat jest zamknięte w cudzysłowie., Dzieje się tak dlatego, że nie tylko określam znaki formatowania, mogę również użyć tekstu. Na rysunku użyłem mieszanki znaków tekstowych i formatujących.

warto zauważyć, że chociaż mieszkam na Wschodnim Wybrzeżu Stanów Zjednoczonych, które zwykle ma przesunięcie strefy czasowej -5, wyjście na powyższym rysunku pokazuje przesunięcie jako -4. Dzieje się tak dlatego, że jest to czas letni. Ale czy nie byłoby miło móc to zweryfikować? Możemy. Oto jak to się robi:

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

Jak widać na poniższym obrazku, PowerShell pokazuje wartość True, wskazując, że rzeczywiście jest to czas letni.

a co z dniem w roku?

możemy również użyć PowerShell, aby powiedzieć nam, jaki dzień w roku jest. Oto jak to działa:

$a=Get-Date
$A. DayOfYear

Jeśli naprawdę chcesz, aby rzeczy były interesujące, możesz określić datę, aby dowiedzieć się, w którym dniu roku przypada ta data. Podana data może być przeszłą lub przyszłą. Oto przykład:

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

możesz zobaczyć kilka przykładów na poniższym obrazku.

dokonywanie porównań dat

jak mówiłem wcześniej, możliwe jest użycie PowerShell do porównywania dat. Chociaż można użyć parametru-Format, aby umieścić datę w określonym formacie przed porównaniem jej z inną wartością, nie zawsze jest to konieczne. Na przykład porównywanie dat zapisu plików nie wymaga użycia żadnego specjalnego formatowania.,

załóżmy przez chwilę, że chcesz porównać ostatni czas zapisu dla określonego pliku do wybranej przez Ciebie daty i godziny, aby sprawdzić, czy plik został zapisany bardziej niedawno niż określona data.

w takiej sytuacji, pierwszą rzeczą, którą musimy zrobić, to zmapować naszą docelową datę do zmiennej. Dla celów demonstracyjnych, mapuję 2 stycznia 2017 (która jest przypadkową datą), do zmiennej a$. Następnie zmapuję konkretny plik do zmiennej, którą wywołam X$. Następnie będzie można dokonać porównań między nimi., Oto więc polecenia, których będę używał:

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

pierwsza linia kodu mapuje zmienną $a na 2 stycznia 2017 roku. Następny wiersz po prostu sprawdza, czy zmienna zawiera żądaną datę. Trzecia linia kodu mapuje zmienną $X do pliku o nazwie ReadMe.txt. Czwarta linia wyświetla ostatni czas zapisu pliku. Ostatnia linijka kodu porównuje obie daty., Pokaże, że prawda jest taka, że plik został napisany niedawno niż 2 stycznia 2017 roku. W przeciwnym razie pokaże wartość False. Poniższy zrzut ekranu pokazuje to w akcji. Zauważysz również, że dodałem kolejną linię, aby sprawdzić, czy ostatni czas zapisu pliku jest starszy niż (- LT) 2 stycznia 2017. Wykonanie dwóch oddzielnych porównań pozwala zobaczyć, że porównanie naprawdę robi to, co powinno.,

daty w PowerShell: więcej do nauczenia się

PowerShell w rzeczywistości pozwala zrobić znacznie więcej w odniesieniu do formatowania dat i porównań niż to, o czym mówiłem w tym artykule. Jeśli chcesz dowiedzieć się więcej o używaniu dat w PowerShell, dobrym miejscem do rozpoczęcia jest dokumentacja Microsoft dla get-Date cmdlet.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *