|
|
#include "StdAfx.h"
#include "Migration.h"
#include "Switch.h"
namespace {
void __stdcall AdmtCheckError(HRESULT hr) { if (FAILED(hr)) { IErrorInfo* pErrorInfo = NULL;
if (GetErrorInfo(0, &pErrorInfo) == S_OK) { _com_raise_error(hr, pErrorInfo); } else { _com_issue_error(hr); } } }
}
//---------------------------------------------------------------------------
// Migration Class
//---------------------------------------------------------------------------
void CMigration::Initialize(CParameterMap& mapParams) { bool bValue; long lValue; _bstr_t strValue;
if (mapParams.GetValue(SWITCH_TEST_MIGRATION, bValue)) { m_spMigration->TestMigration = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_INTRA_FOREST, bValue)) { m_spMigration->IntraForest = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_SOURCE_DOMAIN, strValue)) { m_spMigration->SourceDomain = strValue; }
if (mapParams.GetValue(SWITCH_SOURCE_OU, strValue)) { m_spMigration->SourceOu = strValue; }
if (mapParams.GetValue(SWITCH_TARGET_DOMAIN, strValue)) { m_spMigration->TargetDomain = strValue; }
if (mapParams.GetValue(SWITCH_TARGET_OU, strValue)) { m_spMigration->TargetOu = strValue; }
if (mapParams.GetValue(SWITCH_RENAME_OPTION, lValue)) { m_spMigration->RenameOption = lValue; }
if (mapParams.GetValue(SWITCH_RENAME_PREFIX_OR_SUFFIX, strValue)) { m_spMigration->RenamePrefixOrSuffix = strValue; }
if (mapParams.GetValue(SWITCH_PASSWORD_OPTION, lValue)) { m_spMigration->PasswordOption = lValue; }
if (mapParams.GetValue(SWITCH_PASSWORD_SERVER, strValue)) { AdmtCheckError(m_spMigration->put_PasswordServer(strValue)); }
if (mapParams.GetValue(SWITCH_PASSWORD_FILE, strValue)) { m_spMigration->PasswordFile = strValue; }
if (mapParams.GetValue(SWITCH_CONFLICT_OPTIONS, lValue)) { m_spMigration->ConflictOptions = lValue; }
if (mapParams.GetValue(SWITCH_CONFLICT_PREFIX_OR_SUFFIX, strValue)) { m_spMigration->ConflictPrefixOrSuffix = strValue; }
if (mapParams.GetValue(SWITCH_USER_PROPERTIES_TO_EXCLUDE, strValue)) { m_spMigration->UserPropertiesToExclude = strValue; }
if (mapParams.GetValue(SWITCH_GROUP_PROPERTIES_TO_EXCLUDE, strValue)) { m_spMigration->GroupPropertiesToExclude = strValue; }
if (mapParams.GetValue(SWITCH_COMPUTER_PROPERTIES_TO_EXCLUDE, strValue)) { m_spMigration->ComputerPropertiesToExclude = strValue; } }
//---------------------------------------------------------------------------
// User Migration Class
//---------------------------------------------------------------------------
void CUserMigration::Initialize(CParameterMap& mapParams) { bool bValue; long lValue;
if (mapParams.GetValue(SWITCH_DISABLE_OPTION, lValue)) { m_spUser->DisableOption = lValue; }
if (mapParams.GetValue(SWITCH_SOURCE_EXPIRATION, lValue)) { m_spUser->SourceExpiration = lValue; }
if (mapParams.GetValue(SWITCH_MIGRATE_SIDS, bValue)) { m_spUser->MigrateSIDs = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_TRANSLATE_ROAMING_PROFILE, bValue)) { m_spUser->TranslateRoamingProfile = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_UPDATE_USER_RIGHTS, bValue)) { m_spUser->UpdateUserRights = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_MIGRATE_GROUPS, bValue)) { m_spUser->MigrateGroups = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_UPDATE_PREVIOUSLY_MIGRATED_OBJECTS, bValue)) { m_spUser->UpdatePreviouslyMigratedObjects = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_FIX_GROUP_MEMBERSHIP, bValue)) { m_spUser->FixGroupMembership = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_MIGRATE_SERVICE_ACCOUNTS, bValue)) { m_spUser->MigrateServiceAccounts = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_SOURCE_EXPIRATION, lValue)) { m_spUser->SourceExpiration = lValue; }
_variant_t vntExcludeNames;
if (!mapParams.GetValues(SWITCH_EXCLUDE_NAME, vntExcludeNames)) { _bstr_t strExcludeFile;
if (mapParams.GetValue(SWITCH_EXCLUDE_FILE, strExcludeFile)) { vntExcludeNames = strExcludeFile; } }
_variant_t vntIncludeNames; _bstr_t strIncludeFile; long lIncludeOption;
if (mapParams.GetValues(SWITCH_INCLUDE_NAME, vntIncludeNames)) { AdmtCheckError(m_spUser->raw_Migrate(admtData, vntIncludeNames, vntExcludeNames)); } else if (mapParams.GetValue(SWITCH_INCLUDE_FILE, strIncludeFile)) { AdmtCheckError(m_spUser->raw_Migrate(admtFile, _variant_t(strIncludeFile), vntExcludeNames)); } else if (mapParams.GetValue(SWITCH_INCLUDE_DOMAIN, lIncludeOption)) { AdmtCheckError(m_spUser->raw_Migrate(admtDomain | lIncludeOption, _variant_t(), vntExcludeNames)); } else { ThrowError(E_INVALIDARG, IDS_E_NO_INCLUDE_OPTION_SPECIFIED); } }
//---------------------------------------------------------------------------
// Group Migration Class
//---------------------------------------------------------------------------
void CGroupMigration::Initialize(CParameterMap& mapParams) { bool bValue; long lValue;
if (mapParams.GetValue(SWITCH_MIGRATE_SIDS, bValue)) { m_spGroup->MigrateSIDs = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_UPDATE_GROUP_RIGHTS, bValue)) { m_spGroup->UpdateGroupRights = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_UPDATE_PREVIOUSLY_MIGRATED_OBJECTS, bValue)) { m_spGroup->UpdatePreviouslyMigratedObjects = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_FIX_GROUP_MEMBERSHIP, bValue)) { m_spGroup->FixGroupMembership = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_MIGRATE_MEMBERS, bValue)) { m_spGroup->MigrateMembers = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_DISABLE_OPTION, lValue)) { m_spGroup->DisableOption = lValue; }
if (mapParams.GetValue(SWITCH_SOURCE_EXPIRATION, lValue)) { m_spGroup->SourceExpiration = lValue; }
if (mapParams.GetValue(SWITCH_TRANSLATE_ROAMING_PROFILE, bValue)) { m_spGroup->TranslateRoamingProfile = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
_variant_t vntExcludeNames;
if (!mapParams.GetValues(SWITCH_EXCLUDE_NAME, vntExcludeNames)) { _bstr_t strExcludeFile;
if (mapParams.GetValue(SWITCH_EXCLUDE_FILE, strExcludeFile)) { vntExcludeNames = strExcludeFile; } }
_variant_t vntIncludeNames; _bstr_t strIncludeFile; long lIncludeOption;
if (mapParams.GetValues(SWITCH_INCLUDE_NAME, vntIncludeNames)) { AdmtCheckError(m_spGroup->raw_Migrate(admtData, vntIncludeNames, vntExcludeNames)); } else if (mapParams.GetValue(SWITCH_INCLUDE_FILE, strIncludeFile)) { AdmtCheckError(m_spGroup->raw_Migrate(admtFile, _variant_t(strIncludeFile), vntExcludeNames)); } else if (mapParams.GetValue(SWITCH_INCLUDE_DOMAIN, lIncludeOption)) { AdmtCheckError(m_spGroup->raw_Migrate(admtDomain | lIncludeOption, _variant_t(), vntExcludeNames)); } else { ThrowError(E_INVALIDARG, IDS_E_NO_INCLUDE_OPTION_SPECIFIED); } }
//---------------------------------------------------------------------------
// Computer Migration Class
//---------------------------------------------------------------------------
void CComputerMigration::Initialize(CParameterMap& mapParams) { bool bValue; long lValue;
if (mapParams.GetValue(SWITCH_TRANSLATION_OPTION, lValue)) { m_spComputer->TranslationOption = lValue; }
if (mapParams.GetValue(SWITCH_TRANSLATE_FILES_AND_FOLDERS, bValue)) { m_spComputer->TranslateFilesAndFolders = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_TRANSLATE_LOCAL_GROUPS, bValue)) { m_spComputer->TranslateLocalGroups = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_TRANSLATE_PRINTERS, bValue)) { m_spComputer->TranslatePrinters = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_TRANSLATE_REGISTRY, bValue)) { m_spComputer->TranslateRegistry = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_TRANSLATE_SHARES, bValue)) { m_spComputer->TranslateShares = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_TRANSLATE_USER_PROFILES, bValue)) { m_spComputer->TranslateUserProfiles = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_TRANSLATE_USER_RIGHTS, bValue)) { m_spComputer->TranslateUserRights = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_RESTART_DELAY, lValue)) { m_spComputer->RestartDelay = lValue; }
_variant_t vntExcludeNames;
if (!mapParams.GetValues(SWITCH_EXCLUDE_NAME, vntExcludeNames)) { _bstr_t strExcludeFile;
if (mapParams.GetValue(SWITCH_EXCLUDE_FILE, strExcludeFile)) { vntExcludeNames = strExcludeFile; } }
_variant_t vntIncludeNames; _bstr_t strIncludeFile; long lIncludeOption;
if (mapParams.GetValues(SWITCH_INCLUDE_NAME, vntIncludeNames)) { AdmtCheckError(m_spComputer->raw_Migrate(admtData, vntIncludeNames, vntExcludeNames)); } else if (mapParams.GetValue(SWITCH_INCLUDE_FILE, strIncludeFile)) { AdmtCheckError(m_spComputer->raw_Migrate(admtFile, _variant_t(strIncludeFile), vntExcludeNames)); } else if (mapParams.GetValue(SWITCH_INCLUDE_DOMAIN, lIncludeOption)) { AdmtCheckError(m_spComputer->raw_Migrate(admtDomain | lIncludeOption, _variant_t(), vntExcludeNames)); } else { ThrowError(E_INVALIDARG, IDS_E_NO_INCLUDE_OPTION_SPECIFIED); } }
//---------------------------------------------------------------------------
// Security Translation Class
//---------------------------------------------------------------------------
void CSecurityTranslation::Initialize(CParameterMap& mapParams) { bool bValue; long lValue; _bstr_t strValue;
if (mapParams.GetValue(SWITCH_TRANSLATION_OPTION, lValue)) { m_spSecurity->TranslationOption = lValue; }
if (mapParams.GetValue(SWITCH_TRANSLATE_FILES_AND_FOLDERS, bValue)) { m_spSecurity->TranslateFilesAndFolders = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_TRANSLATE_LOCAL_GROUPS, bValue)) { m_spSecurity->TranslateLocalGroups = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_TRANSLATE_PRINTERS, bValue)) { m_spSecurity->TranslatePrinters = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_TRANSLATE_REGISTRY, bValue)) { m_spSecurity->TranslateRegistry = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_TRANSLATE_SHARES, bValue)) { m_spSecurity->TranslateShares = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_TRANSLATE_USER_PROFILES, bValue)) { m_spSecurity->TranslateUserProfiles = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_TRANSLATE_USER_RIGHTS, bValue)) { m_spSecurity->TranslateUserRights = bValue ? VARIANT_TRUE : VARIANT_FALSE; }
if (mapParams.GetValue(SWITCH_SID_MAPPING_FILE, strValue)) { AdmtCheckError(m_spSecurity->put_SidMappingFile(strValue)); }
_variant_t vntExcludeNames;
if (!mapParams.GetValues(SWITCH_EXCLUDE_NAME, vntExcludeNames)) { _bstr_t strExcludeFile;
if (mapParams.GetValue(SWITCH_EXCLUDE_FILE, strExcludeFile)) { vntExcludeNames = strExcludeFile; } }
_variant_t vntIncludeNames; _bstr_t strIncludeFile; long lIncludeOption;
if (mapParams.GetValues(SWITCH_INCLUDE_NAME, vntIncludeNames)) { AdmtCheckError(m_spSecurity->raw_Translate(admtData, vntIncludeNames, vntExcludeNames)); } else if (mapParams.GetValue(SWITCH_INCLUDE_FILE, strIncludeFile)) { AdmtCheckError(m_spSecurity->raw_Translate(admtFile, _variant_t(strIncludeFile), vntExcludeNames)); } else if (mapParams.GetValue(SWITCH_INCLUDE_DOMAIN, lIncludeOption)) { AdmtCheckError(m_spSecurity->raw_Translate(admtDomain | lIncludeOption, _variant_t(), vntExcludeNames)); } else { ThrowError(E_INVALIDARG, IDS_E_NO_INCLUDE_OPTION_SPECIFIED); } }
//---------------------------------------------------------------------------
// Service Enumeration Class
//---------------------------------------------------------------------------
void CServiceEnumeration::Initialize(CParameterMap& mapParams) { _variant_t vntExcludeNames;
if (!mapParams.GetValues(SWITCH_EXCLUDE_NAME, vntExcludeNames)) { _bstr_t strExcludeFile;
if (mapParams.GetValue(SWITCH_EXCLUDE_FILE, strExcludeFile)) { vntExcludeNames = strExcludeFile; } }
_variant_t vntIncludeNames; _bstr_t strIncludeFile; long lIncludeOption;
if (mapParams.GetValues(SWITCH_INCLUDE_NAME, vntIncludeNames)) { AdmtCheckError(m_spService->raw_Enumerate(admtData, vntIncludeNames, vntExcludeNames)); } else if (mapParams.GetValue(SWITCH_INCLUDE_FILE, strIncludeFile)) { AdmtCheckError(m_spService->raw_Enumerate(admtFile, _variant_t(strIncludeFile), vntExcludeNames)); } else if (mapParams.GetValue(SWITCH_INCLUDE_DOMAIN, lIncludeOption)) { AdmtCheckError(m_spService->raw_Enumerate(admtDomain | lIncludeOption, _variant_t(), vntExcludeNames)); } else { ThrowError(E_INVALIDARG, IDS_E_NO_INCLUDE_OPTION_SPECIFIED); } }
//---------------------------------------------------------------------------
// Report Generation Class
//---------------------------------------------------------------------------
void CReportGeneration::Initialize(CParameterMap& mapParams) { long lValue; _bstr_t strValue;
if (mapParams.GetValue(SWITCH_REPORT_TYPE, lValue)) { m_spReport->Type = lValue; }
if (mapParams.GetValue(SWITCH_REPORT_FOLDER, strValue)) { AdmtCheckError(m_spReport->put_Folder(strValue)); }
_variant_t vntExcludeNames;
if (!mapParams.GetValues(SWITCH_EXCLUDE_NAME, vntExcludeNames)) { _bstr_t strExcludeFile;
if (mapParams.GetValue(SWITCH_EXCLUDE_FILE, strExcludeFile)) { vntExcludeNames = strExcludeFile; } }
_variant_t vntIncludeNames; _bstr_t strIncludeFile; long lIncludeOption;
if (mapParams.GetValues(SWITCH_INCLUDE_NAME, vntIncludeNames)) { AdmtCheckError(m_spReport->raw_Generate(admtData, vntIncludeNames, vntExcludeNames)); } else if (mapParams.GetValue(SWITCH_INCLUDE_FILE, strIncludeFile)) { AdmtCheckError(m_spReport->raw_Generate(admtFile, _variant_t(strIncludeFile), vntExcludeNames)); } else if (mapParams.GetValue(SWITCH_INCLUDE_DOMAIN, lIncludeOption)) { AdmtCheckError(m_spReport->raw_Generate(admtDomain | lIncludeOption, _variant_t(), vntExcludeNames)); } else { AdmtCheckError(m_spReport->raw_Generate(admtNone, _variant_t(), _variant_t())); } }
|