Share via


Sichern der TPM-Wiederherstellungsinformationen auf AD DS

Dieses Thema für IT-Experten beschreibt, wie die TPM(Trusted Platform Module)-Informationen in den Active Directory-Domänendiensten (AD DS) gesichert werden, damit Sie AD DS für die Verwaltung von TPM von einem entfernten Computer aus verwenden können.

Zur gerätefernen Verwaltung von TPM

Die Sicherung der TPM-Besitzerinformationen für einen Computer ermöglicht Administratoren in einer Domäne die geräteferne Konfiguration der TPM-Sicherheitshardware auf dem lokalen Computer. So können Administratoren etwa das TPM auf die Voreinstellungen des Herstellers zurücksetzen wollen, wenn Computer außer Betrieb genommen oder einem anderen Zweck zugeführt werden, ohne dass sie dazu persönlich an dem jeweiligen Computer anwesend sein müssen.

Mit AD DS können Sie TPM-Besitzerinformationen zur Verwendung in Wiederherstellungssituationen speichern, etwa wenn der TPM-Eigentümer das Kennwort vergessen hat, oder wenn Sie die Kontrolle über das TPM übernehmen müssen. Es gibt nur ein TPM-Besitzerkennwort pro Computer; daher kann der Hashwert dieses Kennworts als Attribut des Computerobjekts in AD DS gespeichert werden. Das Attribut hat den allgemeinen Namen (Common Name, CN) von ms-TPM-OwnerInformation.

Hinweis  

Der TPM-Besitzerautorisierungswert wird in AD DS gespeichert und ist in der TP-Besitzerkennwortdatei als SHA-1-Hash des TPM-Besitzerkennworts (Base 64-Kodierung) vorhanden. Das eigentliche Besitzerkennwort wird nicht gespeichert.

 

Domänencontroller unter Windows Server 2012 R2 oder Windows Server 2012 enthalten standardmäßig die erforderlichen AD DS-Schemaobjekte. Wenn Ihr Domänencontroller jedoch Windows Server 2008 R2 ausführt, müssen Sie das Schema wie unter AD DS-Schemaerweiterungen zur Unterstützung der TPM-Sicherung beschrieben aktualisieren.

Dieses Thema enthält Verfahren (einige davon auf der Grundlage von Visual Basic-Skripts) zur Wiederherstellung von TPM-Informationen und zur Außerbetriebnahme von TPM auf Remotecomputern. Es sind Beispielskripts verfügbar, die Sie an die Anforderungen Ihrer Umgebung anpassen können.

Inhalt dieses Themas:

  1. Überprüfen des Status der Voraussetzungen

  2. Festlegen von Berechtigungen zum Sichern von Kennwortinformationen

  3. Konfigurieren von Gruppenrichtlinien zum Sichern der TPM-Wiederherstellungsinformationen in AD DS

  4. Verwenden von AD DS zur Wiederherstellung von TPM-Informationen

  5. Beispielskripts

Überprüfen des Status der Voraussetzungen

Bevor Sie mit der Sicherung beginnen, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:

  1. Alle Domänencontroller, auf die von Clientcomputern mit TPM-Diensten aus zugegriffen werden kann, laufen unter Windows Server 2012 R2, Windows Server 2012 oder Windows Server 2008 R2 mit dem aktualisierten Schema.

    Tipp  

    Weitere Informationen zu den Schemaerweiterungen, die für eine TPM-Sicherung in Active Directory-Domänen mit Windows Server 2008 R2 erforderlich sind, finden Sie unter AD DS-Schemaerweiterungen zur Unterstützung der TPM-Sicherung.

     

  2. Sie verfügen über Domänenadministratorrechte in der Zielgesamtstruktur, oder Sie verwenden ein Konto, das über die erforderlichen Berechtigungen zur Erweiterung des Schemas für die Zielgesamtstruktur verfügt. Beispiele für Konten mit den erforderlichen Berechtigungen sind Mitglieder der Gruppen „Enterprise-Administratoren“ oder „Schema-Administratoren“.

Festlegen von Berechtigungen zum Sichern von Kennwortinformationen

