15Sep
Hace unas semanas, The Geek le mostró cómo puede usar el símbolo del sistema para encontrar cuándo su computadora se inició por última vez. En esta última instalación de Geek School for PowerShell, vamos a escribir un comando de PowerShell reutilizable para hacer lo mismo.
Asegúrese de leer los artículos anteriores de la serie:
- Aprenda a automatizar Windows con PowerShell
- Aprenda a usar los cmdlets en PowerShell
- Aprendizaje de cómo usar objetos en PowerShell
- Aprendizaje Formato, filtrado y comparación en PowerShell
- Aprenda a usar Remoting enPowerShell
- Uso de PowerShell para obtener información de computadora
- Uso de colecciones en PowerShell
- Aprenda cómo usar trabajos en PowerShell
- Aprenda cómo ampliar PowerShell
- Aprenda de PowerShell Variables, entrada y salida
Escribiendo su primer script
Lo primero que tenemos que hacer esencuentre una manera de acceder a la información que estamos buscando. Dado que estamos tratando con información de gestión, probablemente tengamos que echar un vistazo al uso de WMI, que sí tiene una clase llamada Win32_OperatingSystem que le permite ver información detallada sobre su sistema operativo, incluida la última vez que se inició.
Ahora que sabemos dónde podemos encontrar la información que buscamos, abra el ISE y escriba lo siguiente.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Select-Object -Property CSName, LastBootUpTime
Nota: Tuve que dividir mi código en dos líneas para que todo encajara en la captura de pantalla, pero no dude en escribirlo en una sola línea. Si elige dividirlo en dos líneas, asegúrese de que el carácter de la tubería sea el último carácter en la línea 1.
Ahora haga clic en el botón verde "Ejecutar script" o presione la tecla F5 en su teclado para probar el código.
Los tiempos de WMI pueden ser un poco crípticos. Con esto queremos decir que si nos fijamos en la propiedad LastBootUpTime, dice 2013-03-19 a las 18:26:21, pero por alguna razón los chicos de WMI decidieron concatenar todo eso en una sola cadena. Por suerte para nosotros, no tenemos que preocuparnos por el análisis manual de la cadena, ya que hay una manera más fácil de hacerlo, aunque más avanzada. Deberá cambiar la parte Select-Object del código para que se vea así:
Select-Object -Property CSName, @{ n = "Last Booted";
e ={ [Management. ManagementDateTimeConverter]: : ToDateTime( $ _. LastBootUpTime)}}
Lo que estamos haciendo aquí es crear una propiedad personalizada llamada "Last Booted" y especificar que su valor debe ser el resultado de llamar al ToDateTime estáticométodo en la propiedad LastBootUpTime del objeto de canalización actual. Tu código ahora debe verse así.
Ejecutar el código ahora arrojará un último tiempo de arranque mucho más legible.
Ahora que estamos contentos con la funcionalidad básica de nuestro script, debemos guardarlo. Para simplificar, vamos a guardarlo de la siguiente manera:
C: \ Get-LastBootTime.ps1
Ahora cambie a la mitad inferior del ISE y ejecute lo siguiente:
C: \ Get-LastBootTime.ps1
¡Genial! Nuestro script funciona como se esperaba, sin embargo, todavía hay un problema con nuestro script. Codificamos el nombre de la computadora para la que queremos obtener el último tiempo de arranque. En lugar de valores de codificación rígida, deberíamos proporcionar un parámetro para que cualquiera que esté usando el script pueda elegir a qué computadora ejecutar el script. Para hacerlo, ve a la parte superior de tu script y haz lo siguiente.
param(
[cadena] $ ComputerName
)
Luego, reemplace el valor del localhost codificado con la variable $ ComputerName. Ahora su script debería verse así:
Guarde su script, luego regrese a la mitad inferior del ISE y vea la ayuda para su script.
help C: \ Get-LastBootTime.ps1
Awesome, por lo que ahora podemos especificar el nombre de la computadora en la que queremos obtener el último tiempo de arranque para usar nuestro nuevo parámetro ComputerName. Lamentablemente, todavía hay algunas cosas mal. En primer lugar, el parámetro ComputerName es opcional y, en segundo lugar, es la herramienta más fea que he visto en mi vida, así que solucionemos esos problemas rápidamente. Para que el parámetro ComputerName sea obligatorio, cambie el contenido del bloque de parámetros a lo siguiente.
[Parámetro( obligatorio = $ verdadero)] [cadena] $ ComputerName
En cuanto a hacer un mejor archivo de ayuda, el método más común es usar ayuda basada en comentarios. Eso significa que simplemente agregamos un comentario extra largo a la parte superior de la secuencia de comandos.
& lt; #
. SYNOPSIS
Muestra cuándo se inició por última vez su PC.
. DESCRIPTION
Esta es una función de envoltura de WMI para obtener el tiempo de inicio de su PC por última vez.
. PARAMETER ComputerName
El nombre de la computadora con la que desea ejecutar el comando.
. EJEMPLO
Get-LastBootTime -ComputerName localhost
. LINK
www.howtogeek.com
# & gt;
Una vez hecho todo esto, debes terminar con un script que se vea así.
Veamos ahora nuestro nuevo archivo de ayuda.
¡Ahhh, luciendo genial! Ahora que nuestro script está completo, tenemos una última cosa que hacer: probar. Para esto, voy a salir del ISE y regresar a la consola de PowerShell solo para asegurarnos de que no haya anomalías.
Si comienzas con un simple trazador de líneas y sigues construyéndolo como lo hicimos en esta guía, obtendrás el truco en muy poco tiempo. Eso es todo por esta vez amigos, nos vemos en la próxima instalación de Geek School.