windows-nt/Source/XPSP1/NT/admin/admt/command/switch.cpp
2020-09-26 16:20:57 +08:00

126 lines
4.8 KiB
C++

#include "StdAfx.h"
#include "Switch.h"
namespace
{
//---------------------------------------------------------------------------
// Switch Text Structure
//---------------------------------------------------------------------------
struct SSwitchText
{
int nSwitch;
LPCTSTR pszText;
};
const SSwitchText s_SwitchText[] =
{
// tasks
{ SWITCH_TASK, _T("user,group,computer,security,service,report,key") },
// general task options
{ SWITCH_OPTION_FILE, _T("o,OptionFile") },
{ SWITCH_TEST_MIGRATION, _T("tm,TestMigration") },
{ SWITCH_INTRA_FOREST, _T("if,IntraForest") },
{ SWITCH_SOURCE_DOMAIN, _T("sd,SourceDomain") },
{ SWITCH_SOURCE_OU, _T("so,SourceOu") },
{ SWITCH_TARGET_DOMAIN, _T("td,TargetDomain") },
{ SWITCH_TARGET_OU, _T("to,TargetOu") },
{ SWITCH_RENAME_OPTION, _T("ro,RenameOption") },
{ SWITCH_RENAME_PREFIX_OR_SUFFIX, _T("rt,RenamePrefixOrSuffix") },
{ SWITCH_PASSWORD_OPTION, _T("po,PasswordOption") },
{ SWITCH_PASSWORD_SERVER, _T("ps,PasswordServer") },
{ SWITCH_PASSWORD_FILE, _T("pf,PasswordFile") },
{ SWITCH_CONFLICT_OPTIONS, _T("co,ConflictOptions") },
{ SWITCH_CONFLICT_PREFIX_OR_SUFFIX, _T("ct,ConflictPrefixOrSuffix") },
{ SWITCH_USER_PROPERTIES_TO_EXCLUDE, _T("ux,UserPropertiesToExclude") },
{ SWITCH_GROUP_PROPERTIES_TO_EXCLUDE, _T("gx,GroupPropertiesToExclude") },
{ SWITCH_COMPUTER_PROPERTIES_TO_EXCLUDE, _T("cx,ComputerPropertiesToExclude") },
// specific task options
{ SWITCH_DISABLE_OPTION, _T("dot,DisableOption") },
{ SWITCH_SOURCE_EXPIRATION, _T("sep,SourceExpiration") },
{ SWITCH_MIGRATE_SIDS, _T("mss,MigrateSids") },
{ SWITCH_TRANSLATE_ROAMING_PROFILE, _T("trp,TranslateRoamingProfile") },
{ SWITCH_UPDATE_USER_RIGHTS, _T("uur,UpdateUserRights") },
{ SWITCH_MIGRATE_GROUPS, _T("mgs,MigrateGroups") },
{ SWITCH_UPDATE_PREVIOUSLY_MIGRATED_OBJECTS, _T("umo,UpdatePreviouslyMigratedObjects") },
{ SWITCH_FIX_GROUP_MEMBERSHIP, _T("fgm,FixGroupMembership") },
{ SWITCH_MIGRATE_SERVICE_ACCOUNTS, _T("msa,MigrateServiceAccounts") },
{ SWITCH_UPDATE_GROUP_RIGHTS, _T("ugr,UpdateGroupRights") },
{ SWITCH_MIGRATE_MEMBERS, _T("mms,MigrateMembers") },
{ SWITCH_TRANSLATION_OPTION, _T("tot,TranslationOption") },
{ SWITCH_TRANSLATE_FILES_AND_FOLDERS, _T("tff,TranslateFilesAndFolders") },
{ SWITCH_TRANSLATE_LOCAL_GROUPS, _T("tlg,TranslateLocalGroups") },
{ SWITCH_TRANSLATE_PRINTERS, _T("tps,TranslatePrinters") },
{ SWITCH_TRANSLATE_REGISTRY, _T("trg,TranslateRegistry") },
{ SWITCH_TRANSLATE_SHARES, _T("tss,TranslateShares") },
{ SWITCH_TRANSLATE_USER_PROFILES, _T("tup,TranslateUserProfiles") },
{ SWITCH_TRANSLATE_USER_RIGHTS, _T("tur,TranslateUserRights") },
{ SWITCH_RESTART_DELAY, _T("rdl,RestartDelay") },
{ SWITCH_SID_MAPPING_FILE, _T("smf,SidMappingFile") },
{ SWITCH_REPORT_TYPE, _T("rpt,ReportType") },
{ SWITCH_REPORT_FOLDER, _T("rpf,ReportFolder") },
// include switches
{ SWITCH_INCLUDE_NAME, _T("n,IncludeName") },
{ SWITCH_INCLUDE_FILE, _T("f,IncludeFile") },
{ SWITCH_INCLUDE_DOMAIN, _T("d,IncludeDomain") },
// exclude switches
{ SWITCH_EXCLUDE_NAME, _T("en,ExcludeName") },
{ SWITCH_EXCLUDE_FILE, _T("ef,ExcludeFile") },
// help
{ SWITCH_HELP, _T("?,h,help") },
};
const UINT SWITCH_COUNT = countof(s_SwitchText);
}
//---------------------------------------------------------------------------
// Switch Map
//---------------------------------------------------------------------------
// constructor
CSwitchMap::CSwitchMap()
{
static const _TCHAR DELIMITERS[] = _T(",");
_TCHAR szSwitch[256];
for (UINT i = 0; i < SWITCH_COUNT; i++)
{
int nSwitch = s_SwitchText[i].nSwitch;
_ASSERT(_tcslen(s_SwitchText[i].pszText) < countof(szSwitch));
_tcscpy(szSwitch, s_SwitchText[i].pszText);
for (LPTSTR psz = _tcstok(szSwitch, DELIMITERS); psz; psz = _tcstok(NULL, DELIMITERS))
{
insert(value_type(_bstr_t(psz), nSwitch));
}
}
}
// GetSwitch Method
int CSwitchMap::GetSwitch(LPCTSTR pszSwitch)
{
int nSwitch = -1;
iterator it = find(_bstr_t(pszSwitch));
if (it != end())
{
nSwitch = it->second;
}
return nSwitch;
}