Dieses Verfahren verwendet das Beispielskript Add-TPMSelfWriteACE.vbs zum Hinzufügen eines ACE(Access Control Entry)- Zugriffssteuerungseintrags, damit die Sicherung der TPM-Wiederherstellungsinformationen möglich ist. Ein Clientcomputer kann TPM-Besitzerinformationen erst dann sichern, wenn dieser ACE hinzugefügt wurde.

Dieses Skript wird auf dem Domänencontroller ausgeführt, den Sie für die Verwaltung der TPM-Wiederherstellungsinformationen verwenden, und dies geschieht unter den folgenden Annahmen:

  • Sie verfügen über Domänenadministratorrechte zum Einrichten von Berechtigungen für das Domänenobjekt auf höchster Ebene.

  • Ihre Zieldomäne ist identisch mit der Domäne für das Benutzerkonto, auf dem das Skript ausgeführt wird. Beispiel: Die Ausführung des Skripts als TESTDOMAIN\admin erweitert die Berechtigungen für TESTDOMAIN.

    Hinweis  

    Möglicherweise müssen Sie das Beispielskript ändern, wenn Sie Berechtigungen für mehrere Domänen einrichten möchten, Sie benötigen aber keine Domänenadministratorkonten für jede dieser Domänen. Suchen Sie die Variable strPathToDomain im Skript, und ändern Sie sie für Ihre Zieldomäne, beispielsweise:

    LDAP://DC=testdomain,DC=nttest,DC=microsoft,DC=com

     

  • Ihre Domäne ist so konfiguriert, dass die Berechtigungen vom Domänenobjekt der höchsten Ebene zu den Zielcomputerobjekten vererbt werden.

    Die Berechtigungen werden nicht wirksam, wenn ein Container in der Hierarchie keine vererbten Berechtigungen zulässt. Standardmäßig wird die Vererbung von Berechtigungen in AD DS festgelegt. Wenn Sie nicht sicher sind, ob Ihre Konfiguration von diesem Standard abweicht, können Sie mit den Schritten für die Einrichtung der Berechtigungen fortfahren. Sie können Ihre Konfiguration wie weiter unten in diesem Thema beschrieben überprüfen. Sie können auch auf die Schaltfläche Effektive Berechtigungen klicken, während Sie die Eigenschaften eines Computerobjekts anzeigen, und dann prüfen, ob Selbst für das Schreiben des Attributs msTPM-OwnerInformation genehmigt ist.

Mt431876.wedge(de-de,VS.85).gifSo fügen Sie einen ACE hinzu, um die Sicherung der TPM-Wiederherstellungsinformationen zuzulassen

  1. Öffnen Sie das Beispielskript Add-TPMSelfWriteACE.vbs.

    Das Skript enthält eine Berechtigungserweiterung, und Sie müssen den Wert von strPathToDomain mit Ihrem Domänennamen ändern.

  2. Speichern Sie Ihre Änderungen an dem Skript.

  3. Geben Sie an der Eingabeaufforderung Folgendes ein, und betätigen Sie dann die EINGABETASTE:

    cscript Add-TPMSelfWriteACE.vbs

Dieses Skript fügt einen einzelnen ACE dem Domänenobjekt der obersten Ebene hinzu. Der ACE ist eine vererbbare Berechtigung, die dem Computer (SELBST) erlaubt, das ms-TPM-OwnerInformation-Attribut für Computerobjekte in der Domäne zu schreiben.

Führen Sie das folgende Verfahren durch, um zu prüfen, ob die korrekten Berechtigungen eingerichtet wurden, und um TPM- und BitLocker-ACEs bei Bedarf aus der Domäne der obersten Ebene zu entfernen.

Mt431876.wedge(de-de,VS.85).gifVerwalten von auf TPM-Schemaobjekten konfigurierten ACEs

  1. Öffnen Sie das Beispielskript List-ACEs.vbs.

  2. Ändern Sie List-ACEs.vbs.

    Sie müssen Folgendes ändern:

    • Wert von strPathToDomain: Verwenden Sie Ihren Domänennamen.

    • Filteroptionen: Das Skript setzt einen Filter für BitLocker- und TPM-Schemaobjekte. Sie müssen daher If IsFilterActive () ändern, wenn Sie andere Schemaobjekte auflisten oder entfernen möchten.

  3. Speichern Sie Ihre Änderungen an dem Skript.

  4. Geben Sie an der Eingabeaufforderung Folgendes ein, und betätigen Sie dann die EINGABETASTE:

    cscript List-ACEs.vbs

    Mit diesem Skript können Sie optional ACEs aus BitLocker- und TPM-Schemaobjekten in der Domäne der obersten Ebene entfernen.

