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/
Bloc de notas
Un poco de desarrollo, una pizca de infraestructura, miscelaneas a gusto y a horno moderado hasta que esté dorado.
jueves, 14 de junio de 2018
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.
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
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.
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'}
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.
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.
Organizados en tabla de contenidos para buscar rápidamente y con una variedad de temas interesante es un sitio para tener en cuenta.
Suscribirse a:
Entradas (Atom)