List of Useful TPM PowerShell CmdLets

Prajwal Desai
Posted by Prajwal Desai
List of Useful TPM PowerShell CmdLets

In this post, I will cover a few TPM PowerShell cmdlets, that should help you in managing TPM via PowerShell. Using PowerShell, you can get the TPM status, clear TPM, initialize TPM and do much more.

A Trusted Platform Module is a microchip that is built into a computer to provide hardware-based security. The TPM is a chip that’s part of your computer’s motherboard.

In some cases, the TPM is not enabled in BIOS and one has to manually enable TPM on the motherboard. You can always refer to the BIOS manual to get help on enabling the TPM.

There are several ways to find the TPM status and one such easy method is to find the TPM status using command line.

If you are using PowerShell to script and manage your computers, you can manage the TPM using Windows PowerShell. To install the TPM cmdlets, use the following command – dism /online /enable-feature /FeatureName:tpm-psh-cmdlets

Microsoft announced that Windows 11 will require TPM 2.0 as a requirement. With this announcement, some users aren’t happy. The users will need to either update their hardware or upgrade to a new laptop if they want to make the switch to Windows 11.

TPM PowerShell Cmdlets by Microsoft

It is interesting to know that Microsoft provides cmdlets for managing TPM using PowerShell. I will list down some commonly used TPM cmdlets that you can run using PowerShell. To view more TPM cmdlets, refer to Microsoft documentation.

TPM PowerShell cmdletsDescription
Clear-TpmResets a TPM to its default state
Get-TpmGets an object that contains information about a TPM
Initialize-TpmPerforms part of the provisioning process for a TPM
Unblock-TpmResets a TPM lockout
TPM cmdlets by Microsoft

Get TPM status using Get-TPM PowerShell cmdlet

The first command that we will run is Get-TPM to get TPM status via PowerShell. If you want to find the TPM version using PowerShell, the Get-Tpm cmdlet shows the TPM version.

This object contains information about the Trusted Platform Module (TPM) on the current computer.

Run the PowerShell as administrator and enter the command get-tpm. If you see TpmEnabled as True, it means the TPM is enabled successfully on your computer.

The output also contains other information about TPM, and they are as follows.

  • TpmPresent – This value determines if the TPM chip is present on the computer
  • TpmReady – Whether the TPM is ready and complies with Windows Server 2019 standards
  • TpmEnabled – The value true indicates the TPM is enabled
  • TpmActivated – Determines if the TPM is activated or not
  • TpmOwned
  • RestartPending – Determines if there is a restart required by TPM
  • ManufacturerId
  • ManufacturerIdTxt
  • ManufacturerVersion
  • ManufacturerVersionFull20
  • ManagedAuthLevel – The level at which the operating system manages the owner authorization.
  • OwnerAuth – The owner authorization value that is stored in registry
  • OwnerClearDisabled – This value determines if the TPM can be reset or not. If this value is False, the TPM can be reset through the operating system.
  • AutoProvisioning – Specifies whether the computer can use auto-provisioning or not
  • LockedOut – The value specifies whether a TPM is locked out
  • LockoutHealTime – set to 2 hours by default
  • LockoutCount – 0
  • LockoutMax – 32
  • SelfTest – TPM self test information
Get TPM status using Get-TPM PowerShell cmdlet
Get TPM status using Get-TPM PowerShell cmdlet

Clear TPM status via PowerShell using Clear-TPM

The clear-tpm command resets the TPM to its default state. The clear-tpm command removes the owner authorization value and any keys stored in the TPM.

To clear TPM status, launch the PowerShell as administrator and run the command clear-tpm. This command resets the TPM. The command uses the owner authorization value stored in the registry instead of specifying a value or using a value in a file.

Clear TPM status via PowerShell using Clear-TPM
Clear TPM status via PowerShell using Clear-TPM

The following command resets the TPM by using the specified owner authorization value.

Clear-tpm -OwnerAuthorization "ownerauthorizationvalue"
Reset TPM using Owner Authorization Value
Reset TPM using Owner Authorization Value

Initialize TPM status using Clear-TPM PowerShell Cmdlet

The Initialize-Tpm PowerShell cmdlet performs part of the provisioning process for a Trusted Platform Module (TPM). Provisioning is the process of preparing a TPM to be used.

When you run the initialize-tpm command, it returns the following data.

  • TpmReady – Determines if the TPM is initialized or not.
  • RestartRequired – Whether a restart is required to continue the provisioning process.
  • ShutdownRequired – Determines if a computer requires shutdown to continue the provisioning process.
  • ClearRequired – The value should be false. If this has a value of True, you must import an owner authorization value or remove the owner authorization value.
  • PhysicalPresenceRequired – The value determines if a person must be at the computer during restart to continue the provisioning process.
Initialize TPM status via PowerShell using Clear-TPM
Initialize TPM status using Clear-TPM PowerShell Cmdlet

Unblock TPM using PowerShell

The Unblock-Tpm PowerShell cmdlet resets a Trusted Platform Module (TPM) lockout. During the lockout, the TPM locks itself to prevent tampering or attack.

To end a TPM lockout, you must provide a valid owner authorization value. If you do not provide a value, the cmdlet unblock-tpm attempts to use a value stored in the registry.

Launch the PowerShell as administrator and run the below command to unblock the TPM.

Unblock-Tpm -OwnerAuthorization "ownerauthorizationvalue"
Unblock TPM using PowerShell
Unblock TPM using PowerShell

Share This Article
Prajwal Desai
Posted by Prajwal Desai
Follow:
Prajwal Desai is a Microsoft MVP in Intune and SCCM. He writes articles on SCCM, Intune, Windows 365, Windows Server, Windows 11, WordPress and other topics, with the goal of providing people with useful information.
Leave a comment