Konfigurieren von Gruppenrichtlinien zum Sichern der TPM-Wiederherstellungsinformationen in AD DS

Verwenden Sie diese Verfahren, um die Richtlinieneinstellung TPM-Gruppenrichtlinieneinstellungen auf einem lokalen Computer zu konfigurieren. In einer Produktionsumgebung besteht eine effiziente Vorgehensweise dafür darin, ein Gruppenrichtlinienobjekt (GPO) zu erstellen oder zu bearbeiten, das sich auf Clientcomputer in der Domäne richten kann.

Mt431876.wedge(de-de,VS.85).gifSo aktivieren Sie eine lokale Richtlinieneinstellung zur Sicherung der TPM-Wiederherstellungsinformationen auf AD DS

  1. Melden Sie sich auf einem Computer mit Domänenzugehörigkeit mit einem Domänenkonto an, das Mitglied der lokalen Administratorgruppe ist.

  2. Öffnen Sie den Editor für lokale Gruppenrichtlinien (gpedit.msc), und navigieren Sie in der Konsolenstruktur zu Computerkonfiguration\Administrative Vorlagen\System.

  3. Klicken Sie auf Trusted Platform Module-Dienste.

  4. Doppelklicken Sie auf TPM-Sicherung in Active Directory-Domänendienste aktivieren.

  5. Klicken Sie auf Aktiviert, und dann auf OK.

Wichtig  

Wenn diese Einstellung aktiviert ist, kann das TPM-Besitzerkennwort nicht festgelegt oder geändert werden, ohne dass der Computer mit der Domäne verbunden ist und die AD DS-Sicherung der TPM-Wiederherstellungsinformationen erfolgreich durchgeführt wird.

 

Verwenden von AD DS zur Wiederherstellung von TPM-Informationen

Wenn Sie TPM-Besitzerinformationen aus AD DS wiederherstellen und zur TPM-Verwaltung verwenden müssen, müssen Sie das ms-TPM-OwnerInformation-Objekt von AD DS lesen und dann manuell eine TPM-Besitzerkennwortsicherungsdatei erstellen, die bereitgestellt werden kann, wenn TPM-Besitzeranmeldedaten benötigt werden.

Mt431876.wedge(de-de,VS.85).gifSo rufen Sie TPM-Besitzersicherungsinformationen aus AD DS ab und erstellen eine Kennwortdatei

  1. Melden Sie sich mithilfe Ihrer Domänenadministrator-Anmeldeinformationen an einem Domänencontroller an.

  2. Kopieren Sie die Beispielskriptdatei Get-TPMOwnerInfo.vbs an einen Speicherort auf Ihrem Computer.

  3. Öffnen Sie ein Eingabeaufforderungsfenster, und ändern Sie den Standardspeicherort auf den Speicherort der Beispielskriptdateien, die Sie im vorherigen Schritt gespeichert haben.

  4. Geben Sie an der Eingabeaufforderung cscript Get-TPMOwnerInfo.vbs ein.

    Die erwartete Ausgabe ist eine Zeichenfolge, die den Hash des Kennworts entspricht, das Sie zuvor erstellt haben.

    Hinweis  

    Wenn die Fehlermeldung „Active Directory: Die Verzeichniseigenschaft wurden nicht im Cache gefunden“ angezeigt wird, stellen Sie sicher, dass Sie ein Domänenadministratorkonto verwenden, das erforderlich ist, um das ms-TPM-OwnerInformation-Attribut zu lesen.

    Die einzige Ausnahme dazu sind Fälle, bei denen Benutzer der Erstellerbesitzer der Computerobjekte sind, die sie der Domäne hinzufügen. Dann können Sie möglicherweise die TPM-Besitzerinformationen für ihre Computerobjekte lesen.

     

  5. Öffnen Sie Editor oder einen anderen Texteditor, kopieren Sie das folgende Beispiel in die Datei, und ersetzen Sie TpmOwnerPasswordHash durch die Zeichenfolge, die Sie im vorherigen Schritt aufgezeichnet haben.

    <?xml version="1.0" encoding="UTF-8"?>
    <!--
    This page is a backup of Trusted Platform Module (TPM) owner
    authorization information. Upon request, use the authorization information to
    prove ownership of the computer's TPM.
    
    
    IMPORTANT: Please keep this file in a secure location away from your computer's
    local hard drive.
    -->
    <tpmOwnerData version="1.0" softwareAuthor="Microsoft Windows [Version 6.1.7600]" creationDate="2009-11-11T14:39:29-08:00" creationUser="DOMAIN\username" machineName="mymachine">
                    <tpmInfo manufacturerId="1096043852"/>
                    <ownerAuth>TpmOwnerPasswordHash</ownerAuth>
    </tpmOwnerData>
    
  6. Speichern Sie diese Datei mit der Erweiterung .tpm auf einem Wechseldatenträger, wie z. B. einen USB-Speicherstick. Wenn Sie auf das TPM zugreifen und das TPM-Besitzerkennwort eingeben müssen, wählen Sie die Option für das Lesen des Kennwort aus einer Datei, und geben Sie den Pfad zu dieser Datei an.

