# This Perl code resets the specified trust.
# ---------------------------------------------------------------
# Adapted from VBScript code contained in the book:
# "Active Directory Cookbook" by Robbie Allen
# Publisher: O'Reilly and Associates
# ISBN: 0-596-00466-4
# Book web site: http://rallenhome.com/books/adcookbook/code.html
# ---------------------------------------------------------------
# ------ SCRIPT CONFIGURATION ------
# Set to the DNS or NetBIOS name for the Windows 2000,
# Windows NT domain or Kerberos realm you want to reset the trust for.
my $strTrustName = "<TrustToCheck>";
# Set to the DNS name of the source or trusting domain.
my $strDomain = "<TrustingDomain>";
# ------ END CONFIGURATION ---------
use Win32::OLE;
$Win32::OLE::Warn = 3;
# Enable SC_RESET during trust enumerations
my $objTrustProv = Win32::OLE->GetObject("winmgmts:\\\\$strDomain\\root\\MicrosoftActiveDirectory:Microsoft_TrustProvider=@");
$objTrustProv->TrustCheckLevel = 3; # Enumerate with SC_RESET
$objTrustProv->Put_;
# Query the trust and print status information
my $objWMI = Win32::OLE->GetObject("winmgmts:\\\\$strDomain\\root\\MicrosoftActiveDirectory");
my $objTrusts = $objWMI->ExecQuery("Select * " .
" from Microsoft_DomainTrustStatus " .
" where TrustedDomain = '$strTrustName'" );
foreach my $objTrust (in $objTrusts) {
print objTrust->TrustedDomain,"\n";;
print " TrustedAttributes: " , $objTrust->TrustAttributes, "\n";
print " TrustedDCName: " , $objTrust->TrustedDCName, "\n";
print " TrustedDirection: " , $objTrust->TrustDirection, "\n";
print " TrustIsOk: " , $objTrust->TrustIsOK, "\n";
print " TrustStatus: " , $objTrust->TrustStatus, "\n";
print " TrustStatusString: " , $objTrust->TrustStatusString, "\n";
print " TrustType: " , $objTrust->TrustType, "\n\n";
print ""
}
|