când scriu scripturi PowerShell, am constatat adesea că trebuie să fac referire la dată. De exemplu, am scris ocazional scripturi care trag jurnalele de evenimente Windows de la o anumită dată sau scripturi care arhivează datele îmbătrânite pe baza datei la care a fost creat un fișier. Acestea sunt doar câteva exemple de modul în care data poate fi necesar să se facă referire într-un script PowerShell., În acest articol, vreau să vă arăt câteva trucuri pentru a lucra cu date în PowerShell.
preluarea data
este simplu de a face PowerShell afișa data curentă. Pentru a face acest lucru, trebuie doar să introduceți cmdletul Get-Date. Dacă trebuie să afișați data într-un anumit mod, atunci PowerShell oferă o serie de opțiuni diferite pentru a face acest lucru. Cea mai simplă metodă este să folosiți un indiciu de afișare. Parametrul DisplayHint poate fi setat la data, ora sau DateTime. Imaginea de mai jos arată cum funcționează cmdlet-ul de bază Get-Date și câteva exemple de utilizare a parametrului DisplayHint.,dacă aveți nevoie de un pic mai mult control asupra ieșirii, puteți utiliza parametrul Format sau parametrul UFormat. Parametrul Format este utilizat mai ales atunci când trebuie să puneți data într-un anumit format în scopul de a face o comparație. Nu vom folosi parametrul Format în acest articol, dar este încă o idee bună să fim conștienți de existența sa.
parametrul UFormat este utilizat mai mult în scopuri de afișare. Vă permite să aranjați diferitele elemente care alcătuiesc data și ora într-un mod ales de dvs., Tot ce trebuie să faceți este să adăugați diferite caractere de formatare la parametrul UFormat. Parametrii pe care le puteți utiliza includ:
%m — lună (ca număr)
%D — Data
%Y — an
%A — ziua săptămânii
%Z — fusul orar, exprimat ca o compensare față de ora UTC sau Zulu. De exemplu, -5 este timpul de Est în Statele Unite.
puteți vedea un exemplu de mai jos despre modul în care funcționează parametrul UFormat.există două lucruri la care merită să fiți atenți în imaginea de mai sus. În primul rând, veți observa că tot ceea ce urmează parametrului UFormat este inclus în ghilimele., Acest lucru se datorează faptului că nu specific doar caractere de formatare, pot folosi și text. În figură, am folosit un amestec de text și caractere de formatare.un alt lucru de observat este că, deși locuiesc pe coasta de est a Statelor Unite, care are în mod normal o compensare a fusului orar de -5, ieșirea din figura de mai sus arată compensarea ca -4. Acest lucru se datorează faptului că este ora de vară. Dar nu ar fi frumos să putem verifica asta? De fapt, putem. Iată cum se face:
$a=Get-Date
$A.,IsDaylightSavingTime ()
după cum puteți vedea în imaginea de mai jos, PowerShell arată o valoare de adevărat, indicând faptul că este într-adevăr ora de vară.
ce zici de Ziua Anului?
De asemenea, putem folosi PowerShell pentru a ne spune ce zi a anului este. Iată cum funcționează:
$a = Get-Date
$A. DayOfYear
dacă doriți cu adevărat să faceți lucrurile interesante, totuși, puteți specifica o dată pentru a afla în ce zi a anului se încadrează această dată. Data pe care o specificați poate fi trecută sau viitoare. Iată un exemplu:
Get-Date-anul 2018-Luna 8-Daye 22).,DayOfYear
puteți vedea câteva exemple în imaginea de mai jos.după cum am spus mai devreme, este posibil să utilizați PowerShell pentru a face comparații de date. Deși puteți utiliza parametrul-Format pentru a pune data într-un format specific înainte de a o compara cu o altă valoare, acest lucru nu este întotdeauna necesar. De exemplu, compararea datelor de scriere a fișierelor nu necesită utilizarea unei formatări speciale.,să presupunem pentru un moment că ați dorit să comparați ultima dată de scriere pentru un anumit fișier cu o dată și o oră la alegere pentru a vedea dacă fișierul a fost scris mai recent decât data specificată.
într-o situație ca aceasta, primul lucru pe care trebuie să-l facem este să ne mapăm data țintă la o variabilă. De dragul demonstrației, voi mapa 2 ianuarie 2017 (care este o dată aleatorie), la variabila a$. Apoi voi mapa un anumit fișier într-o variabilă, pe care o voi numi X$. Apoi va fi posibil să se facă comparații între cele două., Deci, aici sunt comenzile pe care am de gând să folosească:
$a = (Get-Date-an 2017-Luna 01-zi 02)
$A
$X = Get-ChildItem Readme.txt
$X. LastWriteTime
$X. LastWriteTime -GT $O
prima linie de cod maps $O variabilă la 2 ianuarie 2017. Următoarea linie verifică pur și simplu dacă variabila conține data dorită. A treia linie de cod mapează variabila $X într-un fișier numit ReadMe.txt. A patra linie afișează ultimul timp de scriere pentru fișier. Linia finală de cod face o comparație între cele două date., Acesta va arăta adevărat este fișierul a fost scris mai recent decât ianuarie 2, 2017. În caz contrar, va arăta o valoare falsă. Captura de ecran de mai jos arată acest lucru în acțiune. Veți observa, de asemenea, că am adăugat o altă linie pentru a verifica dacă ultimul timp de scriere al fișierului este mai vechi decât (-LT) 2 ianuarie 2017. Făcând două comparații separate face posibil să vedem că comparația face într-adevăr ceea ce ar trebui să facă.,
date în PowerShell: mai multe de învățat
PowerShell vă permite de fapt să faceți mult mai mult în ceea ce privește formatarea și comparațiile datei decât ceea ce am vorbit în acest articol. Dacă doriți să aflați mai multe despre utilizarea datelor în PowerShell, un loc bun pentru a începe este documentația Microsoft pentru cmdlet Get-Date.