Beispielskripts

Sie können die folgenden Beispielskripts, die in den oben erläuterten Verfahren verwendet werden, ganz oder teilweise verwenden, um AD DS für die Sicherung von TPM-Wiederherstellungsinformationen zu konfigurieren. Je nach der Konfiguration Ihrer Umgebung können individuelle Anpassungen erforderlich sein.

  • Add-TPMSelfWriteACE.vbs: Zum Hinzufügen des ACR für das TPM zu AD DS

  • List-ACEs.vbs: Zum Auflisten oder Entfernen der ACEs, die auf BitLocker- und TPM-Schemaobjekten konfiguriert sind

  • Get-TPMOwnerInfo.vbs: Zum Abrufen der TPM-Wiederherstellungsinformationen aus AD DS für einen bestimmten Computer

Add-TPMSelfWriteACE.vbs

Dieses Skript fügt den Zugriffssteuerungseintrag (ACE) für das TPM zu AD DS hinzu, damit der Computer TPM-Wiederherstellungsinformationen in AD DS sichern kann.

'===============================================================================
'
' This script demonstrates the addition of an Access Control Entry (ACE)
' to allow computers to write Trusted Platform Module (TPM) 
' recovery information to Active Directory.
'
' This script creates a SELF ACE on the top-level domain object, and
' assumes that inheritance of ACL's from the top-level domain object to 
' down-level computer objects are enabled.
'
' 
'
' Last Updated: 12/05/2012
' Last Reviewed: 12/05/2012
' Microsoft Corporation
'
' Disclaimer
' 
' The sample scripts are not supported under any Microsoft standard support program
' or service. The sample scripts are provided AS IS without warranty of any kind. 
' Microsoft further disclaims all implied warranties including, without limitation, 
' any implied warranties of merchantability or of fitness for a particular purpose. 
' The entire risk arising out of the use or performance of the sample scripts and 
' documentation remains with you. In no event shall Microsoft, its authors, or 
' anyone else involved in the creation, production, or delivery of the scripts be 
' liable for any damages whatsoever (including, without limitation, damages for loss 
' of business profits, business interruption, loss of business information, or 
' other pecuniary loss) arising out of the use of or inability to use the sample 
' scripts or documentation, even if Microsoft has been advised of the possibility 
' of such damages.
'
' Version 1.0.2 - Tested and re-released for Windows 8 and Windows Server 2012 

' 
'===============================================================================

' --------------------------------------------------------------------------------
' Access Control Entry (ACE) constants 
' --------------------------------------------------------------------------------

'- From the ADS_ACETYPE_ENUM enumeration
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT      = &H5   'Allows an object to do something

