Cuando yo escribir scripts de PowerShell, a menudo he descubierto que necesito para hacer referencia a la fecha. Por ejemplo, ocasionalmente he escrito scripts que extraen registros de eventos de Windows de una fecha determinada o scripts que archivan datos obsoletos en función de la fecha en que se creó un archivo. Estos son solo un par de ejemplos de cómo puede ser necesario hacer referencia a la fecha dentro de un script de PowerShell., En este artículo, quiero mostrarte algunos trucos para trabajar con fechas en PowerShell.
recuperar la fecha
es sencillo hacer que PowerShell muestre la fecha actual. Para ello, simplemente introduzca el cmdlet Get-Date. Si necesita mostrar la fecha de una manera determinada, PowerShell ofrece varias opciones diferentes para hacerlo. El método más simple es usar una sugerencia de visualización. El parámetro DisplayHint se puede establecer En fecha, hora o fecha y hora. La siguiente imagen muestra cómo funciona el cmdlet Get-Date básico y algunos ejemplos de uso del parámetro DisplayHint.,
si necesita un poco más de control sobre la salida, puede usar el parámetro Format o el parámetro UFormat. El parámetro Format se utiliza principalmente cuando necesita poner la fecha en un formato determinado con el fin de hacer una comparación. No utilizaremos el parámetro Format en este artículo, pero sigue siendo una buena idea estar al tanto de su existencia.
el parámetro UFormat se utiliza más para fines de visualización. Le permite organizar los diversos elementos que conforman la fecha y la hora de una manera de su elección., Todo lo que tiene que hacer es agregar varios caracteres de formato al parámetro UFormat. Los parámetros que puede utilizar incluyen:
% M-mes (como número)
%D — Fecha
%y — año
%a — el día de la semana
%Z — la zona horaria, expresada como un desplazamiento de la hora UTC o Zulu. Por ejemplo, -5 es hora del Este en los Estados Unidos.
puede ver un ejemplo a continuación de cómo funciona el parámetro UFormat.
Hay dos cosas a las que vale la pena prestar atención en la imagen de arriba. Primero, notará que todo lo que sigue al parámetro UFormat está entre comillas., Esto se debe a que no solo estoy especificando caracteres de formato, también puedo usar texto. En la figura, utilicé una mezcla de texto y caracteres de formato.
la otra cosa a notar es que a pesar de que vivo en la costa este de los Estados Unidos, que normalmente tiene un desplazamiento de zona horaria de -5, la salida en la figura anterior muestra el desplazamiento como -4. Esto se debe a que es el horario de verano. ¿Pero no sería bueno poder verificar eso? En realidad podemos. Así es como se hace:
A a = Get-Date
A A.,IsDaylightSavingTime ()
Como puede ver en la imagen de abajo, PowerShell muestra un valor de True, lo que indica que es efectivamente el horario de verano.
¿qué pasa con el día del año?
También podemos usar PowerShell para decirnos qué día del año es. Así es como funciona:
A a = Get-Date
A A. DayOfYear
Si realmente quieres hacer las cosas interesantes, sin embargo, puedes especificar una fecha para averiguar en qué día del año cae esa fecha. La fecha que especifique puede ser pasada o futura. Este es un ejemplo:
Get-Date-Year 2018-Month 8-Daye 22).,DayOfYear
puedes ver un par de ejemplos en la imagen de abajo.
hacer comparaciones de fechas
Como dije anteriormente, es posible usar PowerShell para hacer comparaciones de fechas. Aunque puede usar el parámetro-Format para poner la fecha en un formato específico antes de compararla con otro valor, no siempre es necesario hacerlo. Por ejemplo, comparar fechas de escritura de archivos no requiere el uso de ningún formato especial.,
Supongamos por un momento que desea comparar la última hora de escritura de un archivo en particular con una fecha y hora de su elección para ver si el archivo se escribió más recientemente que la fecha especificada.
en una situación como esta, lo primero que tenemos que hacer es asignar nuestra fecha objetivo a una variable. Por el bien de la demostración, yo mapa 2 de enero de 2017 (que es una fecha al azar), a la variable$. Entonces mapearé un archivo en particular a una variable, a la que llamaré X$. Entonces será posible hacer comparaciones entre ambos., Así que aquí están los comandos que voy a usar:
A a = (Get-Date-Year 2017-Month 01-Day 02)
A a
X X = Get-ChildItem Readme.txt
The X. LastWriteTime
The X. LastWriteTime-GT A A
la primera línea de código asigna la variable $A al 2 de enero de 2017. La siguiente línea simplemente verifica que la variable contiene la fecha deseada. La tercera línea de código asigna la variable Read X a un archivo llamado ReadMe.txt. La cuarta línea muestra el último tiempo de escritura del archivo. La última línea de código hace una comparación entre las dos fechas., Se mostrará verdadero si el archivo fue escrito más recientemente que el 2 de enero de 2017. De lo contrario, mostrará un valor de False. La captura de pantalla a continuación muestra esto en acción. También notará que he agregado otra línea para verificar si el último tiempo de escritura del archivo es anterior al (- LT) 2 de enero de 2017. Hacer dos comparaciones separadas hace posible ver que la comparación realmente está haciendo lo que se supone que debe hacer.,
fechas en PowerShell: más información
PowerShell en realidad le permite hacer mucho más con respecto al formato de fecha y las comparaciones de lo que he hablado en este artículo. Si desea obtener más información sobre el uso de fechas en PowerShell, un buen lugar para comenzar es la documentación de Microsoft para el cmdlet Get-Date.