近期有網絡加域的項目,全部的用戶所有從工做組環境切換到域環境,本地帳號遷移到域帳號。因客戶端比較多,仔細研究了一下微軟的加域和用戶遷移工具,結合在網上搜到的一些腳本,本身編寫了一個Windows Xp,Windows 7自動加域及自動遷移用戶配置文件的腳本。windows
該腳本使用到了幾個工具:
一、Netdom.exe:計算機加域用到,XP和Windows 7須使用不一樣版本,可分別去2003和2008系統光盤裏找。其中Windows 7還要使用到netdom.exe.mui文件,該文件可到 2008系統 %windir%\system32\en-US\目錄下複製。
二、moveuser.exe:XP系統遷移用戶配置工具,網上下載或2003系統裏面找。
三、USMT 4.0工具包:Windows 7用戶配置遷移工具。網上下載,若是有安裝Win AIK的,能夠直接去目錄下找,具體路徑忘記了。其實這個工具的低版本也能夠遷移XP系統,不過感受比較複雜。
1、目錄準備
收集齊了這幾個工具,先在C盤根目錄下建立Domain_Migration目錄,該目錄結構以下圖:USMT,Win7,XP三個目錄以及Auto.bat文件
Win7文件夾下再放netdom.exe,netdom.exe.mui,Win7AutoAddDomain.bat三個文件
Xp文件夾下放moveuser.exe,netdom.exe,XpAutoAddDomain.bat
2、使用說明
一、將Domain_Migration文件夾複製到C盤根目錄
二、以管理員身份運行 Auto.bat
三、按照提示操做,更改計算機名後必須重啓,再次運行Auto.bat加域
四、加域後重啓,使用臨時域管理員登錄,再次運行Auto.bat轉移用戶配置文件
五、轉移完成後,註銷,使用域帳號登錄
六、刪除Domain_Migration文件夾
3、bat文件詳細說明
一、Auto.bat:選擇操做系統類型,調用加域腳本,內容比較簡單
@echo off
color 1e
ECHO ******選擇操做系統類型*******
:START
echo
1: winXP
echo
2: win 7
echo
q: quit
SET /P OS_type=:
IF "%OS_type%"=="q" GoTo EOF
IF "%OS_type%"=="1" GoTo WinXp
IF "%OS_type%"=="2" GoTo Win7
echo 選擇有誤,請從新選擇 & GoTo START
:WinXp
echo 你選擇了WinXP系統!
call "c:\Domain_Migration\xp\XpAutoAddDomain.bat"
exit
:Win7
echo 你選擇了Win7系統!
if not exist "%windir%\system32\netdom.exe" copy "c:\Domain_Migration\win7\netdom.exe" "%windir%\system32" /y 服務器
if not exist "%windir%\system32\en-US\netdom.exe.mui" copy "c:\Domain_Migration\win7\netdom.exe.mui" "%windir%\system32\en-US\" /y網絡
REM 調用Windows 7加域遷移腳本
call "c:\Domain_Migration\win7\Win7AutoAddDomain.bat"
exit
:EOF
Exit
***************************************************************************************************************************************************************************************************************
REM 腳本結束
二、Win7AutoAddDomain.bat:更改計算機名,加域,遷移用戶配置文件
@echo off
color 1e
cd /d C:\Domain_Migration\xp
::功能說明與使用說明注意事項
ECHO 請在使用本腳本前修改相應的參數爲實際值
set dns1=192.168.12.5
set dns2=192.168.2.3
REM 請設置本身真實環境的域名、域管理員帳號和密碼
set domainname=test.com
set domainadminname=testadmin
set domainadminpassword=!@@#3%%^^
::判斷是否已經加入域,若是加入了則直接跳轉
::wmic ntdomain get domainname | findstr /i "%domainname%
::if %errorlevel% equ 0 echo 該計算機已經加入域
&& goto moveuser
ipconfig /all | findstr /i "%domainname%" >nul && echo 該計算機已經加入域,準備轉移配置文件 && goto moveuser
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷當前登錄用戶是否有管理員權限,若是沒有則註銷後從新以管理員登錄
:admin
ECHO ************************判斷當前用戶權限******************
net user %username% | findstr "*Administrators"
if %errorlevel% equ 1 (echo 當前用戶不是本地管理員,請註銷後使用有本地管理員權限的用戶登陸) else (goto DNS)
set /p logoff=如今要註銷嗎
if /i "%logoff%"=="y" logoff
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷當前DNS設置是否爲指定地址,若是不是,則清空當前配置後從新設置DNS
:DNS
ECHO *************************更改DNS****************************
netsh interface ip show dns | findstr "%dns1%" 1>nul && echo DNS已經設置爲
%dns1% && goto renamecomputername
echo 清理更改現有DNS...
for /f "skip=2 tokens=2,* " %%i in ('netsh interface show interface') do (
set netname=%%j
if "%%j"=="環回
" goto back
if "%%j"=="內部
" goto back
netsh interface ip delete dns name="%%j" addr=all >nul
netsh interface ip add dns name="%%j" addr=%dns1% index=1 >nul
netsh interface ip add dns name="%%j" addr=%dns2% index=2 >nul
)
:back
echo DNS更改完成
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷計算機名是否已經更改,如更改則進入下一部分;如未更改是否須要更改計算機名,更改完成後要求從新啓動計算機
:renamecomputername
ECHO *********************更改計算機名****************************
set a=%computername%
echo 當前計算機名爲:%a%
set /p b=請輸入要修改的計算機名稱(跳過請輸入s):
if /i "%b%"=="s" goto joindomain
if /i "%b%"=="" echo 計算機名不能爲空
&& goto renamecomputername
wmic computersystem Where name="%a%" call rename "%b%" >nul
if %errorlevel% equ 1 (echo 更改計算機名失敗,請手工更改
&& pause && exit) else (echo 計算機名已更改成%b%)
set /p reboot=更改計算機名完成,如今要重起嗎?y/n:
if /i "%reboot%"=="y" shutdown /r /t 0
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷計算機是否已加入域,如加入域則繼續下一部分;不然檢查相應服務是否啓動,自動加入域(用戶名密碼部分參數須要自行更改)
:joindomain
ECHO ***********************計算機加入域*************************
if /i "%userdomain%"=="%domainname%" goto moveuser
rem 判斷服務TCP/IP NetBIOS HELPER服務是否禁用或未啓動,若是禁用則更改成自動,未啓動則自動啓動,不然顯示服務已啓動
sc query state= inactive | findstr /c:"TCP/IP NetBIOS" && (echo 服務未啓動,正在啓動服務
... && sc config lmhosts start= auto && sc start lmhosts) || echo 服務已啓動
if /i "%userdomain%"=="%domainname%" do (echo 計算機已加入域
&& goto moveuser)
if not exist netdom.exe echo 請將netdom工具放到同文件夾下再嘗試運行 && goto end
.\netdom join %computername% /Domain:%domainname% /UserD:%domainadminname% /PasswordD:%domainadminpassword% || echo 加入域失敗,請檢查網絡環境及批處理參數是否正確 && goto end
set /p shutdown=加入域完成,如今要重起嗎?y/n:
if /i "%shutdown%"=="y" shutdown /r /t 0
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::使用moveuser工具對用戶配置文件進行遷移(提示用戶輸入要遷移的用戶和要遷移到的用戶)
:moveuser
ECHO *********************用戶配置文件遷移*************************
if not exist moveuser.exe echo 請將MOVEUSER工具放到同文件夾下再嘗試運行 && goto end
net user
:retry
set /p user=請輸入你要遷移的本地用戶帳戶名稱:
if /i "%user%"=="%username%" echo 轉移的用戶配置文件爲當前登錄用戶,請從新啓動後使用域管理員登錄再進行轉移 && goto end
net user %user% 2>nul 1>nul || echo 你輸入的本地帳戶不存在,請從新輸入
&& goto retry
set /p domainuser=請輸入你要遷移到的域帳號名稱:
net user %domainuser% /domain 2>nul 1>nul
if %errorlevel% neq 0 (echo 你要轉移到的域帳戶還沒有創建,請創建後從新嘗試遷移) && goto end
moveuser %user% %domainname%\%domainuser% /k /y | findstr /i "failed" 2>nul 1>nul && echo 用戶配置文件遷移失敗,請檢查配置 && goto end
::if %errorlevel% neq 0 echo 用戶配置文件遷移失敗,請檢查配置 && goto end
::若是是從本機管理員用戶遷移,則域用戶也變成管理員,此處刪除域用戶管理員權限,加入PowerUsers羣組,可自行更改
echo 更改域用戶爲Power User權限
net localgroup administrators %domainname%\%domainuser% /delete
net localgroup "Power Users" %domainname%\%domainuser% /add
echo 配置文件遷移成功,請註銷後使用您的域帳號登錄
set /p logoff=如今要註銷嗎?y/n:
if /i "%logoff%"=="y" logoff
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::結束退出
:end
pause>nul
exit
***************************************************************************************************************************************************************************************************************
REM 腳本結束
三、Win7AutoAddDomain.bat,更改計算機名,加域,遷移用戶配置文件
@echo off
color 1e
::功能說明與使用說明注意事項
ECHO 請在使用本腳本前修改相應的參數爲實際值
set dns1=192.168.12.5
set dns2=192.168.2.3
REM 請設置本身真實環境的域名、域管理員帳號和密碼
set domainname=test.com
set domainadminname=testadmin
set domainadminpassword=!@@#3%%^^
::判斷是否已經加入域,若是加入了則直接跳轉
::wmic ntdomain get domainname | findstr /i "%domainname%
::if %errorlevel% equ 0 echo 該計算機已經加入域
&& goto moveuser
ipconfig /all | findstr /i "%domainname%" >nul && echo 該計算機已經加入域,準備轉移配置文件 && goto moveuser
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷當前登錄用戶是否有管理員權限,若是沒有則註銷後從新以管理員登錄
:admin
ECHO ************************判斷當前用戶權限******************
net user %username% | findstr "*Administrators"
if %errorlevel% equ 1 (echo 當前用戶不是本地管理員,請註銷後使用有本地管理員權限的用戶登陸) else (goto DNS)
set /p logoff=如今要註銷嗎
if /i "%logoff%"=="y" logoff
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷當前DNS設置是否爲指定地址,若是不是,則清空當前配置後從新設置DNS
:DNS
ECHO *************************更改DNS****************************
netsh interface ip show dns | findstr "%dns1%" 1>nul && echo DNS已經設置爲%dns1% && goto renamecomputername
echo 清理更改現有DNS...
for /f "skip=2 tokens=2,* " %%i in ('netsh interface show interface') do (
set netname=%%j
if "%%j"=="環回
" goto back
if "%%j"=="內部
" goto back
netsh interface ip delete dns name="%%j" addr=all >nul
netsh interface ip add dns name="%%j" addr=%dns1% index=1 >nul
netsh interface ip add dns name="%%j" addr=%dns2% index=2 >nul
)
:back
echo DNS更改完成
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷計算機名是否已經更改,如更改則進入下一部分;如未更改是否須要更改計算機名,更改完成後要求從新啓動計算機
:renamecomputername
ECHO *********************更改計算機名****************************
set a=%computername%
echo 當前計算機名爲:%a%
set /p b=請輸入要修改的計算機名稱(跳過請輸入s):
if /i "%b%"=="s" goto joindomain
if /i "%b%"=="" echo 計算機名不能爲空
&& goto renamecomputername
wmic computersystem Where name="%a%" call rename "%b%" >nul
if %errorlevel% equ 1 (echo 更改計算機名失敗,請手工更改
&& pause && exit) else (echo 計算機名已更改成%b%)
set /p reboot=更改計算機名完成,如今要重起嗎?y/n:
if /i "%reboot%"=="y" shutdown /r /t 0
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷計算機是否已加入域,如加入域則繼續下一部分;不然檢查相應服務是否啓動,自動加入域(用戶名密碼部分參數須要自行更改)
:joindomain
ECHO ***********************計算機加入域*************************
if /i "%userdomain%"=="%domainname%" goto moveuser
rem 判斷服務TCP/IP NetBIOS HELPER服務是否禁用或未啓動,若是禁用則更改成自動,未啓動則自動啓動,不然顯示服務已啓動
sc query state= inactive | findstr /c:"TCP/IP NetBIOS" && (echo 服務未啓動,正在啓動服務
... && sc config lmhosts start= auto && sc start lmhosts) || echo 服務已啓動
if /i "%userdomain%"=="%domainname%" do (echo 計算機已加入域 && goto moveuser)
.\netdom join %computername% /Domain:%domainname% /UserD:%domainadminname% /PasswordD:%domainadminpassword% || echo 加入域失敗,請檢查網絡環境及批處理參數是否正確 && goto end
echo 加入域完成,重啓電腦後請使用域管理員賬戶登錄轉移我的配置文件!
set /p shutdown=如今要重起嗎?y/n:
if /i "%shutdown%"=="y" shutdown /r /t 0
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::使用moveuser工具對用戶配置文件進行遷移(提示用戶輸入要遷移的用戶和要遷移到的用戶)
:moveuser
ECHO *********************用戶配置文件遷移*************************
net user
:retry
set /p user=請輸入你要遷移的本地用戶帳戶名稱:
if /i "%user%"=="%username%" echo 轉移的用戶配置文件爲當前登錄用戶,請從新啓動後使用域管理員登錄再進行轉移 && goto end
net user %user% 2>nul 1>nul || echo 你輸入的本地帳戶不存在,請從新輸入
&& goto retry
set /p domainuser=請輸入你要遷移到的域帳號名稱:
net user %domainuser% /domain 2>nul 1>nul
if %errorlevel% neq 0 (echo 你要轉移到的域帳戶還沒有創建,請創建後從新嘗試遷移) && goto end
cd /d C:\Domain_Migration\USMT\x86
echo 正在備份我的配置文件,請耐心等候......
scanstate \\fileserver\migration\%computername%-%user% /c /i:miguser.xml /i:migapp.xml /v:13 /ue:*\* /ui:%computername%\%user% /l:scan.log /localonly /o /efs:copyraw
echo 正在轉移我的配置文件,請耐心等候......
loadstate \\fileserver\migration\%computername%-%user% /mu:%computername%\%user%:%domainname%\%domainuser% /i:miguser.xml /i:migapp.xml /v:13
echo 將域帳號加入本地PowerUser羣組
net localgroup administrators %domainname%\%domainuser% /delete
net localgroup "Power Users" %domainname%\%domainuser% /add
echo 刪除臨時文件
del "%windir%\system32\netdom.exe"
del "%windir%\system32\en-US\netdom.exe.mui"
echo 配置文件遷移成功,請註銷後使用您的域帳號登錄
set /p logoff=如今要註銷嗎?y/n:
if /i "%logoff%"=="y" logoff
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::結束退出
:end
pause>nul
exit
***************************************************************************************************************************************************************************************************************
REM 腳本結束
4、USMT4.0工具使用說明
Win7AutoAddDomain.bat文件使用到了USMT工具,具體用法參考微軟網站。
scanstate \\fileserver\migration\%computername%-%user% /c /i:miguser.xml /i:migapp.xml /v:13 /ue:*\* /ui:%computername%\%user% /l:scan.log /localonly /o /efs:copyraw
參數 \\fileserver\migration\%computername%-%user%是服務器上共享目錄,以電腦名-用戶名保存用戶配置文件
參數 /c 遇到錯誤不中斷,僅記錄錯誤信息,
參數 /i:miguser.xml /i:migapp.xml /v:13 轉移用戶文件和程序設置,詳細記錄
參數 /ue:*\* /ui:%computername%\%user%,僅轉移你輸入的本地帳戶
參數 /l:scan.log 記錄過程到scan.log日誌文件
參數 /localonly 僅轉移本地硬盤文件,忽略網絡映射、U盤、移動盤等
參數 /o 覆蓋服務器上已經存在的同名轉移文件
參數 /efs:copyraw同時轉移EFS加密,避免文件在新用戶下不能打開
echo 正在轉移我的配置文件,請耐心等候......
loadstate \\fileserver\migration\%computername%-%user% /mu:%computername%\%user%:%domainname%\%domainuser% /i:miguser.xml /i:migapp.xml /v:13
參數 /mu:%computername%\%user%:%domainname%\%domainuser% 將本地用戶配置文件轉移到域用戶
因該工具過於強大,我要求的只是將工做組用戶配置文件轉移到域用戶下,因此我修改了miguser.xml,使它不轉移共享文件和其餘分區下的.doc,.docx等文件,僅僅轉移指定的用戶配置文件。修改後的miguser.xml以下:
<?xml version="1.0" encoding="UTF-8"?>
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/miguser">
<_locDefinition>
<_locDefault _loc="locNone"/>
<_locTag _loc="locData">displayName</_locTag>
</_locDefinition>
<!-- This component migrates My Video files -->
<component type="Documents" context="User">
<displayName _locID="miguser.myvideo">My Video</displayName>
<paths>
<path type="File">%CSIDL_MYVIDEO%</path>
</paths>
<role role="Data">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<!-- This component migrates My Music files -->
<component type="Documents" context="User">
<displayName _locID="miguser.mymusic">My Music</displayName>
<paths>
<path type="File">%CSIDL_MYMUSIC%</path>
</paths>
<role role="Data">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<!-- This component migrates Desktop files -->
<component type="Documents" context="User">
<displayName _locID="miguser.desktop">Desktop</displayName>
<paths>
<path type="File">%CSIDL_DESKTOP%</path>
</paths>
<role role="Settings">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_DESKTOP%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_DESKTOP%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_DESKTOP% [desktop.ini]</pattern>
<pattern type="File">%CSIDL_DESKTOP%\* [*]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<!-- This component migrates Start Menu files -->
<component type="System" context="User">
<displayName _locID="miguser.startmenu">Start Menu</displayName>
<paths>
<path type="File">%CSIDL_STARTMENU%</path>
</paths>
<role role="Settings">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_STARTMENU%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_STARTMENU% [desktop.ini]</pattern>
<pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<!-- This component migrates My Documents files -->
<component type="Documents" context="User">
<displayName _locID="miguser.mydocs">My Documents</displayName>
<paths>
<path type="File">%CSIDL_PERSONAL%</path>
</paths>
<role role="Data">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_PERSONAL%")</condition>
</detect>
</detects>
<rules>
<exclude>
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
<pattern type="File">%CSIDL_MYPICTURES%\* [*]</pattern>
<pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
</objectSet>
</exclude>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_PERSONAL%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_PERSONAL% [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<!-- This component migrates My Pictures files -->
<component type="Documents" context="User">
<displayName _locID="miguser.mypics">My Pictures</displayName>
<paths>
<path type="File">%CSIDL_MYPICTURES%</path>
</paths>
<role role="Data">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYPICTURES%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_MYPICTURES%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYPICTURES% [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<!-- This component migrates Favorites -->
<component type="System" context="User">
<displayName _locID="miguser.favs">Favorites</displayName>
<paths>
<path type="File">%CSIDL_FAVORITES%</path>
</paths>
<role role="Settings">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_FAVORITES%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_FAVORITES%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_FAVORITES% [desktop.ini]</pattern>
<pattern type="File">%CSIDL_FAVORITES%\* [*]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<!-- This component migrates Quick Launch files -->
<component type="System" context="User">
<displayName _locID="miguser.quicklaunch">Quick Launch</displayName>
<paths>
<path type="File">%CSIDL_APPDATA%\Microsoft\Internet Explorer\Quick Launch</path>
</paths>
<role role="Settings">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_APPDATA%\Microsoft\Internet Explorer\Quick Launch")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_APPDATA%\Microsoft\Internet Explorer\Quick Launch\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_APPDATA%\Microsoft\Internet Explorer\Quick Launch [desktop.ini]</pattern>
<pattern type="File">%CSIDL_APPDATA%\Microsoft\Internet Explorer\Quick Launch\* [*]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<!-- This component migrates user files with known extension-->
<component type="Documents" context="System">
<displayName _locID="miguser.userdata">User Data</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.111]", "Fixed")</script>
</objectSet>
</include>
<!-- Uncomment the following if you want all the files collected from the above rules to move to <systemDrive>:\data -->
<!--
<locationModify script="MigXmlHelper.Move('%SYSTEMDRIVE%\Data')">
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.111]", "Fixed")</script>
</objectSet>
</locationModify>
-->
<exclude>
<objectSet>
<pattern type="File">%PROFILESFOLDER%\* [*]</pattern>
<pattern type="File">%CSIDL_WINDOWS%\* [*]</pattern>
<pattern type="File">%CSIDL_PROGRAM_FILES%\* [*]</pattern>
<!--We are trying to remove system files from other windows installation on the same machine-->
<!--This is the best guess we can come up with, in case of these folder name localized, we might not be
to do whatever we have intended here-->
<script>MigXmlHelper.GenerateDrivePatterns ("\Program Files\* [*]", "Fixed")</script>
<script>MigXmlHelper.GenerateDrivePatterns ("\Winnt\* [*]", "Fixed")</script>
<script>MigXmlHelper.GenerateDrivePatterns ("\Windows\* [*]", "Fixed")</script>
</objectSet>
</exclude>
</rules>
</role>
</component>
</migration>