Consulta de la última hora de escritura del archivo en PowerShell

  1. Consulta de propiedades de archivo en PowerShell
  2. Convertir valores a formatos DateTime en PowerShell
  3. Encuentra la diferencia entre dos fechas en PowerShell
Consulta de la última hora de escritura del archivo en PowerShell

Al administrar archivos, una de nuestras propiedades más buscadas para verificar es cuándo se modificó el archivo por última vez. Podemos verificar esto rápidamente y cómodamente a través del Explorador de archivos.

Sin embargo, habrá ocasiones en las que queramos verificar las propiedades de un archivo mediante programación usando PowerShell.

En este artículo, aprenderemos y discutiremos cómo obtener las propiedades de un archivo, consultar su última hora de escritura y ejecutar comandos adicionales para obtener una fecha diferente a la fecha actual.

Consulta de propiedades de archivo en PowerShell

Con Windows PowerShell, podemos consultar fácilmente las propiedades de los archivos usando el comando Get-ItemProperty. Usemos un archivo como ejemplo.

Código de ejemplo:

$filepath = "C:\Temp\Login.log"
Get-ItemProperty -Path $filepath

En el ejemplo anterior, hemos consultado las propiedades básicas de Login.log. El fragmento anterior imita cómo vemos las propiedades de los archivos usando el Explorador de archivos.

Producción :

    Directory: C:\Temp


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          6/7/2022   4:33 AM           4944 Login.log

Incluso podríamos ver la propiedad Mode o los permisos del archivo, la Length o tamaño del archivo, y LastWriteTime o la fecha y hora en que se modificó por última vez el archivo.

Ahora, para este artículo, queríamos centrarnos más en la última hora de escritura del archivo, así que intentemos aislar esta propiedad ejecutando el fragmento de código actualizado a continuación.

Código de ejemplo:

$filepath = "C:\Temp\Login.log"
(Get-ItemProperty -Path $filepath -Name LastWriteTime).LastWriteTime

Producción :

Tuesday, June 7, 2022 4:33:02 AM

Como podemos ver, ahora hemos aislado correctamente la hora de última modificación del archivo; sin embargo, si quisiéramos obtener la diferencia entre la fecha y la hora actuales y la hora de escritura anterior del archivo, tendríamos un error debido a la diferencia en el tipo de datos.

Convertir valores a formatos DateTime en PowerShell

En PowerShell, tenemos un tipo de datos específico llamado DateTime que simboliza el formato de fecha y hora del sistema. Nuestra salida anterior está en formato String, así que vamos a convertir esto en formato DateTime ejecutando el código a continuación.

Código de ejemplo:

$filepath = "C:\Temp\Login.log"
$lastWrite = [DateTime](Get-ItemProperty -Path $filepath -Name LastWriteTime).LastWriteTime

Observe que hemos asignado el valor DateTime a un resultado. Hemos hecho esto para agregar conveniencia a nuestro script más adelante.

Encuentra la diferencia entre dos fechas en PowerShell

Ahora que nuestra salida está en formato DateTime, podemos encontrar convenientemente la diferencia entre el tiempo de escritura actual y el último realizando una expresión matemática simple.

Código de ejemplo:

$currDate = Get-Date
$currDate - $lastWrite

Producción :

Days              : 0
Hours             : 17
Minutes           : 24
Seconds           : 57
Milliseconds      : 757
Ticks             : 626977577652
TotalDays         : 0.725668492652778
TotalHours        : 17.4160438236667
TotalMinutes      : 1044.96262942
TotalSeconds      : 62697.7577652
TotalMilliseconds : 62697757.7652

El comando Get-Date consulta la fecha y hora actual durante la ejecución del comando. El comando se guarda con un tipo de datos DateTime, por lo que es similar a nuestro último valor de tiempo de escritura preparado.

Con dos variables con un tipo de dato DateTime, podemos encontrar el tiempo total y la diferencia usando un operador matemático como un más (+) y un menos (-).

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Artículo relacionado - PowerShell File