'- From the ADS_ACEFLAG_ENUM enumeration
Const ADS_ACEFLAG_INHERIT_ACE                = &H2   'ACE can be inherited to child objects
Const ADS_ACEFLAG_INHERIT_ONLY_ACE           = &H8   'ACE does NOT apply to target (parent) object

'- From the ADS_RIGHTS_ENUM enumeration
Const ADS_RIGHT_DS_WRITE_PROP                = &H20  'The right to write object properties
Const ADS_RIGHT_DS_CREATE_CHILD              = &H1   'The right to create child objects

'- From the ADS_FLAGTYPE_ENUM enumeration
Const ADS_FLAG_OBJECT_TYPE_PRESENT           = &H1   'Target object type is present in the ACE 
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2   'Target inherited object type is present in the ACE 

' --------------------------------------------------------------------------------
' TPM and FVE schema object GUID's 
' --------------------------------------------------------------------------------

'- ms-TPM-OwnerInformation attribute
SCHEMA_GUID_MS_TPM_OWNERINFORMATION = "{AA4E1A6D-550D-4E05-8C35-4AFCB917A9FE}"

'- ms-FVE-RecoveryInformation object
SCHEMA_GUID_MS_FVE_RECOVERYINFORMATION = "{EA715D30-8F53-40D0-BD1E-6109186D782C}"

'- Computer object
SCHEMA_GUID_COMPUTER = "{BF967A86-0DE6-11D0-A285-00AA003049E2}"

'Reference: "Platform SDK: Active Directory Schema"




' --------------------------------------------------------------------------------
' Set up the ACE to allow write of TPM owner information
' --------------------------------------------------------------------------------

Set objAce1 = createObject("AccessControlEntry")

objAce1.AceFlags = ADS_ACEFLAG_INHERIT_ACE + ADS_ACEFLAG_INHERIT_ONLY_ACE
objAce1.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objAce1.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT + ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT

objAce1.Trustee = "SELF"
objAce1.AccessMask = ADS_RIGHT_DS_WRITE_PROP 
objAce1.ObjectType = SCHEMA_GUID_MS_TPM_OWNERINFORMATION
objAce1.InheritedObjectType = SCHEMA_GUID_COMPUTER



' --------------------------------------------------------------------------------
' NOTE: BY default, the "SELF" computer account can create 
' BitLocker recovery information objects and write BitLocker recovery properties
'
' No additional ACE's are needed.
' --------------------------------------------------------------------------------


' --------------------------------------------------------------------------------
' Connect to Discretional ACL (DACL) for domain object
' --------------------------------------------------------------------------------

Set objRootLDAP = GetObject("LDAP://rootDSE")
strPathToDomain = "LDAP://" & objRootLDAP.Get("defaultNamingContext") ' e.g. string dc=fabrikam,dc=com

Set objDomain = GetObject(strPathToDomain)

WScript.Echo "Accessing object: " + objDomain.Get("distinguishedName")

Set objDescriptor = objDomain.Get("ntSecurityDescriptor")
Set objDacl = objDescriptor.DiscretionaryAcl

 
' --------------------------------------------------------------------------------
' Add the ACEs to the Discretionary ACL (DACL) and set the DACL
' --------------------------------------------------------------------------------

objDacl.AddAce objAce1

objDescriptor.DiscretionaryAcl = objDacl
objDomain.Put "ntSecurityDescriptor", Array(objDescriptor)
objDomain.SetInfo

WScript.Echo "SUCCESS!"

List-ACEs.vbs

Dieses Skript führt ACE-Einträge auf oder entfernt sie, die für BitLocker und TPM-Schemaobjekte für die Domäne der obersten Ebene konfiguriert sind. Damit können Sie prüfen, ob die erwarteten ACEs korrekt hinzugefügt wurden, oder bei Bedarf auf BitLocker oder das TPM bezogene ACEs entfernen.

