取得TPM的所有权

时间:2017-09-25 14:11:08

标签: powershell tpm bitlocker

我正在开发一个Powershell脚本,我可以使用它来启用,激活和取消已禁用TPM的用户计算机上的TPM的所有权。对于那些不了解的人来说,TPM是允许Bitlocker正常工作的板载部件。关于我到目前为止的内容以及如何完成脚本,我有几个问题。我对Powershell非常新,所以如果我要问的是基本的,我会提前道歉。我已经四处寻找并找到了所有帮助,直到我在剧本中的位置。我发现的大部分内容都指向必须设置密码作为脚本的一部分,但由于我们的域控制器正在处理该部分,我试图避免这种情况。我可能会走得更远,我也需要。

这是我到目前为止所做的:

# This script will find whether or not a specified PC\Laptop 
# has its TPM enabled, activated, and owned 
# All of these are needed in order for Bitlocker to work correctly.
# It will also enable, activate, and assign ownership if
# any of these parameters are not set correctly.
# THE MACHINE THIS IS RUN ON WILL NEED TO BE VPN'D OR PHYSICALLY CONNECTED TO THE DOMAIN

# This sets the variable $Tpm so the longer version of the command is no longer needed
$Tpm = Get-wmiobject -Namespace ROOT\CIMV2\Security\MicrosoftTpm -Class Win32_Tpm 

# This Enables the TPM on the target mahcine
{$Tpm.IsEnabled().isenabled

if ($Tpm.IsEnabled().isenabled -eq "False") {$Tpm.Enable()} 
else {write-host "TPM in Enabled"}
}

# This activates the TPM on the target machine
{$Tpm.IsActivated().isactivated

if ($Tpm.IsActivated().isactivated -eq "False") {$Tpm.Activate()} 
else {write-host "TPM in Activated"}
}

# This takes ownership of the TPM on the target of the machine
# This portion will require user interaction since a acknoledgement 
# will need to be confirmed on the screen.
# There are 3 parts to this portion, Clear, Take Ownership, Authorization

# This will clear the TPM so ownership can be established
{$Tpm.Clear()}

# This will take ownership of the TPM 

我的问题是:

  1. 我的工作语法是否正确?

  2. 一旦启用了TPM,我是否还需要更进一步?因为Bitlocker正在由域MBAM MDOP实例运行?如果是这种情况,请忽略我的其余问题。

  3. 我可以编写一个像这样的Powershell脚本来让它像批处理文件一样按顺序执行这些多个功能吗?

  4. 如果一切正常,现在我处于清晰的阶段,我需要获得TPM的所有权,我怎么能这样做,因为我们的域控制器将持有所有密码,因此我不需要输入密码键和密钥字符串?我们不希望允许用户为Bitlocker制作自己的密码。

2 个答案:

答案 0 :(得分:1)

  

我的工作语法是否正确?

我不明白为什么您选择使用WMI cmdlet来管理TPM。您应该能够使用TPM management PowerShell cmdletsmanage-bde命令行实用程序。不要重新发明自行车。 :)

作为旁注,如果您将来尝试通过PowerShell访问WMI,请尝试CIM cmdlets而不是WMI。

  

我可以像这样写一个Powershell脚本来让它来执行这些   多个函数按顺序就像我要批处理文件一样?

使用基于WMI / CIM的方法,您可以编写自己的模块或函数,并运行函数或自编的cmdlet。但是,当有内置的TPM管理模块和manage-bde实用程序时,您真的需要编写自己的模块或函数吗?

答案 1 :(得分:0)

您可以使用几个TrustedPlatformModule PowerShell cmdlet。我认为他们会适用

首先,要确保您从“干净:tpm”开始,请使用Clear-TPM cmdlet。

然后使用Enable-TPM。

在此处详细了解它:

https://docs.microsoft.com/en-us/powershell/module/trustedplatformmodule/?view=win10-ps

Dave Franklyn,Windows和IT部门的MVP