# This script was originally published in the Exchange Cookbook,
# (http://www.exchangebookcook.com). Written by Paul Robichaux,
# Missy Koslosky, and Devin Ganger. Redistributed with permission
# of the publisher, O'Reilly & Associates.
# This code uses ADO to query the MSExchServerRole attribute for all servers
# in the domain.
# --------------SCRIPT CONFIGURATION------------------
use Win32::OLE;
$strBase = '<LDAP://cn=administrative groups,cn=<orgName>,cn=microsoft exchange,cn=services,cn=configuration,<domain>';
# dc=<domain>,dc=<tld>;"
$strFilter = '(objectcategory=MSExchExchangeServer);';
$strAttrs = 'ServerRole,cn;';
$strScope = 'subtree';
# ---------------END CONFIGURATION---------------------
$objConn = Win32::OLE->new('ADODB.Connection');
$objConn->Open('Provider=ADsDSOObject;');
$objRS = $objConn->Execute($strBase . $strFilter . $strAttrs . $strScope);
$objRS->MoveFirst();
while (!$objRS->EOF) {
$strName = $objRS->Fields('cn')->value;
# Get the value of the MSExchServerRole
if ($objRS->Fields('ServerRole')->value == 1) {
$strRole = 'Front-End Server';
}
elsif (!($objRS->Fields('ServerRole')->value)) {
$strRole = 'Back-End Server';
}
elsif ($objRS->Fields('ServerRole')->value == 0) {
$strRole = 'Back-End Server';
}
print $strName . ' is a ' . $strRole, "\n";
$objRS->MoveNext();
}
|