'===============================================================================
'
' This script lists the access control entries (ACE's) configured on 
' Trusted Platform Module (TPM) and BitLocker Drive Encryption (BDE) schema objects 
' for the top-level domain.
'
' You can use this script to check that the correct permissions have been set and
' to remove TPM and BitLocker ACE's from the top-level domain.
'
' 
' Last Updated: 12/05/2012
' Last Reviewed: 12/02/2012
'
' Microsoft Corporation
'
' Disclaimer
' 
' The sample scripts are not supported under any Microsoft standard support program
' or service. The sample scripts are provided AS IS without warranty of any kind. 
' Microsoft further disclaims all implied warranties including, without limitation, 
' any implied warranties of merchantability or of fitness for a particular purpose. 
' The entire risk arising out of the use or performance of the sample scripts and 
' documentation remains with you. In no event shall Microsoft, its authors, or 
' anyone else involved in the creation, production, or delivery of the scripts be 
' liable for any damages whatsoever (including, without limitation, damages for loss 
' of business profits, business interruption, loss of business information, or 
' other pecuniary loss) arising out of the use of or inability to use the sample 
' scripts or documentation, even if Microsoft has been advised of the possibility 
' of such damages.
'
' Version 1.0.2 - Tested and re-released for Windows 8 and Windows Server 2012
' 
'===============================================================================

' --------------------------------------------------------------------------------
' Usage
' --------------------------------------------------------------------------------

Sub ShowUsage
   Wscript.Echo "USAGE: List-ACEs"
   Wscript.Echo "List access permissions for BitLocker and TPM schema objects"
   Wscript.Echo ""
   Wscript.Echo "USAGE: List-ACEs -remove"
   Wscript.Echo "Removes access permissions for BitLocker and TPM schema objects"
   WScript.Quit
End Sub


' --------------------------------------------------------------------------------
' Parse Arguments
' --------------------------------------------------------------------------------

Set args = WScript.Arguments

Select Case args.Count
  
  Case 0
      ' do nothing - checks for ACE's 
      removeACE = False
      
  Case 1
    If args(0) = "/?" Or args(0) = "-?" Then
      ShowUsage
    Else 
      If UCase(args(0)) = "-REMOVE" Then
            removeACE = True
      End If
    End If

  Case Else
    ShowUsage

End Select

' --------------------------------------------------------------------------------
' Configuration of the filter to show/remove only ACE's for BDE and TPM objects
' --------------------------------------------------------------------------------

'- ms-TPM-OwnerInformation attribute
SCHEMA_GUID_MS_TPM_OWNERINFORMATION = "{AA4E1A6D-550D-4E05-8C35-4AFCB917A9FE}"

'- ms-FVE-RecoveryInformation object
SCHEMA_GUID_MS_FVE_RECOVERYINFORMATION = "{EA715D30-8F53-40D0-BD1E-6109186D782C}"

' Use this filter to list/remove only ACEs related to TPM and BitLocker

aceGuidFilter = Array(SCHEMA_GUID_MS_TPM_OWNERINFORMATION, _
                      SCHEMA_GUID_MS_FVE_RECOVERYINFORMATION)


' Note to script source reader:
' Uncomment the following line to turn off the filter and list all ACEs
'aceGuidFilter = Array()


' --------------------------------------------------------------------------------
' Helper functions related to the list filter for listing or removing ACE's
' --------------------------------------------------------------------------------

Function IsFilterActive()

    If Join(aceGuidFilter) = "" Then
       IsFilterActive = False
    Else 
       IsFilterActive = True
    End If

End Function


Function isAceWithinFilter(ace) 

    aceWithinFilter = False  ' assume first not pass the filter

    For Each guid In aceGuidFilter 

        If ace.ObjectType = guid Or ace.InheritedObjectType = guid Then
           isAceWithinFilter = True           
        End If
    Next

End Function

Sub displayFilter
    For Each guid In aceGuidFilter
       WScript.echo guid
    Next
End Sub


' --------------------------------------------------------------------------------
' Connect to Discretional ACL (DACL) for domain object
' --------------------------------------------------------------------------------

Set objRootLDAP = GetObject("LDAP://rootDSE")
strPathToDomain = "LDAP://" & objRootLDAP.Get("defaultNamingContext") ' e.g. dc=fabrikam,dc=com

Set domain = GetObject(strPathToDomain)

WScript.Echo "Accessing object: " + domain.Get("distinguishedName")
WScript.Echo ""

