jueves, 14 de junio de 2018

VM Linux no bootea con arranque seguro habilitado

Supongamos que estamos creando una nueva VM con Linux (KUbuntu 17.10.1 en mi caso), Creamos la maquina, asignamos memoria, disco y la ISO para instalar. Pero al iniciar la VM no encuentra un SO para bootear.


El problema viene con la configuración de Secure Boot y para solucionarlo abrimos una consola de PowerShell y ejecutamos:


Set-VMFirmware “Nombre VM” -SecureBootTemplate MicrosoftUEFICertificateAuthority


Nota: También puede setearse desde la GUI como se vé en: https://blogs.technet.microsoft.com/dubaisec/2016/03/29/secure-boot-on-virtual-machines/

martes, 13 de febrero de 2018

MeltDown y Spectre, tengo los parches instalados?

Existe un modulo de PowerShell que fue escrito para verificar si tenemos instalados los parches para la atenuación de las vulnerabilidades Meltdown y Spectre.

Las instrucciones para correr el script fueron obtenidas del siguiente link proporcionado por Microsoft.

Desde una consola de PowerShell ejecutándose con privilegios de administrador ejecutaremos los siguientes comandos:


PS> Install-Module SpeculationControl

Esto descarga e instala el modulo de detección de parches para Meltdown y Spectre, es posible que aparezca un mensaje de que necesitamos tener instalado NuGet (y nos ofrecerá instalarlo) y un Warning que nos advierte acerca del repositorio desde donde estamos instalando el modulo (la fuente, PowerShellGallery, es confiable).

Los siguientes dos comandos nos permiten editar la política de ejecución para asegurarnos de poder ejecutar un script firmado remotamente (luego podemos restaurar la politica)

PS> $SaveExecutionPolicy = Get-ExecutionPolicy
PS> Set-ExecutionPolicy RemoteSigned -Scope Currentuser

El siguiente comando importa el modulo:
PS> Import-Module SpeculationControl

Y finalmente ejecutando Get-SpeculationControlSettings podemos ver si tenemos los parches instalados y eventualmente alguna sugerencia acerca de lo que deberíamos hacer para que nuestro equipo sea mas seguro:
PS> Get-SpeculationControlSettings

Por ultimo volvemos a dejar la poitica de ejecución como estaba al principio:

PS> Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser

Recordar que los parches son una mitigación y no una solución definitiva.

lunes, 23 de enero de 2017

Fecha de ultimo booteo con Powershell

Gracias a los amigos de Scripting Guy! que nos muestran la forma de obtener la fecha del ultimo booteo de un equipo con Powershell usando el cmdlet Get-CimInstance y consultando a la clase win32_operatingsystem.

Get-CimInstance -ClassName win32_operatingsystem | select csname, lastbootuptime

En este caso seleccionamos solo dos propiedades para mostrar (notese que si no usaramos el select la salida por defecto no nos mostraría el dato que necesitamos). Si quisiéramos ver algún otro dato podríamos usar el cmdlet Get-Member para ver el listado de propiedades y métodos del objeto devuelto:

Get-CimInstance -ClassName win32_operatingsystem | Get-Member

miércoles, 18 de enero de 2017

Obtener el SerialNumber de un disco mediante PowerShell

Existen varios métodos por el cual podemos obtener el Serial Number de un disco en PowerShell (es bueno no tener que apagar el equipo, ir al datacenter, y despanzurrar el server para encontrarlo :) ). Si bien es posible obtener el dato con WMIC desde una línea de comandos vamos a consultar WMI desde PowerShell.

Para eso vamos a utilizar el cmdlet Get-WMIObject de la siguiente manera:

Get-WMIObject -class win32_PhysicalMedia

Este cmdlet le va a consultar a WMI y va a mostrar algunos datos (incluyendo el SN) en formato de lista. Es posible cambiar el formato y mostrarlo como tabla así:

Get-WMIObject -class win32_PhysicalMedia | ft

De cualquiera de las dos formas el resultado puede ser difícil de ver por lo que podemos aprovechar que PowerShell devuelve un objeto (lo referenciamos poniendo entre paréntesis el comando anterior) y seleccionando la propiedad SerialNumber de ese objeto:

(Get-WMIObject -class win32_PhysicalMedia).SerialNumber

También podríamos hacerlo así:

Get-WMIObject -class win32_PhysicalMedia | SELECT SerialNumber

Ahora bien, en caso de tener discos agrupados en un Storage Pool esto no devuelve los SN, para eso debemos usar el cmdlet Get-PhysicalDisk, por ejemplo de la sgte manera:

Get-PhysicalDisk | SELECT FriendlyName, SerialNumber

Esto devuelve los datos para todos los discos esten o no en un Storage Pool.

jueves, 10 de diciembre de 2015

Verificar si existe un archivo o carpeta con Powershell

Test-Path es cun cmdlet que devuelve true o false dependiendo de si un path (a una carpeta o un archivo existe o no).
 De esta manera podemos utilizarlo en aquellas ocasiones en que se requiera verificar si un archivo o carpeta existe antes de realizar una accion con el/ella o bien crear este elemento.
 Al devolver un tipo logico podemos usarlo como condicion de un if como vemos en el siguiente ejemplo donde verificamos si existe un archivo:

 if (Test-Path c:\test\textfile.txt)
     {Write-Output 'Hacer algo con el archivo'}
 else
     {Write-Output 'El archivo no existe'}

 A continuacion un ejemplo similar pero con una carpeta

 if (Test-Path c:\test1)
     {Write-Output 'Hacer algo con la carpeta'}
 else
     {Write-Output 'La carpeta no existe'}

sábado, 28 de noviembre de 2015

Mas E-Books for Free

En este caso la gente de packtpub.com nos ofrece día a día un libro gratis.

Las libros están disponibles para reservar en forma gratuita durante 24 horas y luego puedes descargártelo cuando quieras desde la cuenta que te creas con ellos.

Puedes elegir entre varios formatos de descarga. Los libros cambian todos los días así que hay que tener el link a mano y visitarlo diariamente. Los libros gratuitos pueden verlos desde este link.



miércoles, 18 de noviembre de 2015

E-Books for Free

Si señores, un link que conviene tener siempre a mano y visitar cada tanto ya que el listado de E-Books gratuitos provistos por Microsoft es periódicamente actualizado.

Organizados en tabla de contenidos para buscar rápidamente y con una variedad de temas interesante es un sitio para tener en cuenta.