viernes, 21 de junio de 2013

Posibles estados del chip TPM y gestión de bitlocker vía Cmd y Powershell

 

En este artículo, voy a intentar plasmar las posibles situaciones en las que podemos encontrar y posicionar el chip TPM, con el fin de activar Bitlocker en los equipos de nuestro parque.

Lo primero que debemos conocer es que el comando Manage-bde es el que nos permitirá ir cambiando el estado del chip, los comandos son:

  • manage-bde –tpm –t  #activa tpm
  • manage-bde –tpm –takeownership contraseña   #Para tomar propiedad del chip si no somos propietarios.
  • manage-bde –on c: –skiphardwaretest –recoverypassword  #Para lanzar bitlocker en la unidad c:

Lo segundo que debemos conocer es que como inevitablemente el scripting va a formar parte imprescindible del proceso, hay ciertos comandos y consultas wmi que nos harán conducir el proceso.

Primero y antes de nada, la consulta wmi y la clase que extraerá la información es:

$tpm = Get-WmiObject -class Win32_Tpm -namespace "root\CIMV2\Security\MicrosoftTpm"

De la información extraida en la variable $tpm, nos importa esto:

$tpm.isEnabled_InitialValue = True or False   #¿Está habilitado?.

$tpm.isActivated.InitialValue = True or False  #¿Está activado?.

$tpm.isOwned_InitialValued = True or False  #¿Somos el propietario?.

 

Y esto nos puede dar las siguientes condiciones y debemos entonces actuar como se describe:

(($tpm.isEnabled_InitialValue -eq $true) -and ($tpm.isActivated_InitialValue -eq $true) -and ($tpm.IsOwned_InitialValue -eq $true))  #entonces solo queda activar con “manage-bde –on c:….”

(($tpm.isEnabled_InitialValue -eq $true) -and ($tpm.isActivated_InitialValue -eq $true) -and ($tpm.IsOwned_InitialValue -eq $false))  #Debemos hacernos propietarios y activar 1. manage-bde –tpm –takeownership contraseña y 2. manage-bde –on c:…

 

#Requieren activación de tpm “ manage-bde –tpm –t” el resto de condiciones:

(($tpm.isEnabled_InitialValue -eq $false) -and ($tpm.isActivated_InitialValue -eq $false) -and ($tpm.IsOwned_InitialValue -eq $false))

(($tpm.isEnabled_InitialValue -eq $false) -and ($tpm.isActivated_InitialValue -eq $false) -and ($tpm.IsOwned_InitialValue -eq $false))

Y

(($tpm.isEnabled_InitialValue -eq $true) -and ($tpm.isActivated_InitialValue -eq $false) -and ($tpm.IsOwned_InitialValue -eq $false))

 

Saludos.