Set descriptor = domain.Get("ntSecurityDescriptor")
Set dacl = descriptor.DiscretionaryAcl


' --------------------------------------------------------------------------------
' Show Access Control Entries (ACE's)
' --------------------------------------------------------------------------------

' Loop through the existing ACEs, including all ACEs if the filter is not active

i = 1 ' global index
c = 0 ' found count - relevant if filter is active

For Each ace In dacl

 If IsFilterActive() = False or isAceWithinFilter(ace) = True Then

    ' note to script source reader:
    ' echo i to show the index of the ACE
    
    WScript.echo ">            AceFlags: " & ace.AceFlags
    WScript.echo ">             AceType: " & ace.AceType
    WScript.echo ">               Flags: " & ace.Flags
    WScript.echo ">          AccessMask: " & ace.AccessMask
    WScript.echo ">          ObjectType: " & ace.ObjectType
    WScript.echo "> InheritedObjectType: " & ace.InheritedObjectType
    WScript.echo ">             Trustee: " & ace.Trustee
    WScript.echo ""


    if IsFilterActive() = True Then
      c = c + 1

      ' optionally include this ACE in removal list if configured
      ' note that the filter being active is a requirement since we don't
      ' want to accidentally remove all ACEs

      If removeACE = True Then
        dacl.RemoveAce ace  
      End If

    end if

  End If 

  i = i + 1

Next


' Display number of ACEs found

If IsFilterActive() = True Then

  WScript.echo c & " ACE(s) found in " & domain.Get("distinguishedName") _
                 & " related to BitLocker and TPM" 'note to script source reader: change this line if you configure your own 

filter

  ' note to script source reader: 
  ' uncomment the following lines if you configure your own filter
  'WScript.echo ""
  'WScript.echo "The following filter was active: "
  'displayFilter
  'Wscript.echo ""

Else

  i = i - 1
  WScript.echo i & " total ACE(s) found in " & domain.Get("distinguishedName")
  
End If


' --------------------------------------------------------------------------------
' Optionally remove ACE's on a filtered list
' --------------------------------------------------------------------------------

if removeACE = True and IsFilterActive() = True then

  descriptor.DiscretionaryAcl =  dacl
  domain.Put "ntSecurityDescriptor", Array(descriptor)
  domain.setInfo

  WScript.echo c & " ACE(s) removed from " & domain.Get("distinguishedName")

else 

  if removeACE = True then

    WScript.echo "You must specify a filter to remove ACEs from " & domain.Get("distinguishedName") 
 
 end if


end if

Get-TPMOwnerInfo.vbs

Dieses Skript ruft TPM-Wiederherstellungsinformationen aus AD DS für einen bestimmten Computer ab, damit Sie überprüfen können, ob nur Domänenadministratoren (oder delegierte Rollen) gesicherte TPM-Wiederherstellungsinformationen lesen können, und ob diese Informationen in korrekter Weise gesichert werden.

'=================================================================================
'
' This script demonstrates the retrieval of Trusted Platform Module (TPM) 
' recovery information from Active Directory for a particular computer.
'
' It returns the TPM owner information stored as an attribute of a 
' computer object.
'
' Last Updated: 12/05/2012
' Last Reviewed: 12/05/2012
'
' Microsoft Corporation
'
' Disclaimer
' 
' The sample scripts are not supported under any Microsoft standard support program
' or service. The sample scripts are provided AS IS without warranty of any kind. 
' Microsoft further disclaims all implied warranties including, without limitation, 
' any implied warranties of merchantability or of fitness for a particular purpose. 
' The entire risk arising out of the use or performance of the sample scripts and 
' documentation remains with you. In no event shall Microsoft, its authors, or 
' anyone else involved in the creation, production, or delivery of the scripts be 
' liable for any damages whatsoever (including, without limitation, damages for loss 
' of business profits, business interruption, loss of business information, or 
' other pecuniary loss) arising out of the use of or inability to use the sample 
' scripts or documentation, even if Microsoft has been advised of the possibility 
' of such damages.
'
' Version 1.0 - Initial release
' Version 1.1 - Updated GetStrPathToComputer to search the global catalog.
' Version 1.1.2 - Tested and re-released for Windows 8 and Windows Server 2012
' 
'=================================================================================


' --------------------------------------------------------------------------------
' Usage
' --------------------------------------------------------------------------------

Sub ShowUsage
   Wscript.Echo "USAGE: Get-TpmOwnerInfo [Optional Computer Name]"
   Wscript.Echo "If no computer name is specified, the local computer is assumed."
   WScript.Quit
End Sub

' --------------------------------------------------------------------------------
' Parse Arguments
' --------------------------------------------------------------------------------

Set args = WScript.Arguments

Select Case args.Count
  
  Case 0
      ' Get the name of the local computer      
      Set objNetwork = CreateObject("WScript.Network")
      strComputerName = objNetwork.ComputerName
    
  Case 1
    If args(0) = "/?" Or args(0) = "-?" Then
      ShowUsage
    Else
      strComputerName = args(0)
    End If
  
  Case Else
    ShowUsage

End Select


' --------------------------------------------------------------------------------
' Get path to Active Directory computer object associated with the computer name
' --------------------------------------------------------------------------------

Function GetStrPathToComputer(strComputerName) 

    ' Uses the global catalog to find the computer in the forest
    ' Search also includes deleted computers in the tombstone

    Set objRootLDAP = GetObject("LDAP://rootDSE")
    namingContext = objRootLDAP.Get("defaultNamingContext") ' e.g. string dc=fabrikam,dc=com    

    strBase = "<GC://" & namingContext & ">"
 
    Set objConnection = CreateObject("ADODB.Connection") 
    Set objCommand = CreateObject("ADODB.Command") 
    objConnection.Provider = "ADsDSOOBject" 
    objConnection.Open "Active Directory Provider" 
    Set objCommand.ActiveConnection = objConnection 

    strFilter = "(&(objectCategory=Computer)(cn=" &  strComputerName & "))"
    strQuery = strBase & ";" & strFilter  & ";distinguishedName;subtree" 

    objCommand.CommandText = strQuery 
    objCommand.Properties("Page Size") = 100 
    objCommand.Properties("Timeout") = 100
    objCommand.Properties("Cache Results") = False 

    ' Enumerate all objects found. 

    Set objRecordSet = objCommand.Execute 
    If objRecordSet.EOF Then
      WScript.echo "The computer name '" &  strComputerName & "' cannot be found."
      WScript.Quit 1
    End If

    ' Found object matching name

    Do Until objRecordSet.EOF 
      dnFound = objRecordSet.Fields("distinguishedName")
      GetStrPathToComputer = "LDAP://" & dnFound
      objRecordSet.MoveNext 
    Loop 


    ' Clean up. 
    Set objConnection = Nothing 
    Set objCommand = Nothing 
    Set objRecordSet = Nothing 

End Function

' --------------------------------------------------------------------------------
' Securely access the Active Directory computer object using Kerberos
' --------------------------------------------------------------------------------

Set objDSO = GetObject("LDAP:")
strPath = GetStrPathToComputer(strComputerName)


WScript.Echo "Accessing object: " + strPath

Const ADS_SECURE_AUTHENTICATION = 1
Const ADS_USE_SEALING = 64 '0x40
Const ADS_USE_SIGNING = 128 '0x80

Set objComputer = objDSO.OpenDSObject(strPath, vbNullString, vbNullString, _
                                   ADS_SECURE_AUTHENTICATION + ADS_USE_SEALING + ADS_USE_SIGNING)

' --------------------------------------------------------------------------------
' Get the TPM owner information from the Active Directory computer object
' --------------------------------------------------------------------------------

strOwnerInformation = objComputer.Get("msTPM-OwnerInformation")
WScript.echo "msTPM-OwnerInformation: " + strOwnerInformation

Weitere Ressourcen

Trusted Platform Module – Technologieübersicht

Grundlagen zu Trusted Platform Module

TPM-Gruppenrichtlinieneinstellungen

TPM-Cmdlets in Windows PowerShell

AD DS-Schemaerweiterungen zur Unterstützung der TPM-Sicherung

Bereiten Sie Ihre Organisation für BitLocker vor: Planen und Richtlinien, vgl. TPM-Hinweise