XML 요소 라이브러리

이 문서에서는 USMT(사용자 상태 마이그레이션 도구)와 함께 사용할 마이그레이션 .xml 파일을 작성하는 데 사용할 수 있는 XML 요소 및 도우미 함수에 대해 설명합니다. 이 문서에서는 XML에 대한 기본 지식을 가정합니다.

이 문서에서는 XML 요소 및 도우미 함수 외에도 다음을 수행합니다.

  • 인코딩된 위치 및 위치 패턴을 지정하는 방법을 설명합니다.
  • 내부 USMT용 함수는 만 사용합니다.
  • 도우미 함수와 함께 사용할 수 있는 버전 태그입니다.

요소 및 도우미 함수

다음 표에서는 USMT와 함께 사용할 수 있는 XML 요소 및 도우미 함수에 대해 설명합니다.

Elements A-K 요소 L-Z 도우미 함수
<addObjects>
<특성>
<바이트>
<명령줄>
<구성 요소>
<조건>
<조건>
<콘텐츠>
<contentModify>
<설명>
<destinationCleanup>
<감지>
<감지>
<검색>
<Displayname>
<환경>
<제외>
<excludeAttributes>
<확장>
<확장>
<externalProcess>
<아이콘>
<include>
<includeAttribute>
<라이브러리>
<위치>
<locationModify>
<_locDefinition>
<제조업체>
<병합>
<마이그레이션>
<namedElements>
<개체>
<objectSet>
<경로>
<경로>
<패턴>
<처리>
<플러그인>
<역할>
<규칙>
<스크립트>
<텍스트>
<unconditionalExclude>
<변수>
<버전>
<windowsObjects>
<condition> 함수
<content> 함수
<contentModify> 함수
<필터 함수 포함> 및 <제외>
<locationModify> 함수
<병합> 함수
<스크립트> 함수
내부 USMT 함수

<addObjects>

<addObjects> 요소는 원본 컴퓨터에 하나 이상의 개체가 있는지 에뮬레이트합니다. 자식 <개체> 요소는 에뮬레이트된 개체의 세부 정보를 제공합니다. 콘텐츠가 <스크립트> 요소인 경우 호출 결과는 개체의 배열입니다.

구문:

<addObjects>
</addObjects>

다음 예제는 파일에서 가져옵니다 MigApp.xml .

<addObjects>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
      <attributes>DWORD</attributes>
      <bytes>0B000000</bytes>
   </object>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
      <attributes>DWORD</attributes>
      <bytes>00000000</bytes>
   </object>
</addObjects>

<특성>

<attributes> 요소는 레지스트리 키 또는 파일에 대한 특성을 정의합니다.

  • 발생 횟수:<개체>에 대해 한 번

  • 부모 요소:<object>

  • 자식 요소: none

구문:

<attributes>Content</attributes>
설정 필수 여부
콘텐츠 콘텐츠는 지정된 개체의 형식에 따라 달라집니다.
  • 파일의 경우 콘텐츠는 쉼표로 구분된 다음 특성을 포함하는 문자열일 수 있습니다.
    • Archive
    • 읽기 전용
    • System
    • Hidden
  • 레지스트리 키의 경우 콘텐츠는 다음 유형 중 하나일 수 있습니다.
    • 없음
    • 문자열
    • ExpandString
    • 이진
    • Dword
    • REG_SZ

다음 예제는 파일에서 가져옵니다 MigApp.xml .

<object>
   <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
   <attributes>DWORD</attributes>
   <bytes>00000000</bytes>
</object> 

<바이트>

위치>가 레지스트리 키 또는 디렉터리에 해당하는 경우< 바이트가 무시되므로 바이트> 요소는 파일에 대해서만 지정할 수 있습니다.<><

  • 발생 횟수: 0개 또는 1개

  • 부모 요소:<object>

  • 자식 요소: none

구문:

<bytes string="Yes|No" expand="Yes|No">Content</bytes>
설정 필수 여부
string 아니요, 기본값은 아니요입니다. 콘텐츠를 문자열로 해석할지 바이트로 해석해야 하는지 여부를 결정합니다.
expand 아니요(기본값 = 예) expand 매개 변수가 이면 바이트> 요소의< 콘텐츠가 먼저 원본 컴퓨터의 컨텍스트에서 확장된 다음 해석됩니다.
콘텐츠 문자열의 값에 따라 달라집니다.
  • 문자열이 이면 바이트> 요소의< 내용이 문자열로 해석됩니다.
  • 문자열이 아니요인 경우 바이트> 요소의< 콘텐츠는 바이트로 해석됩니다. 두 문자마다 바이트의 16진수 값을 나타냅니다. 예를 들어 는 616263 ANSI 문자열의 abc 표현입니다. 문자열 종결자를 포함하는 UNICODE 문자열 abc 의 전체 표현은 입니다 6100620063000000.

다음 예제는 파일에서 가져옵니다 MigApp.xml .

<object>
   <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
   <attributes>DWORD</attributes>
   <bytes>00000000</bytes>
</object> 

<명령줄>

<commandLine> 요소는 ScanStateLoadState 도구를 실행하기 전이나 후에 서비스 또는 애플리케이션을 시작하거나 중지하는 데 사용할 수 있습니다.

구문:

<commandLine>CommandLineString</commandLine>
설정 필수 여부
CommandLineString 유효한 명령줄입니다.

<구성 요소>

<구성 요소> 요소는 사용자 지정 .xml 파일에 필요합니다. 이 요소는 마이그레이션 .xml 파일의 가장 기본적인 구문을 정의합니다. 예를 들어 파일에서 MigApp.xmlMicrosoft Office 2016은 다른 구성 요소인 Microsoft Office Access 2016 포함하는 구성 요소입니다. 자식 요소를 사용하여 구성 요소를 정의할 수 있습니다.

구성 요소는 다른 구성 요소 내에 중첩될 수 있습니다. 즉, <구성 요소 요소는 다음 두 가지 경우에 구성 요소>>내의 역할 요소의<<자식일 수 있습니다.>

  1. 부모 <구성 요소> 요소가 컨테이너인 경우
  2. 자식 <구성 요소의 역할이 부모 구성> 요소>와 동일한 경우<

구문:

<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"
hidden="Yes|No">
</component>
설정 필수 여부
유형 다음 항목을 사용하여 설정을 그룹화하고 구성 요소의 형식을 정의할 수 있습니다.
  • 시스템: 운영 체제 설정. 모든 Windows 구성 요소는 이 형식으로 정의됩니다.
    type="System"defaultSupported="FALSE"인 경우 명령줄에 LoadState.exe 지정된 .xml 파일에 해당하는 구성 요소가 없는 한 설정이 마이그레이션되지 않습니다. 예를 들어 기본 MigSys.xml 파일에는 type="System"defaultSupported="FALSE"가 있는 구성 요소가 포함됩니다. 이 파일이 명령줄에 ScanState.exe 지정된 경우 마이그레이션할 설정에 LoadState.exe 대한 명령줄에도 파일을 지정해야 합니다. 도구가 LoadState.exe 동등한 구성 요소를 검색해야 하므로 파일을 지정해야 합니다. 즉, 구성 요소에는 .xml 파일의 마이그레이션 urlid와 동일한 표시 이름이 있어야 합니다. 그렇지 않으면 LoadState 도구가 해당 설정을 저장소에서 마이그레이션하지 않습니다. 이 설정은 원본 컴퓨터와 동일하거나 다른 버전의 Windows 대상 컴퓨터에 저장소를 사용할 수 있기 때문에 유용합니다.
  • 응용 프로그램: 애플리케이션에 대한 설정입니다.
  • 장치: 디바이스에 대한 설정입니다.
  • 문서: 파일을 지정합니다.
context 아니오
기본값 = UserAndSystem
이 매개 변수의 scope 정의합니다. 즉, 특정 사용자의 컨텍스트에서, 전체 운영 체제에서 또는 둘 다에서 이 구성 요소를 처리할지 여부를 정의합니다.
가능한 가장 큰 scope 구성 요소>에< 의해 설정됩니다. 예를 들어 구성 요소>에<User 컨텍스트가 있고 <규칙> 요소에 UserAndSystem<컨텍스트가 있는 경우 규칙> 요소는 User 컨텍스트가 있는 것처럼 작동합니다. rules> 요소에<System 컨텍스트가 있는 경우 규칙> 요소가 없는 것처럼< 작동합니다.
  • 사용자: 각 사용자에 대한 구성 요소를 평가합니다.
  • 시스템: 시스템에 대해 구성 요소를 한 번만 평가합니다.
  • UserAndSystem: 전체 운영 체제 및 각 사용자에 대한 구성 요소를 평가합니다.
defaultSupported 아니오
(기본값 = TRUE)
TRUE, FALSE, YES 또는 NO 중 어느 것이든 될 수 있습니다. 이 매개 변수가 FALSE (또는 NO)인 경우 대상 컴퓨터에 동등한 구성 요소가 없는 한 구성 요소가 마이그레이션되지 않습니다.
type="System"defaultSupported="FALSE"인 경우 명령줄에 지정된 .xml 파일에 해당하는 구성 요소가 없는 한 설정이 마이그레이션되지 LoadState.exe 않습니다. 예를 들어 기본 MigSys.xml 파일에는 type="System"defaultSupported="FALSE"가 있는 구성 요소가 포함됩니다. 이 파일이 명령줄에 ScanState.exe 지정된 경우 마이그레이션할 설정에 LoadState.exe 대한 명령줄에도 파일을 지정해야 합니다. LoadState 도구가 동등한 구성 요소를 검색해야 하므로 두 명령줄에서 파일을 지정해야 합니다. 즉, 구성 요소에 .xml 파일의 마이그레이션 urlid가 동일하고 표시 이름이 동일해야 합니다. 그렇지 않으면 LoadState 도구가 저장소에서 이러한 설정을 마이그레이션하지 않습니다. 이 설정은 원본 컴퓨터와 동일하거나 다른 버전의 Windows 대상 컴퓨터에 저장소를 사용할 수 있기 때문에 유용합니다.
숨겨진 이 매개 변수는 내부 USMT 전용입니다.

예를 들어 기본 마이그레이션 .xml 파일을 참조하세요.

<조건>

detect>, objectSet 및 addObjects 요소 아래<condition> 요소는 여전히 지원되지만 이후 버전의 USMT에서는 사용되지 않을 수 있으므로 조건 요소를 더 이상 사용하지 않는 것이 좋습니다.<<><><> condition 요소가 더 이상 사용되지 않는 경우 condition> 요소를 사용하는< 스크립트를 다시 작성해야 합니다.>< 대신 objectSet> 및 addObjects 요소 내에서< 조건을 사용해야 하는 경우 보다 강력한 <조건> 요소를 사용하는 것이 좋습니다.>< <conditions> 요소를 사용하면 복잡한 부울 문을 공식화할 수 있습니다.

condition> 요소에< 부울 결과가 있습니다. 이 요소를 사용하여 부모 요소가 평가되는 조건을 지정할 수 있습니다. 현재 조건 중에서 FALSE를 반환하는 경우 부모 요소는 평가되지 않습니다.

  • 발생 횟수: 무제한입니다.

  • 부모 요소:<conditions>, <detect>, <objectSet>, <addObjects>

  • 자식 요소: none

  • 도우미 함수: 다음 <조건> 함수는 , , , IsNative64Bit(), IsOSLaterThan, DoesObjectExistIsSystemContextIsSameContentIsSameObjectDoesFileVersionMatchIsFileVersionAboveDoesStringContentContainDoesStringContentEqualIsOSEarlierThanIsFileVersionBelow및 요소DoesOSMatchIsSameStringContent함께 사용할 수 있습니다.

구문:

<condition negation="Yes|No">ScriptName</condition>
설정 필수 여부
부정 아니오
기본값 = 아니요
"예" 는 조건의 True/False 값을 반전합니다.
ScriptName 이 마이그레이션 섹션 내에 정의된 스크립트입니다.

예를 들어 다음 코드 샘플<에서 조건> 요소 AB는 별도의 <조건> 섹션에 있으므로 AND 연산자에 의해 함께 조인됩니다.

<detection>
   <conditions>
      <condition>A</condition>
   </conditions>
   <conditions operation="AND">
      <condition>B</condition>
   </conditions>
</detection>

그러나 다음 코드 샘플<에서 조건> 요소인 ABOR 연산자가 같은 조건> 섹션에 있기 때문에 함께< 조인됩니다.

<detection>
   <conditions>
      <condition>A</condition>
      <condition>B</condition>
   </conditions>
</detection>

<condition> 함수

조건> 함수는< 부울 값을 반환합니다. 이러한 요소는 addObjects 조건에서 사용할< 수 있습니다>.

운영 체제 버전 함수

  • DoesOSMatch

    모든 일치 항목은 대/소문자를 구분하지 않습니다.

    구문: DoesOSMatch("OSType","OSVersion")

    설정 필수 여부
    OSType 이 설정에 유효한 값은 NT뿐입니다. 그러나 조건> 함수가< 올바르게 작동하려면 이 설정을 설정해야 합니다.
    OSVersion 주 버전, 부 버전, 빌드 번호 및 수정된 서비스 디스켓 버전은 마침표로 구분됩니다. 예를 들면 5.0.2600.Service Pack 1입니다. 버전의 부분 사양을 와 같은 5.0.*패턴으로 지정할 수도 있습니다.

    예시:

    <condition>MigXmlHelper.DoesOSMatch("NT","\*")</condition>
    
  • IsNative64Bit

    마이그레이션 프로세스가 네이티브 64비트 프로세스로 실행되는 경우 IsNative64Bit 함수는 TRUE 를 반환합니다. 즉, Windows on Windows(WOW)가 없는 64비트 시스템에서 실행되는 프로세스입니다. 그렇지 않으면 FALSE를 반환 합니다.

  • IsOSLaterThan

    모든 비교는 대/소문자를 구분하지 않습니다.

    구문: IsOSLaterThan("OSType","OSVersion")

    설정 필수 여부
    OSType 9x 또는 NT일 수 있습니다. OSType이 현재 운영 체제의 형식과 일치하지 않으면 FALSE를 반환합니다. 예를 들어 현재 운영 체제가 Windows NT 기반이고 OSType"9x"인 경우 결과는 FALSE입니다.
    OSVersion 주 버전, 부 버전, 빌드 번호 및 마침표로 구분된 수정된 서비스 디스켓 버전입니다. 예를 들면 5.0.2600.Service Pack 1입니다. 버전의 부분 사양도 지정할 수 있지만 와 같은 5.0패턴은 허용되지 않습니다.

    현재 운영 체제가 OSVersion보다 같거나 같으면 IsOSLaterThan 함수는 TRUE를 반환합니다.

    예시:

    <condition negation="Yes">MigXmlHelper.IsOSLaterThan("NT","6.0")</condition>
    
  • IsOSEarlierThan

    모든 비교는 대/소문자를 구분하지 않습니다.

    구문: IsOSEarlierThan("OSType","OSVersion")

    설정 필수 여부
    OSType 9x 또는 NT일 수 있습니다. OSType이 현재 운영 체제의 형식과 일치하지 않으면 FALSE를 반환합니다. 예를 들어 현재 운영 체제가 Windows NT 기반이고 OSType"9x"인 경우 결과는 FALSE입니다.
    OSVersion 주 버전, 부 버전, 빌드 번호 및 마침표로 구분된 수정된 서비스 디스켓 버전입니다. 예를 들면 5.0.2600.Service Pack 1입니다. 버전의 부분 사양도 지정할 수 있지만 와 같은 5.0패턴은 허용되지 않습니다.

    현재 운영 체제가 OSVersion보다 이전인 경우 IsOSEarlierThan 함수는 TRUE를 반환합니다.

개체 콘텐츠 함수

  • DoesObjectExist

    위치 패턴과 일치하는 개체가 있으면 DoesObjectExist 함수는 TRUE 를 반환합니다. 그렇지 않으면 FALSE를 반환 합니다. 위치 패턴은 열거형을 시도하기 전에 확장됩니다.

    구문: DoesObjectExist("ObjectType","EncodedLocationPattern")

    설정 필수 여부
    ObjectType 개체 형식을 정의합니다. 파일 또는 레지스트리일 수 있습니다.
    EncodedLocationPattern 위치 패턴입니다. 환경 변수가 허용됩니다.

    이 요소의 예제는 파일을 참조하세요 MigApp.xml .

  • DoesFileVersionMatch

    검사 패턴은 대/소문자를 구분하지 않습니다.

    구문: DoesFileVersionMatch("EncodedFileLocation","VersionTag","VersionValue")

    설정 필수 여부
    EncodedFileLocation 선택된 파일의 위치 패턴 입니다. 환경 변수가 허용됩니다.
    VersionTag 선택된 버전 태그 값입니다.
    VersionValue 문자열 패턴입니다. 예를 들어 "Microsoft*"입니다.

    예시:

    <condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","6.\*")</condition>   <condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","7.\*")</condition>
    
  • IsFileVersionAbove

    파일 버전이 VersionValue보다 높은 경우 IsFileVersionAbove 함수는 TRUE를 반환합니다.

    구문: IsFileVersionAbove("EncodedFileLocation","VersionTag","VersionValue")

    설정 필수 여부
    EncodedFileLocation 선택된 파일의 위치 패턴 입니다. 환경 변수가 허용됩니다.
    VersionTag 선택된 버전 태그 값입니다.
    VersionValue 비교할 값입니다. 패턴을 지정할 수 없습니다.
  • IsFileVersionBelow

    구문: IsFileVersionBelow("EncodedFileLocation","VersionTag","VersionValue")

    설정 필수 여부
    EncodedFileLocation 선택된 파일의 위치 패턴 입니다. 환경 변수가 허용됩니다.
    VersionTag 선택된 버전 태그 값입니다.
    VersionValue 비교할 값입니다. 패턴을 지정할 수 없습니다.
  • IsSystemContext

    현재 컨텍스트가 "시스템"인 경우 IsSystemContext 함수는 TRUE를 반환합니다. 그렇지 않으면 FALSE를 반환 합니다.

    구문: IsSystemContext()

  • DoesStringContentEqual

    지정된 개체의 문자열 표현이 과 동일한 경우 DoesStringContentEqual 함수는 TRUE 를 반환합니다 StringContent.

    구문: DoesStringContentEqual("ObjectType","EncodedLocation","StringContent")

    설정 필수 여부
    ObjectType 개체의 형식을 정의합니다. 파일 또는 레지스트리일 수 있습니다.
    EncodedLocationPattern 검사되는 개체의 인코딩된 위치 입니다. 환경 변수를 지정할 수 있습니다.
    StringContent 검사되는 문자열입니다.

    예시:

    <condition negation="Yes">MigXmlHelper.DoesStringContentEqual("File","%USERNAME%","")</condition>
    
  • DoesStringContentContain

    개체의 문자열 표현에 하나 이상의 StrToFind가 있는 경우 DoesStringContentContain 함수는 TRUE를 반환합니다.

    구문: DoesStringContentContain("ObjectType","EncodedLocation","StrToFind")

    설정 필수 여부
    ObjectType 개체의 형식을 정의합니다. 파일 또는 레지스트리일 수 있습니다.
    EncodedLocationPattern 검사되는 개체의 인코딩된 위치 입니다. 환경 변수를 지정할 수 있습니다.
    StrToFind 지정된 개체의 콘텐츠 내에서 검색되는 문자열입니다.
  • IsSameObject

    지정된 인코딩된 위치가 동일한 물리적 개체에 resolve 경우 IsSameObject 함수는 TRUE를 반환합니다. 그렇지 않으면 FALSE를 반환 합니다.

    구문: IsSameObject("ObjectType","EncodedLocation1","EncodedLocation2")

    설정 필수 여부
    ObjectType 개체의 형식을 정의합니다. 파일 또는 레지스트리일 수 있습니다.
    EncodedLocation1 첫 번째 개체의 인코딩된 위치 입니다. 환경 변수를 지정할 수 있습니다.
    EncodedLocation2 두 번째 개체의 인코딩된 위치 입니다. 환경 변수를 지정할 수 있습니다.

    예시:

    <objectSet>
       <condition negation="Yes">MigXmlHelper.IsSameObject("File","%CSIDL_FAVORITES%","%CSIDL_COMMON_FAVORITES%")</condition>
       <pattern type="File">%CSIDL_FAVORITES%\* [*]</pattern>
    </objectSet>
    
  • IsSameContent

    IsSameContent 함수는 지정된 개체에 동일한 콘텐츠가 있는 경우 TRUE를 반환합니다. 그렇지 않으면 FALSE를 반환 합니다. 콘텐츠는 바이트 바이트와 비교됩니다.

    구문: IsSameContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")

    설정 필수 여부
    ObjectType1 첫 번째 개체의 형식을 정의합니다. 파일 또는 레지스트리일 수 있습니다.
    EncodedLocation1 첫 번째 개체의 인코딩된 위치 입니다. 환경 변수를 지정할 수 있습니다.
    ObjectType2 두 번째 개체의 형식을 정의합니다. 파일 또는 레지스트리일 수 있습니다.
    EncodedLocation2 두 번째 개체의 인코딩된 위치 입니다. 환경 변수를 지정할 수 있습니다.
  • IsSameStringContent

    지정된 개체에 동일한 콘텐츠가 있는 경우 IsSameStringContent 함수는 TRUE 를 반환합니다. 그렇지 않으면 FALSE를 반환 합니다. 콘텐츠는 문자열로 해석됩니다.

    구문: IsSameStringContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")

    설정 필수 여부
    ObjectType1 첫 번째 개체의 형식을 정의합니다. 파일 또는 레지스트리일 수 있습니다.
    EncodedLocation1 첫 번째 개체의 인코딩된 위치 입니다. 환경 변수를 지정할 수 있습니다.
    ObjectType2 두 번째 개체의 형식을 정의합니다. 파일 또는 레지스트리일 수 있습니다.
    EncodedLocation2 두 번째 개체의 인코딩된 위치 입니다. 환경 변수를 지정할 수 있습니다.

<조건>

<conditions> 요소는 부모 요소가 평가되는 조건을 지정하는 데 사용되는 부울 결과를 반환합니다. USMT는 자식 요소를 평가한 다음 연산자 AND 또는 OR 을 사용하여 작업 매개 변수에 따라 결과를 조인합니다.

구문:

<conditions operation="AND|OR">
</conditions>
설정 필수 여부
작업 아니요, 기본값 = AND 자식 요소에서 가져온 결과에 대해 수행되는 부울 연산을 정의합니다.

다음 예제는 파일에서 가져옵니다 MigApp.xml .

<environment name="GlobalEnv">
   <conditions>
      <condition negation="Yes">MigXmlHelper.IsNative64Bit()</condition>
   </conditions>
   <variable name="HklmWowSoftware">
   <text>HKLM\Software</text>
   </variable>
</environment>

<콘텐츠>

<콘텐츠> 요소를 사용하여 원본 컴퓨터에서 개체 집합을 가져오는 개체 패턴 목록을 지정할 수 있습니다. 콘텐츠> 요소 내의<<objectSet>이 평가됩니다. 결과 개체 패턴 목록마다 일치하는 개체가 열거되고 해당 콘텐츠가 필터 매개 변수에 의해 필터링됩니다. 결과 문자열 배열은 콘텐츠> 요소의 출력입니다<. 필터 스크립트는 위치 배열을 반환합니다. 부모 <objectSet> 요소는 여러 자식 <콘텐츠> 요소를 포함할 수 있습니다.

  • 발생 횟수: 무제한

  • 부모 요소:<objectSet>

  • 자식 요소:<objectSet>

  • 도우미 함수: 다음 <콘텐츠> 함수는 , 및 ExtractMultipleFiles요소ExtractSingleFileExtractDirectory함께 사용할 수 있습니다.

구문:

<content filter="ScriptInvocation">
</content>
설정 필수 여부
filter 스크립트 뒤에 쉼표로 구분되고 괄호로 묶인 문자열 인수의 수가 뒤따릅니다. 예를 들면 MyScripts.AScript ("Arg1","Arg2")입니다.
스크립트는 포함 규칙의 개체 집합에 의해 열거되는 각 개체에 대해 <호출됩니다.> 필터 스크립트는 부울 값을 반환합니다. 반환 값이 TRUE이면 개체가 마이그레이션됩니다. FALSE이면 마이그레이션되지 않습니다.

<content> 함수

다음 함수는 개체의 콘텐츠에서 패턴을 생성합니다. 이러한 함수는 부모 <ObjectSet> 요소가 열거하는 모든 개체에 대해 호출됩니다.

  • ExtractSingleFile

    레지스트리 값이 MULTI-SZ인 경우 첫 번째 세그먼트만 처리됩니다. 반환된 패턴은 시스템에 있어야 하는 파일의 인코딩된 위치입니다. 레지스트리 값에서 사양이 올바르지만 파일이 없으면 이 함수는 NULL을 반환합니다.

    구문: ExtractSingleFile(Separators,PathHints)

    설정 필수 여부
    구분 기호 이 레지스트리 값 이름의 파일 사양을 따를 수 있는 가능한 구분 기호 목록입니다. 예를 들어 콘텐츠가 "C:\Windows\Notepad.exe,-2"인 경우 구분 기호는 쉼표입니다. NULL 을 지정할 수 있습니다.
    PathHints 함수가 현재 콘텐츠와 일치하는 파일을 찾는 콜론(;)으로 구분된 추가 경로 목록입니다. 예를 들어 콘텐츠가 "Notepad.exe" 이고 경로가 %Path% 환경 변수인 경우 함수는 에서 %windir%Notepad.exe찾아 "c:\Windows [Notepad.exe]"를 반환합니다. NULL 을 지정할 수 있습니다.

    예시:

    <content filter="MigXmlHelper.ExtractSingleFile(',','%system%')">
    

    <content filter="MigXmlHelper.ExtractSingleFile(NULL,'%CSIDL_COMMON_FONTS%')">
    
  • ExtractMultipleFiles

    ExtractMultipleFiles 함수는 지정된 레지스트리 값의 내용에 있는 각 파일에 대해 하나씩 여러 패턴을 반환합니다. 레지스트리 값이 MULTI-SZ인 경우 MULTI-SZ 구분 기호는 기본적으로 구분 기호로 간주됩니다. 따라서 MULTI-SZ의 경우 구분 기호> 인수는<NULL이어야 합니다.

    반환된 패턴은 원본 컴퓨터에 있어야 하는 파일의 인코딩된 위치입니다. 레지스트리 값에서 사양이 올바르지만 파일이 없는 경우 결과 목록에 포함되지 않습니다.

    구문: ExtractMultipleFiles(Separators,PathHints)

    설정 필수 여부
    구분 기호 이 레지스트리 값 이름의 파일 사양을 따를 수 있는 가능한 구분 기호 목록입니다. 예를 들어 콘텐츠가 "C:\Windows\Notepad.exe,-2"인 경우 구분 기호는 쉼표입니다. MULTI-SZ 레지스트리 값을 처리할 때 이 매개 변수는 NULL이어야 합니다.
    PathHints 함수가 현재 콘텐츠와 일치하는 파일을 찾는 콜론(;)으로 구분된 추가 경로 목록입니다. 예를 들어 콘텐츠가 "Notepad.exe" 이고 경로가 %Path% 환경 변수인 경우 함수는 에서 %windir%Notepad.exe찾아 "c:\Windows [Notepad.exe]"를 반환합니다. NULL 을 지정할 수 있습니다.
  • ExtractDirectory

    ExtractDirectory 함수는 원본 컴퓨터에 있어야 하는 디렉터리의 인코딩된 위치인 패턴을 반환합니다. 레지스트리 값에서 사양이 올바르지만 디렉터리가 없으면 이 함수는 NULL을 반환합니다. MULTI-SZ인 레지스트리 값을 처리하는 경우 첫 번째 세그먼트만 처리됩니다.

    구문: ExtractDirectory(Separators,LevelsToTrim,PatternSuffix)

    설정 필수 여부
    구분 기호 아니오 이 레지스트리 값 이름의 파일 사양을 따를 수 있는 가능한 구분 기호 목록입니다. 예를 들어 콘텐츠가 "C:\Windows\Notepad.exe,-2"인 경우 구분 기호는 쉼표입니다. MULTI-SZ 레지스트리 값을 처리할 때 NULL을 지정해야 합니다.
    LevelsToTrim 디렉터리 사양의 끝에서 삭제할 수준 수입니다. 알려진 위치에 해당 루트 디렉터리 내부를 가리키는 레지스트리 값이 있는 경우 이 함수를 사용하여 루트 디렉터리를 추출합니다.
    PatternSuffix 디렉터리 사양에 추가할 패턴입니다. 예를 들면 * [*]입니다.

    예시:

    <objectSet>
       <content filter='MigXmlHelper.ExtractDirectory (NULL, "1")'>
            <objectSet>
                 <pattern type="Registry">%HklmWowSoftware%\Classes\Software\RealNetworks\Preferences\DT_Common []</pattern>
            </objectSet>
       </content>
    </objectSet>
    

<contentModify>

<contentModify> 요소는 개체가 대상 컴퓨터에 기록되기 전에 개체의 콘텐츠를 수정합니다. 각 <contentModify> 요소에 대해 objectSet> 요소가 여러< 개 있을 수 있습니다. 이 요소는 처리 중인 개체의 새 콘텐츠를 반환합니다.

  • 발생 횟수: 무제한

  • 부모 요소:<rules>

  • 필수 자식 요소:<objectSet>

  • 도우미 함수: ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable, MergeMultiSzContentMergeDelimitedContent 요소와 함께 다음 <contentModify> 함수를 사용할 수 있습니다.

구문:

<contentModify script="ScriptInvocation">
</contentModify>
설정 필수 여부
스크립트 스크립트 뒤에 쉼표로 구분되고 괄호로 묶인 문자열 인수의 수가 뒤따릅니다. 예를 들어 MyScripts.AScript ("Arg1","Arg2").

스크립트는 포함 규칙의 개체 집합에 의해 열거되는 각 개체에 대해 호출됩니다. 필터 스크립트는 부울 값을 반환합니다. 반환 값이 TRUE이면 개체가 마이그레이션됩니다. FALSE이면 마이그레이션되지 않습니다.

<contentModify> 함수

다음 함수는 마이그레이션할 때 개체의 콘텐츠를 변경합니다. 이러한 함수는 부모 <ObjectSet> 요소가 열거하는 모든 개체에 대해 호출됩니다.

  • ConvertToDWORD

    ConvertToDWORD 함수는 부모 <ObjectSet> 요소에 의해 열거된 레지스트리 값의 콘텐츠를 DWORD로 변환합니다. 예를 들어 ConvertToDWORD 는 문자열 "1" 을 DWORD 0x00000001로 변환합니다. 변환이 실패하면 DefaultValueOnError 값이 적용됩니다.

    구문: ConvertToDWORD(DefaultValueOnError)

    설정 필수 여부
    DefaultValueOnError 아니오 변환이 실패할 경우 값 이름에 기록되는 값입니다. NULL 을 지정할 수 있으며 0 변환에 실패하면 기록됩니다.
  • ConvertToString

    ConvertToString 함수는 부모 <ObjectSet> 요소와 일치하는 레지스트리 값의 콘텐츠를 문자열로 변환합니다. 예를 들어 DWORD 0x00000001문자열 "1"로 변환합니다. 변환이 실패하면 DefaultValueOnError 값이 적용됩니다.

    구문: ConvertToString(DefaultValueOnError)

    설정 필수 여부
    DefaultValueOnError 아니오 변환이 실패할 경우 값 이름에 기록되는 값입니다. NULL 을 지정할 수 있으며 0 변환에 실패하면 기록됩니다.

    예시:

    <contentModify script="MigXmlHelper.ConvertToString('1')">
       <objectSet>
            <pattern type="Registry">HKCU\Control Panel\Desktop [ScreenSaveUsePassword]</pattern>
       </objectSet>
    </contentModify>
    
  • ConvertToBinary

    ConvertToBinary 함수는 부모 <ObjectSet> 요소와 일치하는 레지스트리 값의 콘텐츠를 이진 형식으로 변환합니다.

    구문: ConvertToBinary ()

  • OffsetValue

    OffsetValue 함수는 마이그레이션된 개체의 값에서 Value를 추가하거나 빼고 결과를 대상 컴퓨터의 레지스트리 값에 다시 씁니다. 예를 들어 마이그레이션된 개체가 값 14이 인 DWORD이고 Value"-2"인 경우 레지스트리 값은 대상 컴퓨터에 있습니다 12 .

    구문: OffsetValue(Value)

    설정 필수 여부
    Value 숫자 값의 문자열 표현입니다. 긍정적이거나 부정적일 수 있습니다. 예를 들면 OffsetValue(2)입니다.
  • SetValueByTable

    SetValueByTable 함수는 원본 컴퓨터의 값을 원본 테이블과 일치합니다. 값이 있는 경우 대상 테이블에 해당하는 값이 적용됩니다. 값이 없거나 대상 테이블에 동등한 값이 없으면 DefaultValueOnError 가 적용됩니다.

    구문: SetValueByTable(SourceTable,DestinationTable,DefaultValueOnError)

    설정 필수 여부
    SourceTable 원본 레지스트리 값에 대해 가능한 쉼표로 구분된 값 목록입니다.
    DestinationTable 아니오 쉼표로 구분된 번역된 값 목록입니다.
    DefaultValueOnError 아니오 대상 컴퓨터에 적용되는 값(둘 중 하나인 경우)입니다.
    1. 원본 컴퓨터의 값이 SourceTable과 일치하지 않습니다.
    2. DestinationTable 에 해당하는 값이 없습니다.

    DefaultValueOnErrorNULL이면 대상 컴퓨터에서 값이 변경되지 않습니다.
  • KeepExisting

    대상 컴퓨터에 충돌이 있을 때 KeepExisting 함수를 사용할 수 있습니다. 이 함수는 대상 컴퓨터에 있는 개체에 대해 지정된 특성을 유지(덮어쓰지 않음)합니다.

    구문: KeepExisting("OptionString","OptionString","OptionString",…)

    설정 필수 여부
    OptionString OptionStringSecurity, TimeFields 또는 FileAttrib:Letter일 수 있습니다. 각 유형의 OptionStrings 중 하나를 지정할 수 있습니다. 동일한 값을 가진 여러 OptionStrings를 지정하지 마세요. 동일한 값을 가진 여러 OptionStrings 를 지정하면 해당 형식의 가장 적합한 옵션이 유지됩니다. 예를 들어 읽기 전용만 평가되므로 ("FileAttrib:H", "FileAttrib:R") 을 지정하지 마세요. 대신 ("FileAttrib:HR") 을 지정하고 숨겨진 특성과 읽기 전용 특성은 모두 대상 컴퓨터에 유지됩니다.
    • 보안: 대상 개체의 보안 설명자가 있는 경우 유지합니다.
    • TimeFields: 대상 개체의 타임스탬프를 유지합니다. 이 매개 변수는 파일에만 해당합니다.
    • FileAttrib:<Letter>: 지정된 파일 특성 집합에 대해 대상 개체의 특성 값 (ON 또는 OFF)을 유지합니다. 이 매개 변수는 파일에만 해당합니다. 다음은 대/소문자를 구분하지 않지만 USMT는 유효하지 않거나 반복되거나 FileAttrib 다음에 공백이 있는 경우 모든 값을 무시합니다. 다음 특성의 조합을 지정할 수 있습니다.
      • A = 보관
      • C = 압축됨
      • E = 암호화됨
      • H = 숨김
      • I = 콘텐츠 인덱싱 안 됨
      • O = 오프라인
      • R = Read-Only
      • S = 시스템
      • T = 임시
  • MergeMultiSzContent

    MergeMultiSzContent 함수는 부모 <ObjectSet> 요소에 의해 열거된 레지스트리 값의 MULTI-SZ 콘텐츠를 대상 컴퓨터에 이미 있는 해당하는 레지스트리 값의 콘텐츠와 병합합니다. InstructionString 는 결과 MULTI-SZ에 콘텐츠를 제거하거나 추가합니다. 중복 요소가 제거됩니다.

    구문: MergeMultiSzContent (Instruction,String,Instruction,String,…)

    설정 필수 여부
    명령 다음 값 중 하나일 수 있습니다.
    • 추가합니다. 해당 String이 아직 없는 경우 결과 MULTI-SZ에 추가합니다.
    • 제거합니다. 결과 MULTI-SZ에서 해당 String을 제거합니다.
    문자열 추가하거나 제거할 문자열입니다.
  • MergeDelimitedContent

    MergeDelimitedContent 함수는 부모 <ObjectSet> 요소에 의해 열거된 레지스트리 값의 콘텐츠를 대상 컴퓨터에 이미 있는 해당하는 레지스트리 값의 콘텐츠와 병합합니다. 콘텐츠는 Delimiters 매개 변수의 문자 중 하나로 구분된 요소 목록으로 간주됩니다. 중복 요소가 제거됩니다.

    구문: MergeDelimitedContent(Delimiters,Instruction,String,…)

    설정 필수 여부
    구분 기호 처리 중인 개체의 콘텐츠를 구분하는 데 사용되는 단일 문자입니다. 콘텐츠는 구분 기호로 구분된 요소 목록으로 간주됩니다.
    예를 들어 는 "." 마침표에 따라 문자열을 구분합니다.
    명령 다음 값 중 하나일 수 있습니다.
    • 추가: 문자열 이 아직 없는 경우 결과 MULTI-SZ에 추가합니다.
    • 제거: 결과 MULTI-SZ에서 문자열 을 제거합니다.
    문자열 추가하거나 제거할 문자열입니다.

<설명>

<description> 요소는 구성 요소에 대한 설명을 정의하지만 마이그레이션에는 영향을 주지 않습니다.

  • 발생 횟수: 0개 또는 1개

  • 부모 요소:<component>

  • 자식 요소: none

구문:

<description>ComponentDescription</description>
설정 필수 여부
ComponentDescription 구성 요소에 대한 설명입니다.

다음 코드 샘플에서는 description> 요소가 "내 사용자 지정 구성 요소" 설명을 정의하는 방법을 <보여 줍니다.

<description>My custom component<description>

<destinationCleanup>

<destinationCleanup> 요소는 원본 컴퓨터에서 개체를 적용하기 전에 대상 컴퓨터에서 파일 및 레지스트리 키와 같은 개체를 삭제합니다. 이 요소는 LoadState 도구가 대상 컴퓨터에서 실행되는 경우에만 평가됩니다. 즉, 이 요소는 ScanState 도구에서 무시됩니다.

중요

이 옵션은 대상 컴퓨터에서 개체를 삭제하므로 주의해야 합니다.

<destinationCleanup> 요소에 대해 여러 <objectSet> 요소가 있을 수 있습니다. 이 요소의 일반적인 용도는 원본 컴퓨터에 누락된 레지스트리 키가 있지만 구성 요소를 마이그레이션해야 하는 경우입니다. 이 경우 원본 레지스트리 키를 마이그레이션하기 전에 구성 요소의 모든 레지스트리 키를 삭제할 수 있습니다. 구성 요소의 레지스트리 키를 모두 삭제하면 원본 컴퓨터에 누락된 키가 있는 경우 대상 컴퓨터에도 누락됩니다.

  • 발생 횟수: 무제한

  • 부모 요소:<rules>

  • 자식 요소:<objectSet> (대상 컴퓨터는 모든 자식 요소를 삭제합니다.)

구문:

<destinationCleanup filter=ScriptInvocation>
</destinationCleanup>
설정 필수 여부
filter 스크립트 뒤에 쉼표로 구분되고 괄호로 묶인 문자열 인수의 수가 뒤따릅니다. 예를 들면 MyScripts.AScript ("Arg1","Arg2")입니다.

스크립트는 포함 규칙의 개체 집합에 의해 열거되는 각 개체에 대해 호출됩니다. 필터 스크립트는 부울 값을 반환합니다. 반환 값이 TRUE이면 개체가 마이그레이션됩니다. FALSE이면 마이그레이션되지 않습니다.

예시:

<destinationCleanup>
   <objectSet>
      <pattern type="Registry">HKCU\Software\Lotus\123\99.0\DDE Preferences\* [*]</pattern>
      <pattern type="Registry">HKCU\Software\Lotus\123\99.0\Find Preferences\* [*]</pattern>
   </objectSet>
</destinationCleanup>

<감지>

<detect> 요소는 계속 지원되지만 이후 버전의 USMT에서는 더 이상 사용되지 않을 수 있으므로 detect> 요소를 더 이상 사용하지< 않는 것이 좋습니다. detect 요소가 더 이상 사용되지 않는 경우 detect> 요소를 사용하는< 스크립트를 다시 작성해야 합니다.>< 대신 검색 요소를 사용하는<> 것이 좋습니다. <검색> 요소를 사용하면 보다 명확하게 공식화된 복잡한 부울 문을 사용할 수 있습니다.

<detect> 요소를 사용하여 구성 요소가 시스템에 있는지 확인할 수 있습니다. detect> 요소 내의 모든 자식이 true로<resolve 요소를 감지>하면 detect 요소가 TRUE로 확인됩니다.<<> 자식이 FALSE로 resolve 요소를 검색>하면 부모 검색 요소가 FALSE로 확인됩니다.<<> detect 요소 섹션이 없<으면 USMT는 구성 요소가 있다고 가정합니다.>

<detect> 요소에 대해 OR 연산자가 논리적으로 조인하는 여러 자식 <조건> 또는 <objectSet> 요소가 있을 수 있습니다. 하나 <이상의 condition> 또는 <objectSet> 요소가 TRUE<로 평가되면 detect> 요소가 TRUE로 평가됩니다.

구문:

<detect name="ID" context="User|System|UserAndSystem">
</detect>
설정 필수 여부
name 예, detect>가 명명된 자식인 경우<Elements><
아니요, 검색이 감지>할 자식인 경우<<>
ID를 지정하면 모든 자식 요소가 처리되지 않습니다. 대신 명명된Elements> 요소 내에< 선언된 이름이 같은 다른 <검색> 요소가 처리됩니다.
context 아니오
(기본값 = UserAndSystem)
이 매개 변수의 scope 정의합니다. 이 매개 변수는 특정 사용자의 컨텍스트에서, 전체 운영 체제에서 또는 둘 다에서 이 구성 요소를 처리할지 여부입니다.
가능한 가장 큰 scope 구성 요소에 의해 설정됩니다. 예를 들어 구성 요소>에<User 컨텍스트가 있고 <rules> 요소에 UserAndSystem 컨텍스트가 있는 <경우 규칙> 요소는 User 컨텍스트가 있는 것처럼 작동합니다. rules> 요소에<System 컨텍스트가 있는 경우 규칙> 요소가 없는 것처럼< 작동합니다.
  • 사용자: 각 사용자에 대한 변수를 평가합니다.
  • 시스템: 시스템에 대해 변수를 한 번만 평가합니다.
  • UserAndSystem: 전체 운영 체제 및 각 사용자에 대한 변수를 평가합니다.

예를 들어 검색 예제를 참조하세요<.>

<감지>

<detects> 요소는 여전히 지원되지만 이후 버전의 USMT에서는 더 이상 사용되지 않을 수 있으므로 detects> 요소를 더 이상 사용하지< 않는 것이 좋습니다. <detects> 요소가 더 이상 사용되지 않는 경우 detects> 요소를 사용하는< 스크립트를 다시 작성해야 합니다. 대신 부모 요소가 role> 또는 namedElements인 경우 검색 요소를 사용하거나 부모 요소가<규칙>인 경우 조건 요소를 사용하는 것이< 좋습니다.<><><> <검색> 요소를 사용하면 보다 명확하게 공식화된 복잡한 부울 문을 사용할 수 있으며 <조건> 요소를 사용하면 복잡한 부울 문을 공식화할 수 있습니다.

<detects> 요소는 하나 이상의 <검색> 요소에 대한 컨테이너입니다. 모든 자식<><이 resolve 요소를 검색>하여 TRUE<로 검색하면 검색이> TRUE로 확인됩니다. 자식<이 FALSE로 resolve 요소를 검색>하는 경우 검색은> FALSE로 확인<됩니다. detects> 요소가 구성 요소 내에 기록되지 않도록< 하려면 namedElements> 요소 아래에<detects> 요소를 만든< 다음 참조합니다. detects> 요소 섹션이 없<으면 USMT는 구성 요소가 있다고 가정합니다. 각 <detects> 요소의 결과는 OR 연산자에 의해 함께 조인되어 부모 요소를 검색하는 데 사용되는 규칙을 형성합니다.

구문:

<detects name="ID" context="User|System|UserAndSystem">
</detects>
설정 필수 여부
name 예, 검색이>명명된Elements>의< 자식인 경우 <
아니요, 검색이>역할> 또는 규칙에 대한 자식<인 경우 <<>
ID를 지정하면 자식 <검색> 요소가 처리되지 않습니다. 대신, 명명된Elements 요소 내에< 선언된 이름이 같은 요소가 처리되는 것을 검색하는> 다른 <모든 요소가 처리됩니다.>
context 아니오
(기본값 = UserAndSystem)
이 매개 변수의 scope 정의합니다. 특정 사용자의 컨텍스트에서, 전체 운영 체제에서 또는 둘 다에서 이 구성 요소를 처리할지 여부를 정의합니다.
가능한 가장 큰 scope 구성 요소>에< 의해 설정됩니다. 예를 들어 구성 요소>에<User 컨텍스트가 있고 <규칙> 요소에 UserAndSystem<컨텍스트가 있는 경우 규칙> 요소는 User 컨텍스트가 있는 것처럼 작동합니다. rules> 요소에<System 컨텍스트가 있는 경우 규칙> 요소가 없는 것처럼< 작동합니다.
  • 사용자: 각 사용자에 대한 변수를 평가합니다.
  • 시스템: 시스템에 대해 변수를 한 번만 평가합니다.
  • UserAndSystem: 전체 운영 체제 및 각 사용자에 대한 변수를 평가합니다.

컨텍스트 매개 변수는 규칙> 요소 내에< 있는 요소를 검색하는> 경우 무시<됩니다.

다음 예제는 파일에서 가져옵니다 MigApp.xml .

<detects>
   <detect>
      <condition>MigXmlHelper.DoesFileVersionMatch("%Lotus123InstPath%\123w.exe","ProductVersion","9.*")</condition>
   </detect>
   <detect>
      <condition>MigXmlHelper.DoesFileVersionMatch("%SmartSuiteInstPath%\smartctr.exe","ProductVersion","99.*")</condition>
   </detect>
</detects>

<검색>

<검색> 요소는 하나의 <조건> 요소에 대한 컨테이너입니다. 조건 요소 아래에 있는 자식 <조건> 요소의 <결과는 이 요소의 결과를 결정합니다.> 예를 들어 검색> 요소 내<의 모든 자식 <조건> 요소가 TRUE<로 resolve 경우 검색> 요소는 TRUE로 확인됩니다. 자식 <조건> 요소가 FALSE<로 resolve 경우 검색> 요소는 FALSE로 확인됩니다.

또한 역할> 요소 내의 각 검색 섹션의< 결과는 OR 연산자에 의해 함께 조인되어 부모 요소의 검색 규칙을 형성합니다.>< 즉, 검색> 섹션 중< 하나가 TRUE<로 resolve 경우 역할> 요소가 처리됩니다. 그렇지 않으면 <역할> 요소가 처리되지 않습니다.

명명된Elements> 요소 아래의<검색> 요소를 사용하여 구성 요소 내에서 작성하지 않습니다.< 그런 다음 역할> 요소 아래에 일치하는 검색 섹션을< 포함시켜 구성 요소가 마이그레이션되는지 여부를 제어합니다.>< 구성 요소에 <대한 검색> 섹션이 없는 경우 USMT는 구성 요소가 있다고 가정합니다.

구문:

<detection name="ID" context="User|System|UserAndSystem">
</detection>
설정 필수 여부
name
  • 예, 명명된Elements> 아래에<검색>이 선언된 경우<
  • 선택 사항( 역할>에서< 선언된 경우)
선언된 경우 검색> 요소의< 콘텐츠가 무시되고 명명된Elements> 요소에< 선언된 동일한 이름의 검색> 요소 콘텐츠<가 평가됩니다.
context 아니요, 기본값 = UserAndSystem 이 매개 변수의 scope 정의합니다. 특정 사용자의 컨텍스트에서, 전체 운영 체제에서 또는 둘 다에서 이 구성 요소를 처리할지 여부를 정의합니다.
  • 사용자: 각 사용자에 대한 구성 요소를 평가합니다.
  • 시스템: 시스템에 대해 구성 요소를 한 번만 평가합니다.
  • UserAndSystem: 전체 운영 체제 및 각 사용자에 대한 구성 요소를 평가합니다.

예시:

<detection name="AdobePhotoshopCS">
   <conditions>
      <condition>MigXmlHelper.DoesObjectExist("Registry","HKCU\Software\Adobe\Photoshop\8.0")</condition>
      <condition>MigXmlHelper.DoesFileVersionMatch("%PhotoshopSuite8Path%\Photoshop.exe","FileVersion","8.*")</condition>
   </conditions>
</detection>

<role role="Settings">
   <detection>
      <conditions>
         <condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 5.*")</condition>
         <condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 6.*")</condition>
      </conditions>
   </detection>

<Displayname>

<displayName> 요소는 각 <구성 요소> 내에서 필수 필드입니다.

  • 발생 횟수: 각 구성 요소에 대해 한 번

  • 부모 요소:<component>

  • 자식 요소: none

구문:

<displayName _locID="ID">ComponentName</displayName>
설정 필수 여부
locID 아니오 이 매개 변수는 내부 USMT 사용을 위한 것입니다. 이 매개 변수를 사용하지 마세요.
ComponentName 구성 요소의 이름입니다.

예시:

<displayName>Command Prompt settings</displayName>

<환경>

<환경> 요소는 .xml 파일에서 사용할 변수를 정의할 수 있는 변수 요소에 대한 컨테이너 <> 입니다. 이러한 방식으로 정의된 모든 환경 변수는 프라이빗입니다. 즉, 자식 구성 요소 및 정의된 구성 요소에만 사용할 수 있습니다. 두 가지 예제 시나리오는 예제를 참조하세요.

구문:

<environment name="ID" context="User|System|UserAndSystem">
</environment>
설정 필수 여부
name 예, 환경>이 명명된Elements의 자식인 경우<<>
아니요, 환경>이 역할 또는 구성 요소의 자식인 경우<><<>
역할> 또는 구성 요소<>의 자식으로 선언된 경우 ID가 선언된 경우 USMT는 환경 요소의 콘텐츠를 무시하고 명명된Elements 요소에 선언된 이름이 같은 환경 요소의 콘텐츠가 처리<됩니다.<><><>
context 아니오
(기본값 = UserAndSystem)
이 매개 변수의 scope 정의합니다. 특정 사용자의 컨텍스트에서, 전체 운영 체제에서 또는 둘 다에서 이 구성 요소를 처리할지 여부를 정의합니다.
가능한 가장 큰 scope 구성 요소>에< 의해 설정됩니다. 예를 들어 구성 요소>에<User 컨텍스트가 있고 <규칙> 요소에 UserAndSystem<컨텍스트가 있는 경우 규칙> 요소는 User 컨텍스트가 있는 것처럼 작동합니다. rules> 요소에<System 컨텍스트가 있는 경우 규칙이> 없는 것처럼< 작동합니다.
  • 사용자: 각 사용자에 대한 변수를 평가합니다.
  • 시스템: 시스템에 대해 변수를 한 번만 평가합니다.
  • UserAndSystem: 전체 운영 체제 및 각 사용자에 대한 변수를 평가합니다.

예제 시나리오 1

이 시나리오에서는 대상 컴퓨터의 구성에 따라 런타임에 개체의 위치를 생성합니다. 예를 들어 애플리케이션이 애플리케이션이 설치된 디렉터리에 데이터를 쓰고 사용자가 컴퓨터의 아무 곳에나 애플리케이션을 설치할 수 있는 경우입니다. 애플리케이션이 레지스트리 값을 hklm\software\companyname\install [path\] 작성한 다음 애플리케이션이 설치된 위치로 이 값을 업데이트하는 경우 필요한 데이터를 올바르게 마이그레이션하는 유일한 방법은 환경 변수를 정의하는 것입니다. 예시:

<environment>
   <variable name="INSTALLPATH">
      <script>MigXmlHelper.GetStringContent("Registry","\software\companyname\install [path]")</script>
   </variable>
</environment>

그런 다음 다음과 같이 포함 규칙을 사용할 수 있습니다. 스크립트> 함수를< 사용하여 유사한 작업을 수행할 수 있습니다.

<include>
   <objectSet>
      <pattern type="File">%INSTALLPATH%\ [*.xyz]</pattern>
   </objectSet>
</include>

둘째, 필요한 데이터를 포함하도록 레지스트리 값을 필터링할 수 있습니다. 다음 예제에서는 레지스트리 값의 첫 번째 문자열(구분 기호 ","앞)을 추출합니다 Hklm\software\companyname\application\ [Path\].

<environment>
   <variable name="APPPATH">
        <objectSet>
           <content filter='MigXmlHelper.ExtractDirectory (",", "1")'>
             <objectSet>
                <pattern type="Registry">Hklm\software\companyname\application\ [Path]</pattern>
              </objectSet>
            </content>
        </objectSet>
    </variable>
</environment>

예제 시나리오 2

이 시나리오에서는 , File2.txt등이라는 File1.txt5개의 파일을 에서 %SYSTEMDRIVE%\data\userdata\dir1\dir2\마이그레이션해야 합니다. 이러한 파일을 마이그레이션하려면 다음 <포함> 규칙이 .xml 파일에 있어야 합니다.

<include>
   <objectSet>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File1.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File2.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File3.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File4.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File5.txt]</pattern>
   </objectSet>
</include>

경로를 다섯 번 입력하는 대신 다음과 같이 위치에 대한 변수를 만듭니다.

<environment>
   <variable name="DATAPATH">
      <text>%SYSTEMDRIVE%\data\userdata\dir1\dir2 </text>
      </variable>
</environment>

그런 다음 다음과 같이 포함> 규칙에 변수를< 지정합니다.

<include>
   <objectSet>
      <pattern type="File">%DATAPATH% [File1.txt]</pattern>
      <pattern type="File">%DATAPATH% [File2.txt]</pattern>
      <pattern type="File">%DATAPATH% [File3.txt]</pattern>
      <pattern type="File">%DATAPATH% [File4.txt]</pattern>
      <pattern type="File">%DATAPATH% [File5.txt]</pattern>
   </objectSet>
</include>

<exclude>

<exclude> 요소는 개체를 마이그레이션하는 보다 구체적인 <include> 요소가 없는 한 마이그레이션되지 않는 개체를 결정합니다. 동일한 개체에 <대한 include><exclude> 요소가 있는 경우 개체가 포함됩니다. 각 <제외> 요소에 대해 여러 자식 <objectSet> 요소가 있을 수 있습니다.

  • 발생 횟수: 무제한

  • 부모 요소:<rules>

  • 자식 요소:<objectSet>

  • 도우미 함수: 제외 <> 필터 함수는 , , IgnoreIrrelevantLinks, AnswerNoNeverRestore및 요소CompareStringContentSameRegContent함께 사용할 수 있습니다.

구문:

<exclude filter="ScriptInvocation">
</exclude>
설정 필수 여부
filter 아니오
(기본값 = 아니요)
스크립트 뒤에 쉼표로 구분되고 괄호로 묶인 문자열 인수의 수가 뒤따릅니다. 예를 들면 MyScripts.AScript ("Arg1","Arg2")입니다.

스크립트는 포함 규칙의 개체 집합에 의해 열거되는 각 개체에 대해 호출됩니다. 필터 스크립트는 부울 값을 반환합니다. 반환 값이 TRUE이면 개체가 마이그레이션됩니다. FALSE이면 마이그레이션되지 않습니다.

예를 들어 파일에서 다음을 수행합니다 MigUser.xml .

<exclude>
   <objectSet>
      <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
      <pattern type="File">%CSIDL_MYPICTURES%\* [*]</pattern>
      <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
   </objectSet>
</exclude>

<excludeAttributes>

<excludeAttributes> 요소를 사용하여 마이그레이션되지 않은 개체와 연결된 매개 변수를 확인할 수 있습니다. includeAttributes>와 excludeAttributes 요소 간에< 충돌이 있는 경우 가장 구체적인 패턴은 마이그레이션되지 않은 패턴을 결정합니다.>< 개체에 includeAttributes 또는 excludeAttributes> 요소가 없는< 경우 모든 매개 변수가 마이그레이션됩니다.><

구문:

<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">
</excludeAttributes>
설정 필수 여부
특성 제외할 특성을 지정합니다. 다음 중 하나 또는 둘 다를 지정할 수 있습니다. 둘 다 지정하는 경우 따옴표로 구분해야 합니다. 예를 들면 다음과 같습니다. "Security","TimeFields"
  • 보안은 소유자, 그룹, DACL 또는 SACL 중 하나일 수 있습니다.
  • TimeFields는 CreationTime, LastAccessTime 및 LastWrittenTime 중 하나일 수 있습니다.

예제:

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/miguser">
<!-- This component migrates the files in the Video folder -->
   <component type="System" context="System">
      <displayName>System Data</displayName>
         <role role="Data">
            <rules>
<!-- Include all of the text files, which are immediately in the drive where the operating system is installed -->
               <include>
                  <objectSet>
                     <pattern type="File">%SYSTEMDRIVE%\ [*.txt]</pattern>
                  </objectSet>
               </include>
<!-- Exclude the time stamps from the text file starting with the letter a -->
               <excludeAttributes attributes="TimeFields">
                  <objectSet>
                     <pattern type="File">%SYSTEMDRIVE%\ [a*.txt]</pattern>
                  </objectSet>
               </excludeAttributes>
<!-- include the time stamps from the text file aa.txt -->
               <includeAttributes attributes="TimeFields">
                  <objectSet>
                     <pattern type="File">%SYSTEMDRIVE%\ [aa.txt]</pattern>
                  </objectSet>
               </includeAttributes>
<!-- Logoff the user after LoadState successfully completed. -->
               <externalProcess when="post-apply">
                  <commandLine>
                     logoff
                  </commandLine>
               </externalProcess>
         </rules>
   </role>
<!-- Migrate 
   all doc files from the system
   all power point files
   all visio design files 
   all my c++ program files -->
   <extensions>
      <extension>DOC</extension>
      <extension>PPT</extension>
      <extension>VXD</extension>
      <extension>PST</extension>
      <extension>CPP</extension>
   </extensions>
</component>
</migration>

<확장>

<extensions> 요소는 하나 이상의 <확장> 요소에 대한 컨테이너입니다.

구문:

<extensions>
</extensions>

<확장>

<확장> 요소를 사용하여 특정 확장의 문서를 지정할 수 있습니다.

  • 발생 횟수: 무제한

  • 부모 요소:<extensions>

  • 자식 요소: none

구문:

<extension>FilenameExtension</extension>
설정 필수 여부
FilenameExtension 파일 이름 확장명입니다.

예를 들어 원본 컴퓨터에서 모든 *.doc 파일을 마이그레이션하려면 구성 요소> 아래에< 다음 코드를 지정합니다.

<extensions> 
        <extension>doc</extension> 
<extensions> 

rules> 요소 아래에< 다음 코드를 지정하는 것과 같습니다.

<include> 
        <objectSet> 
                <script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script> 
        </objectSet> 
</include>

확장> 요소를 사용하는 방법에 대한 또 다른 예제는 <excludeAttributes 예제를< 참조하세요.>

<externalProcess>

<externalProcess> 요소를 사용하여 마이그레이션 프로세스 중에 명령줄을 실행할 수 있습니다. 예를 들어 LoadState 프로세스가 완료된 후 명령을 실행해야 할 수 있습니다.

구문:

<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</externalProcess>
설정 필수 여부
명령줄을 실행해야 하는 시기를 나타냅니다. 이 값은 다음 값 중 하나일 수 있습니다.
  • 검사 프로세스가 시작되기 전에 사전 검사합니다.
  • 검사 프로세스가 성공적으로 완료된 후 검색 성공
  • 검사 프로세스가 완료된 후 성공적으로 수행되었는지 여부에 관계없이 사후 검사
  • 적용 프로세스가 시작되기 전에 미리 적용합니다.
  • 적용 프로세스가 성공적으로 완료된 후 apply-success입니다.
  • 적용 프로세스가 완료된 후 성공 여부와 관계없이 사후 적용합니다.

externalProcess> 요소를 사용하는 <방법에 대한 예제는 excludeAttributes의 예제를< 참조하세요>.

<아이콘>

이 요소는 내부 USMT 요소입니다. 이 요소를 사용하지 마세요.

<include>

<include> 요소는 보다 구체적인 <제외> 규칙이 없는 한 마이그레이션할 내용을 결정합니다. 스크립트를 보다 구체적으로 지정하여 수집해야 하는 정의의 범위를 확장할 수 있습니다. 각 <include> 요소에 대해 여러 <objectSet> 요소가 있을 수 있습니다.

  • 발생 횟수: 무제한

  • 부모 요소:<rules>

  • 필수 자식 요소:<objectSet>

  • 도우미 함수: 다음 <포함> 필터 함수는 , , IgnoreIrrelevantLinksAnswerNo및 요소CompareStringContentNeverRestore함께 사용할 수 있습니다.

구문:

<include filter="ScriptInvocation">
</include>
설정 필수 여부
filter 아니요.
이 매개 변수를 지정하지 않으면 자식 <objectSet> 요소 내에 있는 모든 패턴이 처리됩니다.
스크립트 뒤에 쉼표로 구분되고 괄호로 묶인 문자열 인수의 수가 뒤따릅니다. 예를 들면 MyScripts.AScript ("Arg1","Arg2")입니다.
스크립트는 포함 규칙의 개체 집합에 의해 열거되는 각 개체에 대해 <호출됩니다.> 필터 스크립트는 부울 값을 반환합니다. 반환 값이 TRUE이면 개체가 마이그레이션됩니다. FALSE이면 마이그레이션되지 않습니다.

다음 예제는 파일에서 가져옵니다 MigUser.xml .

<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>

<필터 함수 포함> 및 <제외>

다음 함수는 부울 값을 반환합니다. 특정 조건이 충족되는 시기에 따라 특정 개체를 마이그레이션하는 데 사용할 수 있습니다.

  • AnswerNo

    이 필터는 항상 FALSE를 반환합니다.

    구문: AnswerNo ()

  • CompareStringContent

    구문: CompareStringContent("StringContent","CompareType")

    설정 필수 여부
    StringContent 검사 문자열입니다.
    CompareType 문자열입니다. 다음 값 중 하나를 사용합니다.
    • 호(대/소문자를 구분하지 않음). 이 함수는 마이그레이션 엔진에서 처리되는 현재 개체의 문자열 표현이 과 동일한 경우 TRUE 를 반환합니다 StringContent.
    • NULL또는 기타 값입니다. 마이그레이션 엔진에서 처리되는 현재 개체의 문자열 표현이 과 일치하지 StringContent않으면 함수는 TRUE를 반환합니다.
  • IgnoreIrrelevantLinks

    이 필터는 대상 컴퓨터에서 유효하지 않은 개체를 가리키는 .lnk 파일을 차단합니다. 검색은 대상 컴퓨터에서 진행되므로 ScanState 동안 모든 .lnk 파일이 저장소에 저장됩니다. 그런 다음 LoadState 도구가 실행될 때 화면이 표시됩니다.

    구문: IgnoreIrrelevantLinks ()

    예시:

    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
              <pattern type="File">%CSIDL_COMMON_VIDEO%\* [*]</pattern>
         </objectSet>
    </include>
    
  • NeverRestore

    이 함수는 원본 컴퓨터에서 지정된 개체를 수집한 다음 대상 컴퓨터로 개체를 마이그레이션하지 않는 데 사용할 수 있습니다. ScanState 도구를 사용하여 실행하면 이 함수는 TRUE로 평가됩니다. LoadState 도구를 사용하여 실행하면 이 함수는 FALSE로 평가됩니다. 이 함수는 대상 컴퓨터에서 개체의 값을 검사 데 사용할 수 있지만 개체를 대상으로 마이그레이션할 의도는 없습니다.

    구문: NeverRestore()

    다음 예제에서는 HKCU\제어판\International [Locale]이 저장소에 포함되지만 대상 컴퓨터로 마이그레이션되지는 않습니다.

    <include filter="MigXmlHelper.NeverRestore()">
       <objectSet>
          <pattern type="Registry">HKCU\Control Panel\International [Locale]</pattern>
       </objectSet>
    </include>
    

<includeAttributes>

<includeAttributes> 요소를 사용하여 개체와 연결된 특정 매개 변수가 개체 자체와 함께 마이그레이션되는지 여부를 확인할 수 있습니다. includeAttributes와 excludeAttributes> 요소 간에< 충돌이 있는 경우 가장 구체적인 패턴은 마이그레이션되는 매개 변수를 결정합니다.>< 개체에 includeAttributes 또는 excludeAttributes> 요소가 없는< 경우 모든 매개 변수가 마이그레이션됩니다.><

구문:

<includeAttributes attributes="Security|TimeFields|Security,TimeFields">
</includeAttributes>
설정 필수 여부
특성 마이그레이션된 개체에 포함할 특성을 지정합니다. 다음 중 하나 또는 둘 다를 지정할 수 있습니다. 둘 다 지정하는 경우 따옴표로 구분해야 합니다. 예를 들면 다음과 같습니다. "Security","TimeFields"
  • 보안은 다음 값 중 하나일 수 있습니다.
    • 소유자: 개체의 소유자(SID)입니다.
    • 그룹: 개체(SID)의 기본 그룹입니다.
    • DACL (임의 액세스 제어 목록): 개체 소유자가 제어하고 특정 사용자 또는 그룹이 개체에 대해 가질 수 있는 액세스를 지정하는 액세스 제어 목록입니다.
    • SACL (시스템 액세스 제어 목록): 보안 개체에 액세스하려는 시도에 대한 감사 메시지 생성을 제어하는 ACL입니다. 개체의 SACL을 얻거나 설정하는 기능은 일반적으로 시스템 관리자만 보유하는 권한에 의해 제어됩니다.
  • TimeFields는 다음 값 중 하나일 수 있습니다.
    • CreationTime: 파일 또는 디렉터리를 만든 시기를 지정합니다.
    • LastAccessTime: 실행 파일의 파일을 마지막으로 읽거나, 기록하거나, 실행 파일에 대해 실행할 시기를 지정합니다.
    • LastWrittenTime: 파일을 마지막으로 쓰거나, 자르거나, 덮어쓰는 시기를 지정합니다.

includeAttributes> 요소를 사용하는< 방법에 대한 예제는 excludeAttributes 예제를< 참조하세요>.

<라이브러리>

이 요소는 내부 USMT 요소입니다. 이 요소를 사용하지 마세요.

<위치>

<location> 요소는 개체> 요소의< 위치를 정의합니다.

  • 발생 횟수:<개체>에 대해 한 번

  • 부모 요소:<object>

  • 자식 요소:<script>

구문:

<location type="typeID">ObjectLocation</location>
설정 필수 여부
유형 typeID 는 레지스트리 또는 파일일 수 있습니다.
ObjectLocation 개체의 위치입니다.

다음 예제는 파일에서 가져옵니다 MigApp.xml .

<addObjects>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
      <attributes>DWORD</attributes>
      <bytes>0B000000</bytes>
   </object>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
      <attributes>DWORD</attributes>
      <bytes>00000000</bytes>
   </object>
</addObjects>

<locationModify>

<locationModify> 요소를 사용하여 개체가 대상 컴퓨터로 마이그레이션되기 전에 개체의 위치와 이름을 변경할 수 있습니다. <locationModify> 요소는 LoadState 도구가 대상 컴퓨터에서 실행되는 경우에만 처리됩니다. 즉, 이 요소는 ScanState 도구에서 무시됩니다. <locationModify> 요소는 아직 없는 경우 대상 컴퓨터에 적절한 폴더를 만듭니다.

발생 횟수: 무제한

구문:

<locationModify script="ScriptInvocation">
</locationModify>
설정 필수 여부
스크립트 스크립트 뒤에 쉼표로 구분되고 괄호로 묶인 문자열 인수의 수가 뒤따릅니다. 예를 들면 MyScripts.AScript ("Arg1","Arg2")입니다.

스크립트는 포함 규칙의 개체 집합에 의해 열거되는 각 개체에 대해 호출됩니다. 필터 스크립트는 부울 값을 반환합니다. 반환 값이 TRUE이면 개체가 마이그레이션됩니다. FALSE이면 마이그레이션되지 않습니다.

다음 예제는 파일에서 가져옵니다 MigApp.xml .

<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_APPDATA%\Microsoft\Office','%CSIDL_APPDATA%')">
   <objectSet>
      <pattern type="File">%CSIDL_APPDATA%\Microsoft\Office\ [Access10.pip]</pattern>
   </objectSet>
</locationModify>

<locationModify> 함수

다음 함수는 locationModify> 요소를 사용할 때 마이그레이션할 때 개체의< 위치를 변경합니다. 이러한 함수는 부모 <objectSet> 요소가 열거하는 모든 개체에 대해 호출됩니다. <locationModify> 요소는 아직 없는 경우 대상 컴퓨터에 적절한 폴더를 만듭니다.

  • ExactMove

    ExactMove 함수는 부모 <objectSet> 요소와 일치하는 모든 개체를 지정된 ObjectEncodedLocation으로 이동합니다. 이 함수는 단일 파일을 대상 컴퓨터의 다른 위치로 이동하는 데 사용할 수 있습니다. 대상 위치가 노드인 경우 일치하는 모든 원본 개체가 하위 디렉터리 없이 노드에 기록됩니다. 대상 위치가 리프인 경우 마이그레이션 엔진은 일치하는 모든 원본 개체를 동일한 위치로 마이그레이션합니다. 충돌이 발생하면 일반적인 충돌 알고리즘이 적용됩니다.

    구문: ExactMove(ObjectEncodedLocation)

    설정 필수 여부
    ObjectEncodedLocation 모든 원본 개체의 대상 위치 입니다.

    예시:

    <locationModify script="MigXmlHelper.ExactMove('HKCU\Keyboard Layout\Toggle [HotKey]')">
       <objectSet>
            <pattern type="Registry">HKCU\Keyboard Layout\Toggle []</pattern>
       </objectSet>
    </locationModify>
    
  • 이동

    Move 함수는 개체를 대상 컴퓨터의 다른 위치로 이동합니다. 또한 이 함수는 원본 개체 이름에서 가장 긴 CSIDL보다 긴 하위 디렉터리를 만듭니다.

    구문: Move(DestinationRoot)

    설정 필수 여부
    DestinationRoot 원본 개체가 이동되는 위치입니다. 필요한 경우 이 함수는 원본 개체 이름에서 가장 긴 CSIDL 위에 있는 하위 디렉터리를 만듭니다.
  • RelativeMove

    RelativeMove 함수를 사용하여 데이터를 수집하고 이동할 수 있습니다. 환경 변수는 원본 및 대상 루트에서 사용할 수 있지만 원본 및 대상 컴퓨터에서 다르게 정의될 수 있습니다.

    구문: RelativeMove(SourceRoot,DestinationRoot)

    설정 필수 여부
    SourceRoot 개체를 이동할 위치입니다. 이 위치에 없는 부모 <objectSet> 요소에 의해 열거된 모든 원본 개체는 이동되지 않습니다.
    DestinationRoot 원본 개체가 대상 컴퓨터에서 로 이동되는 위치입니다. 필요한 경우 이 함수는 SourceRoot 위에 있는 모든 하위 디렉터리를 만듭니다.

예시:

<include>
   <objectSet>
      <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
   <objectSet>
</include>
<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_COMMON_FAVORITES%','%CSIDL_COMMON_FAVORITES%')">
     <objectSet>
          <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
     </objectSet>
</locationModify>

<_locDefinition>

이 요소는 내부 USMT 요소입니다. 이 요소를 사용하지 마세요.

<제조업체>

<제조업체> 요소는 구성 요소에 대한 제조업체를 정의하지만 마이그레이션에는 영향을 주지 않습니다.

  • 발생 횟수: 0개 또는 1개

  • 부모 요소:<component>

  • 자식 요소: none

구문:

<manufacturer>Name</manufacturer>
설정 필수 여부
이름 구성 요소의 제조업체 이름입니다.

<병합>

<merge> 요소는 충돌이 발생할 때 발생하는 동작을 결정합니다. 충돌은 마이그레이션된 개체가 대상 컴퓨터에 이미 있는 경우입니다. 이 요소를 지정하지 않으면 레지스트리의 기본 동작은 원본 개체가 대상 개체를 덮어쓰는 것입니다. 파일의 기본 동작은 원본 파일의 이름을 로 바꾸는 OriginalFileName(1).OriginalExtension것입니다. 이 요소는 충돌이 발생할 때 수행해야 하는 작업만 지정합니다. 개체는 포함되지 않습니다. 따라서 마이그레이션<할 개체의 경우 병합 요소와 함께 포함> 규칙을 지정해야 합니다.<> 개체가 처리되고 충돌이 감지되면 USMT는 가장 구체적인 병합 규칙을 선택합니다. 그런 다음 충돌을 resolve 규칙을 적용합니다. 예를 들어 병합> 규칙이 sourcePriority로 설정되고 병합 규칙이 destinationPriority로 설정된 경우< USMT는 더 구체적이기 때문에 destinationPriority> 규칙을 사용합니다<.<><><>C:\subfolder\* [*]C:\* [*]

이 요소의 예제는 충돌 및 우선 순위를 참조하세요.

  • 발생 횟수: 무제한

  • 부모 요소:<rules>

  • 필수 자식 요소:<objectSet>

  • 도우미 함수: 다음 <병합> 함수는 , , , LeafPatternHigherValue()NewestVersionDestinationPriorityFindFilePlaceByPattern및 요소SourcePriorityLowerValue()함께 사용할 수 있습니다.

구문:

<merge script="ScriptInvocation">
</merge>
설정 필수 여부
스크립트 스크립트 뒤에 쉼표로 구분되고 괄호로 묶인 문자열 인수의 수가 뒤따릅니다. 예를 들면 MyScripts.AScript ("Arg1","Arg2")입니다.

스크립트는 포함 규칙의 개체 집합에 의해 열거되는 각 개체에 대해 <호출됩니다.> 필터 스크립트는 부울 값을 반환합니다. 반환 값이 TRUE이면 개체가 마이그레이션됩니다. FALSE이면 마이그레이션되지 않습니다.

다음 예제는 파일에서 가져옵니다 MigUser.xml .

<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>

<병합> 함수

이러한 함수는 충돌을 해결하는 방법을 제어합니다.

  • DestinationPriority

    대상 컴퓨터에 있는 개체를 유지하고 원본 컴퓨터에서 개체를 마이그레이션하지 않도록 지정합니다.

    예시:

    <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\ [MyPictures]</pattern>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [PicturesPath]</pattern>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [AdditionalPlugInPath]</pattern>
         </objectSet>
    </merge>
    
  • FindFilePlaceByPattern

    FindFilePlaceByPattern 함수는 충돌이 발생할 때 증가 카운터를 사용하여 파일을 저장합니다. F, E>,<<N>의 순서에 따라 각 구문 <>중 하나를 포함하는 문자열입니다.

    구문: FindFilePlaceByPattern(FilePattern)

    설정 필수 여부
    FilePattern
    • <F> 는 원래 파일 이름으로 대체됩니다.
    • <N> 은 대상 컴퓨터의 개체와 충돌이 없을 때까지 증분 카운터로 대체됩니다.
    • <E> 는 원래 파일 이름 확장명으로 바뀝니다.

    예를 들어 <F> (<N>).<E> 원본 파일을 MyDocument.doc 대상 컴퓨터에서 로 MyDocument (1).doc 변경합니다.
  • NewestVersion

    NewestVersion 함수는 파일 버전에 따라 대상 컴퓨터의 충돌을 해결합니다.

    구문: NewestVersion(VersionTag)

    설정 필수 여부
    VersionTag 선택된 버전 필드입니다. 이 필드는 또는 ProductVersionFileVersion 수 있습니다. VersionTag 버전이 가장 높은 파일은 파일의 버전에 따라 해결되는 충돌을 결정합니다. 예를 들어 FileVersion 1이 포함되어 있고 대상 컴퓨터의 동일한 파일에 FileVersion 2가 포함된 경우 Myfile.txt 대상의 파일은 그대로 유지됩니다.
  • HigherValue()

    이 함수는 레지스트리 값을 병합하는 데 사용할 수 있습니다. 레지스트리 값은 숫자 값으로 평가되고 값이 더 높은 값은 병합되는 레지스트리 값을 결정합니다.

  • LowerValue()

    이 함수는 레지스트리 값을 병합하는 데 사용할 수 있습니다. 레지스트리 값은 숫자 값으로 평가되고 값이 낮은 값은 병합되는 레지스트리 값을 결정합니다.

  • SourcePriority

    원본 컴퓨터에서 개체를 마이그레이션하고 대상 컴퓨터에 있는 개체를 삭제하도록 지정합니다.

    예시:

    <merge script="MigXmlHelper.SourcePriority()">
     <objectSet>
       <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\14.0\Common\Migration\Publisher [UpgradeVersion]</pattern>
       <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\15.0\Common\Migration\Publisher [UpgradeVersion]</pattern>
       <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Publisher [UpgradeVersion]</pattern>
     </objectSet>
    </merge>
    

<마이그레이션>

<마이그레이션 요소는 마이그레이션>.xml 파일의 단일 루트 요소이며 필수 요소입니다. 각 .xml 파일에는 고유한 마이그레이션 urlid가 있어야 합니다. 명령줄에 지정된 각 파일의 urlid는 고유해야 합니다. URLid는 USMT에서 urlid를 사용하여 파일 내의 구성 요소를 정의하기 때문에 고유해야 합니다.

구문:

<migration urlid="*UrlID/*Name">
</migration>
설정 필수 여부
Urlid UrlID 는 이 .xml 파일을 고유하게 식별하는 문자열 식별자입니다. 이 매개 변수는 XML 네임스페이스 사양에 정의된 콜론이 없는 이름이어야 합니다. 각 마이그레이션 .xml 파일에는 고유한 urlid가 있어야 합니다. 두 마이그레이션 .xml 파일에 동일한 urlid가 있는 경우 명령줄에 지정된 두 번째 .xml 파일이 처리되지 않습니다. XML 네임스페이스에 대한 자세한 내용은 XML 네임 스페이스 사용을 참조하세요.
이름 아니오 필수는 아니지만 .xml 파일의 이름을 사용하는 것이 좋습니다.

다음 예제는 파일에서 가져옵니다 MigApp.xml .

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/migapp">
</migration>

MigXMLHelper.FileProperties

이 필터 도우미 함수를 사용하여 파일 크기 및 날짜 특성에 따라 파일 마이그레이션을 필터링할 수 있습니다.

도우미 함수 MigXMLHelper.FileProperties(property, operator, valueToCompare)
속성 filesize, dateCreated, dateModified, dateAccessed
연산자 range, neq, lte, lt, eq, gte, gt
valueToCompare 비교할 값입니다. 예시:
날짜: "2023/05/15-2020/05/17", "2023/05/15"
크기: 끝에 B, KB, MB 또는 GB가 있는 숫자입니다. "5GB", "1KB-1MB"
<component context="System"  type="Application">
<displayName>File_size</displayName>
<role role="Data">

   <rules>
        <include filter='MigXmlHelper.FileProperties("dateAccessed","range","2023/05/15-2020/05/17")'>
         <objectSet>
         <pattern type="File">%SYSTEMDRIVE%\DOCS\* [*]</pattern>
         </objectSet>
      </include>
   </rules>
</role>
</component>

<namedElements>

<namedElements> 요소를 사용하여 명명된 요소를 정의할 수 있습니다. 이러한 요소는 .xml 파일 전체의 모든 구성 요소에서 사용할 수 있습니다. 이 요소를 사용하는 방법에 대한 예제는 파일을 참조하세요 MigApp.xml .

구문:

<namedElements>
</namedElements>

이 요소의 예제는 파일을 참조하세요 MigApp.xml .

<개체>

<개체> 요소는 파일 또는 레지스트리 키를 나타냅니다.

구문:

<object>
</object>

다음 예제는 파일에서 가져옵니다 MigApp.xml .

<addObjects>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
      <attributes>DWORD</attributes>
      <bytes>0B000000</bytes>
   </object>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
      <attributes>DWORD</attributes>
      <bytes>00000000</bytes>
      </object>
</addObjects>

<objectSet>

<objectSet> 요소에는 개체 패턴 목록(예: 파일 경로, 레지스트리 위치 등)이 포함됩니다. 모든 자식 <조건> 요소가 먼저 평가됩니다. 모든 자식 <조건> 요소가 FALSE<반환하면 objectSet> 요소는 빈 집합으로 평가됩니다. 각 부모 요소에 대해 objectSet> 요소가 여러< 개만 있을 수 있습니다.

구문:

<objectSet>
</objectSet>

다음 예제는 파일에서 가져옵니다 MigUser.xml .

<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>

<path>

이 요소는 내부 USMT 요소입니다. 이 요소를 사용하지 마세요.

<경로>

이 요소는 내부 USMT 요소입니다. 이 요소를 사용하지 마세요.

<패턴>

이 요소는 여러 개체를 지정하는 데 사용할 수 있습니다. 각 <objectSet> 요소에 여러 <패턴> 요소를 사용할 수 있으며 결합됩니다. 파일을 지정하는 경우 대신 스크립트>와 함께< 를 사용하는 GenerateDrivePatterns 것이 좋습니다. GenerateDrivePatterns는 기본적으로 드라이브 문자 사양이 없는 패턴> 규칙과 동일합니다<. 예를 들어 다음 두 줄의 코드는 비슷합니다.

<pattern type="File">C:\Folder\* [Sample.doc]</pattern>
<script>MigXmlHelper.GenerateDrivePatterns("\Folder\* [Sample.doc]","Fixed"</script>
  • 발생 횟수: 무제한

  • 부모 요소:<objectSet>

  • 자식 요소:경로 [개체]를 제외한 없음은 유효해야 합니다.

구문:

<pattern type="typeID">Path [object]</pattern>
설정 필수 여부
유형 typeID 는 레지스트리, 파일 또는 Ini일 수 있습니다. typeId가 Ini이면 Path개체 사이의 공백이 허용되지 않습니다. 예를 들어 type="Ini"인 경우 다음 형식이 올바르습니다.
<pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern>
경로 [개체] 유효한 레지스트리 또는 파일 경로 패턴 뒤에 하나 이상의 공간이 뒤에 마이그레이션할 개체가 포함된 대괄호[]가 옵니다.
  • 경로 는 별표(*) 와일드카드 문자를 포함하거나 인식된 환경 변수일 수 있습니다. 물음표는 와일드카드 문자로 사용할 수 없습니다. HKCU및 는 HKLM 각각 및 HKEY_LOCAL_MACHINE 을 참조하는 HKEY_CURRENT_USER 데 사용할 수 있습니다.
  • 개체 는 별표(*) 와일드카드 문자를 포함할 수 있습니다. 그러나 물음표는 와일드카드 문자로 사용할 수 없습니다. 예시:
    C:\Folder\ [*] 의 하위 폴더는 없지만 의 C:\Folder 모든 파일을 열거 C:\Folder합니다.
    C:\Folder* [*] 의 모든 파일 및 하위 폴더를 열거합니다 C:\Folder.
    C:\Folder\ [*.mp3] 의 모든 .mp3 파일을 C:\Folder열거합니다.
    C:\Folder\ [Sample.doc] C:\Folder에 Sample.doc 있는 파일만 열거합니다.
    참고
    파일 이름에 대괄호 문자([ 또는 ])가 있는 파일을 마이그레이션하는 경우 대괄호 바로 앞에 당근(^) 문자를 삽입해야 유효합니다. 예를 들어 "file].txt" <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> 이라는 파일이 있는 경우 대신 <pattern type="File">c:\documents\mydocs [file].txt]</pattern>를 지정해야 합니다.

예시:

  • 단일 레지스트리 키를 마이그레이션하려면 다음을 수행합니다.

    <pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
    
  • C: 드라이브에서 폴더 및 하위 폴더를 마이그레이션 C:\EngineeringDrafts 하려면 다음을 수행합니다.

    <pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
    
  • C: 드라이브에서 하위 폴더를 C:\EngineeringDrafts 제외한 폴더만 마이그레이션하려면 다음을 수행합니다.

    파일 및 설정 다시 라우팅

  • 에서 C:\EngineeringDrafts파일을 마이그레이션 Sample.doc 하려면

    <pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
    
  • C: 드라이브에 있는 위치에서 파일을 마이그레이션 Sample.doc 하려면 다음과 같은 방식으로 사용 패턴을 사용합니다. C: 드라이브에 이름이 같은 여러 파일이 있는 경우 이러한 모든 파일이 마이그레이션됩니다.

    <pattern type="File"> C:\* [Sample.doc] </pattern>
    
  • 이 요소를 사용하는 방법에 대한 자세한 예제는 파일 및 설정 제외, 파일 및 설정경로 변경, 파일 및 설정포함 및사용자 지정 XML 예제를 참조하세요.

<처리>

이 요소는 마이그레이션 프로세스 내의 특정 지점에서 스크립트를 실행하는 데 사용할 수 있습니다. 반환 값은 지정된 스크립트에서 예상되지 않습니다. 반환 값이 있으면 무시됩니다.

  • 발생 횟수: 무제한

  • 부모 요소:<rules>

  • 필수 자식 요소:<script>

구문:

<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</processing>
설정 필수 여부
스크립트를 실행해야 하는 시기를 나타냅니다. 이 값은 다음 값 중 하나일 수 있습니다.
  • 사전 검색은 검사 프로세스가 시작되기 전에 를 의미합니다.
  • scan-success는 검사 프로세스가 성공적으로 완료된 후를 의미합니다.
  • 사후 검색 은 검사 프로세스가 완료된 후 성공 여부를 의미합니다.
  • 적용 프로세스가 시작되기 전에 사전 적용 수단입니다.
  • apply-success는 적용 프로세스가 성공적으로 완료된 후를 의미합니다.
  • 사후 적용 은 적용 프로세스가 완료된 후 성공 여부에 관계없이 의미합니다.

<플러그인>

이 요소는 내부 USMT 요소입니다. 이 요소를 사용하지 마세요.

<역할>

<역할> 요소는 사용자 지정 .xml 파일에 필요합니다. <역할> 요소를 지정하면 구체적인 구성 요소를 만들 수 있습니다. 구성 요소는 구성 요소 수준에서 지정된 매개 변수와 여기에 지정된 <> 역할로 정의됩니다.

구문:

<role role="Container|Binaries|Settings|Data">
</role>
설정 필수 여부
역할 구성 요소에 대한 역할을 정의합니다. 역할은 다음 중 하나일 수 있습니다.
  • 컨테이너
  • 바이너리
  • 설정
  • Data
다음 항목 중 하나를 지정할 수 있습니다.
  1. 구성 요소> 내<의 최대 세 개의 <역할> 요소( "이진 파일" 역할 요소 1개, "설정" 역할 요소 1개 및 "데이터" 역할 요소 1개). 이러한 매개 변수는 마이그레이션 동작을 변경하지 않습니다. 유일한 목적은 마이그레이션하는 설정을 분류하는 것입니다. 이러한 <역할> 요소는 중첩될 수 있지만 중첩된 각 요소는 동일한 역할 매개 변수여야 합니다.
  2. 구성 요소> 내의 하나의 "컨테이너" 역할 요소입니다<. <> 이 경우 자식 <규칙> 요소를 지정할 수 없으며 다른 <구성 요소> 요소만 지정할 수 있습니다. 또한 각 자식 <구성 요소> 요소의 형식은 부모 <구성 요소> 의 형식과 동일해야 합니다. 예시:
<component context="UserAndSystem" type="Application">
<displayName _locID="migapp.msoffice2016">Microsoft Office 2016</displayName>
<environment name="GlobalEnv" />
<role role="Container">
<검색 이름="AnyOffice2016Version" />
<검색 이름="Word2016" />
<!--
Office 2016 일반 설정
-->
<component context="UserAndSystem" type="Application">

다음 예제는 파일에서 가져옵니다 MigUser.xml . 자세한 예제는 파일을 참조하세요.MigApp.xml

<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>

<규칙>

<규칙> 요소는 사용자 지정 .xml 파일에 필요합니다. 이 요소에는 자식 <조건> 요소(있는 경우)가 FALSE로 평가되지 않는 한 부모 <구성 요소> 요소가 선택된 경우 마이그레이션 중에 실행되는 규칙이 포함됩니다. 각 <규칙> 요소에 대해 여러 자식 <규칙> 요소가 있을 수 있습니다.

구문:

<rules name="ID" context="User|System|UserAndSystem">
</rules>
설정 필수 여부
name 예, 규칙이Elements>라는 자식<인 경우 <>
아니요, 규칙이 다른 요소의 자식인 경우 <>
ID를 지정하면 모든 자식 요소가 처리되지 않습니다. 대신 명명된Elements> 내에< 선언된 동일한 이름의 다른 <규칙> 요소가 처리됩니다.
context 아니오
(기본값 = UserAndSystem)
이 매개 변수의 scope 정의합니다. 특정 사용자의 컨텍스트에서, 전체 운영 체제에서 또는 둘 다에서 이 구성 요소를 처리할지 여부를 정의합니다.
가능한 가장 큰 scope 구성 요소에 의해 설정됩니다. 예를 들어 구성 요소>에<User 컨텍스트가 있고 <규칙> 요소에 UserAndSystem<컨텍스트가 있는 경우 규칙> 요소는 User 컨텍스트가 있는 것처럼 작동합니다. 규칙에> 시스템 컨텍스트가 있는 경우<규칙이> 없는 것처럼< 작동합니다.
  • 사용자: 각 사용자에 대한 변수를 평가합니다.
  • 시스템: 시스템에 대해 변수를 한 번만 평가합니다.
  • UserAndSystem: 전체 운영 체제 및 각 사용자에 대한 변수를 평가합니다.

다음 예제는 파일에서 가져옵니다 MigUser.xml .

<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>

<스크립트>

스크립트>에< 필요한 반환 값은 부모 요소에 따라 달라집니다.

발생 횟수:변수>에 대해< 한 번, objectSet> 및 처리에 대한< 무제한 ><

부모 요소:<objectSet>, <변수>, <처리>

자식 요소: none

구문 및 도우미 함수:

  • 일반 구문: <script>ScriptWithArguments</script>

  • 스크립트>가 변수 내에 있을 때<GetStringContent를 사용할 수 있습니다.<>

    구문: <script>MigXmlHelper.GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")</script>

    예제: <script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>

  • Script가 objectSet> 내에<있을 때<>GenerateUserPatterns를 사용할 수 있습니다.

    구문: <script>MigXmlHelper.GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")</script>

    예제: <script>MigXmlHelper.GenerateUserPatterns ("File","%USERPROFILE%\* [*.doc]", "FALSE")</script>

  • Script가 objectSet> 내에<있을 때<>GenerateDrivePatterns를 사용할 수 있습니다.

    구문: <script>MigXmlHelper.GenerateDrivePatterns("PatternSegment","DriveType")</script>

    예제: <script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>

  • 단순 실행 스크립트는 AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM 등의 처리> 요소 내에< 있는 스크립트> 요소와 함께< 사용할 수 있습니다.

    구문: <script>MigXmlHelper.ExecutingScript</script>

    예제: <script>MigXmlHelper.KillExplorer()</script>

설정 필수 여부
ScriptWithArguments 스크립트 뒤에 쉼표로 구분되고 괄호로 묶인 문자열 인수의 수가 뒤따릅니다. 예를 들면 MyScripts.AScript ("Arg1","Arg2")입니다.
스크립트는 포함 규칙의 개체 집합에 의해 열거되는 각 개체에 대해 <호출됩니다.> 필터 스크립트는 부울 값을 반환합니다. 반환 값이 TRUE이면 개체가 마이그레이션됩니다. FALSE이면 마이그레이션되지 않습니다.
스크립트>에< 필요한 반환 값은 부모 요소에 따라 달라집니다.
  • 변수> 내에서< 사용되는 경우 반환 값은 문자열이어야 합니다.
  • objectSet> 내에서< 사용되는 경우 반환 값은 문자열의 2차원 배열이어야 합니다.
  • 위치> 내에서< 사용되는 경우 반환 값은 위치의 <형식 특성과 일치하는 유효한 위치>여야 합니다. 예를 들어 location type="File">이면 <자식 스크립트 요소(지정된 경우)가 유효한 파일 위치여야 합니다.
    참고
    파일 이름에 대괄호 문자([ 또는 ])가 있는 파일을 마이그레이션하는 경우 대괄호 바로 앞에 당근(^) 문자를 삽입하여 유효합니다. 예를 들어 "file].txt"이라는 파일이 있는 경우 대신 를 지정 <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> 합니다 <pattern type="File">c:\documents\mydocs [file].txt]</pattern>.

예제:

원본 컴퓨터의 모든 드라이브에서 Sample.doc 파일을 마이그레이션하려면 다음과 같이 스크립트>를 사용합니다<. 이름이 같은 여러 파일이 있는 경우 이러한 모든 파일이 마이그레이션됩니다.

<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script> 

이 요소를 사용하는 방법에 대한 자세한 예제는 파일 및 설정 제외, 파일 및 설정다시 라우팅 및사용자 지정 XML 예제를 참조하세요.

<스크립트> 함수

스크립트 요소와 함께 다음 함수를 <> 사용할 수 있습니다.

문자열 및 패턴 생성 함수

이러한 함수는 문자열 또는 패턴을 반환합니다.

  • GetStringContent

    GetStringContent는 변수> 요소 내에< 있는 스크립트> 요소와 함께< 사용할 수 있습니다. 가능하면 이 함수는 지정된 개체의 문자열 표현을 반환합니다. 그렇지 않으면 NULL을 반환합니다. 파일 개체의 경우 이 함수는 항상 NULL을 반환합니다.

    구문: GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")

    설정 필수 여부
    ObjectType 개체의 형식입니다. 레지스트리 또는 Ini( .ini 파일의 경우)일 수 있습니다.
    EncodedLocationPattern
    • 개체 형식이 레지스트리인 경우 EncodedLocationPattern은 유효한 레지스트리 경로여야 합니다. 예를 들면 HKLM\SOFTWARE\MyKey[]입니다.
    • 개체 형식이 Ini이면 EncodedLocationPattern은 다음 형식이어야 합니다.
      IniFilePath|SectionName[SettingName]
    ExpandContent 아니요(default=TRUE) TRUE 또는 FALSE일 수 있습니다. FALSE이면 반환되기 전에 지정된 위치가 확장되지 않습니다.

    예시:

    <variable name="MSNMessengerInstPath">
    <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\MSNMessenger [InstallationDirectory]")</script>
    </variable>
    
  • GenerateDrivePatterns

    함수는 GenerateDrivePatterns 사용 가능한 모든 드라이브를 반복하고 요청된 드라이브 유형과 일치하는 드라이브를 선택합니다. 그런 다음 선택한 드라이브를 PatternSegment 의 끝 부분과 연결하여 전체 인코딩된 파일 패턴을 형성합니다. 예를 들어 PatternSegment 가 이 Path [file.txt]DriveType 이 이면 함수는 FixedC:이외의 고정 드라이브가 있는 경우 및 기타 패턴을 생성 C:\Path [file.txt]합니다. 이 함수를 사용하여 환경 변수를 지정할 수 없습니다. GenerateDrivePatterns는 include /<제외> 내에 있는 objectSet> 내에<있는 스크립트> 요소와 함께< 사용할 수 있습니다.<>

    구문: GenerateDrivePatterns("PatternSegment","DriveType")

    설정 필수 여부
    PatternSegment 인코딩된 패턴의 접미사입니다. 값은 전체 인코딩된 파일 패턴을 형성하기 위해 "c:"와 같은 드라이브 사양과 연결됩니다. 예를 들어 "* [*.doc]"입니다. PatternSegment 는 환경 변수가 될 수 없습니다.
    DriveType 패턴을 생성할 드라이브 형식입니다. 다음 항목 중 하나를 지정할 수 있습니다.
    • 수정
    • Cdrom
    • 이동식
    • 원격

    이 요소의 예제는 MigUser.xml 파일의 마지막 구성 요소를 참조하세요.

  • GenerateUserPatterns

    ProcessCurrentUser>가 FALSE인 경우< 현재 처리된 사용자를 제외하고 마이그레이션 중인 모든 사용자를 반복하고 각 사용자의 컨텍스트에서 지정된 패턴을 확장합니다.GenerateUserPatterns 예를 들어 A, B 및 C 사용자에게 를 호출GenerateUserPattens('File','%userprofile% [*.doc]','TRUE')하여 에 프로필이 있는 C:\Users경우 도우미 함수는 다음 세 가지 패턴을 생성합니다.

    • "C:\Users\A\* [*.doc]"

    • "C:\Users\B\* [*.doc]"

    • "C:\Users\C\* [*.doc]"

    구문: GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")

    설정 필수 여부
    ObjectType 개체 형식을 정의합니다. 파일 또는 레지스트리일 수 있습니다.
    EncodedLocationPattern 위치 패턴입니다. 환경 변수가 허용됩니다.
    ProcessCurrentUser TRUE 또는 FALSE일 수 있습니다. 현재 사용자에 대해 패턴을 생성해야 하는지를 나타냅니다.

예제:

USMT가 사용자 A를 처리하는 동안 가 호출되면 GenerateUserPattens('File','%userprofile% [*.doc]','FALSE') 이 함수는 사용자 B 및 C에 대한 패턴만 생성합니다. 이 도우미 함수를 사용하여 복잡한 규칙을 빌드할 수 있습니다. 예를 들어 원본 컴퓨터에서 모든 .doc 파일을 마이그레이션하려면 사용자 X가 마이그레이션되지 않은 경우 사용자 X의 프로필에서 파일을 마이그레이션 .doc 하지 마세요.

다음 예제는 이 시나리오에 대한 예제 코드입니다. 첫 번째 <rules> 요소는 내부 C:\Users파일을 제외한 원본 컴퓨터의 모든 .doc 파일을 마이그레이션합니다. 두 번째 <규칙> 요소는 다른 사용자의 프로필에 .doc 있는 파일을 C:\Users 제외하고 에서 모든 .doc 파일을 마이그레이션합니다. 두 번째 <규칙> 요소는 마이그레이션된 각 사용자 컨텍스트에서 처리되므로 최종 결과는 원하는 동작입니다. 최종 결과는 예상한 결과입니다.

<rules context="System">
  <include>
    <objectSet>
      <script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
    </objectSet>
  </include>
  <exclude>
    <objectSet>
      <pattern type="File">%ProfilesFolder%\* [*.doc]</pattern>
    </objectSet>
  </exclude>
</rules>
<rules context="User">
  <include>
    <objectSet>
      <pattern type="File">%ProfilesFolder%\* [*.doc]</pattern>
    </objectSet>
  </include>
  <exclude>
    <objectSet>
      <script>MigXmlHelper.GenerateUserPatterns ("File","%userprofile%\* [*.doc]", "FALSE")</script>
    </objectSet>
  </exclude>
</rules>

MigXmlHelper.GenerateDocPatterns

도우미 함수는 MigXmlHelper.GenerateDocPatterns 문서 찾기를 호출하여 시스템에서 마이그레이션할 수 있는 모든 파일을 검사합니다. 시스템 또는 사용자 컨텍스트에서 호출하여 검사에 집중할 수 있습니다.

설정 필수 여부
ScanProgramFiles 아니요(기본값 = FALSE) TRUE 또는 FALSE일 수 있습니다. ScanProgramFiles 매개 변수는 문서 찾기가 프로그램 파일 디렉터리를 검사하여 알려진 애플리케이션에 대해 등록된 파일 확장자를 수집할지 여부를 결정합니다. 예를 들어 TRUE로 설정하면 가 Photoshop에 등록된 파일 확장명인 경우 .jpg Photoshop 디렉터리 아래에서 .jpg 파일을 검색하고 마이그레이션합니다.
IncludePatterns 아니요(기본값 = TRUE) TRUE 또는 FALSE일 수 있습니다. TRUE는 포함 패턴을 생성하며 include> 요소 아래에< 추가할 수 있습니다. FALSE는 제외 패턴을 생성하고 exclude> 요소 아래에< 추가할 수 있습니다.
Systemdrive 아니요(기본값 = FALSE) TRUE 또는 FALSE일 수 있습니다. TRUE이면 모든 패턴을 시스템 드라이브로 제한합니다.
 <!-- This component migrates data in user context -->
  <component type="Documents" context="User">
    <displayName>MigDocUser</displayName>
    <role role="Data">
      <rules>
        <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
          <objectSet>
            <script>MigXmlHelper.GenerateDocPatterns ("false")</script>
          </objectSet>
        </include>
        <exclude>
          <objectSet>
           <script>MigXmlHelper.GenerateDocPatterns ("false", "false", "false")</script>
          </objectSet>
        </exclude>
      </rules>
    </role>
  </component>

간단한 실행 스크립트

다음 스크립트에는 반환 값이 없습니다. 다음 오류는 처리> 요소 내에< 있는 스크립트> 요소와 함께< 사용할 수 있습니다.

  • AskForLogoff(). 마이그레이션이 끝나면 사용자에게 로그아웃하라는 메시지를 표시합니다. 예시:

    <processing when="apply-success">
      <script>MigXmlHelper.AskForLogoff()</script>
    </processing>
    
  • ConvertToShortFileName(RegistryEncodedLocation). RegistryEncodedLocation이 기존 파일의 전체 경로인 경우 이 함수는 파일을 짧은 파일 이름으로 변환한 다음 레지스트리 값을 업데이트합니다.

  • KillExplorer(). 현재 사용자 컨텍스트에 대한 Explorer.exe 중지합니다. Explorer.exe 중지하면 Explorer.exe 실행 중일 때 열려 있는 특정 키와 파일에 액세스할 수 있습니다. 예시:

    <processing when="pre-apply">
      <script>MigXmlHelper.KillExplorer()</script>
    </processing>
    
  • RegisterFonts(FileEncodedLocation). 지정된 디렉터리에 지정된 글꼴 또는 모든 글꼴을 등록합니다. 예시:

 <processing when="apply-success">
   <script>MigXmlHelper.RegisterFonts("%CSIDL_COMMON_FONTS%")</script>
 </processing>
  • RemoveEmptyDirectories(DirectoryEncodedPattern). 대상 컴퓨터에서 DirectoryEncodedPattern 과 일치하는 빈 디렉터리를 삭제합니다.

  • RestartExplorer(). 마이그레이션이 끝나면 Explorer.exe 다시 시작합니다. 예시:

    <processing when="post-apply">
      <script>MigXmlHelper.RestartExplorer()</script>
    </processing>
    
  • StartService(ServiceName, OptionalParam1, OptionalParam2,...). ServiceName으로 식별된 서비스를 시작합니다 . ServiceName 은 지정된 서비스에 대한 데이터를 보유하는 의 하위 키 HKLM\System\CurrentControlSet\Services 입니다. 선택적 매개 변수(있는 경우)는 StartService API에 전달됩니다. 자세한 내용은 StartServiceA 함수(winsvc.h) 문서를 참조하세요.

  • StopService(ServiceName). ServiceName으로 식별되는 서비스를 중지 합니다. ServiceName 은 지정된 서비스에 대한 데이터를 보유하는 의 하위 키 HKLM\System\CurrentControlSet\Services 입니다.

  • SyncSCM(ServiceShortName). 마이그레이션 엔진에서 값을 변경한 후 레지스트리 (HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) 에서 시작 형식 값을 읽은 다음 SCM(Service Control Manager)을 새 값과 동기화합니다.

<텍스트>

<텍스트> 요소를 사용하여 마이그레이션 .xml 파일 중 하나에 있는 모든 환경 변수에 대한 값을 설정할 수 있습니다.

  • 발생 횟수:<변수> 요소에 한 번.

  • 부모 요소:<variable>

  • 자식 요소: 없음.

구문:

<text>NormalText</text>
설정
NormalText 이 텍스트는 일반 텍스트로 해석됩니다.

예시:

<variable name="QuickTime5or6DataSys">
  <text>%CSIDL_COMMON_APPDATA%\QuickTime</text> 
</variable>

<unconditionalExclude>

<unconditionalExclude> 요소는 마이그레이션 .xml파일 또는 파일의 다른 포함 규칙에 관계없이 지정된 파일 및 레지스트리 값을 마이그레이션에서 Config.xml 제외합니다. 이 요소가 다른 모든 규칙보다 우선하기 때문에 여기에 선언된 개체는 마이그레이션되지 않습니다. 예를 들어 파일을 포함 .mp3 할 명시적 <포함> 규칙이 있더라도 이 옵션으로 제외된 경우 마이그레이션되지 않습니다.

원본 컴퓨터에서 모든 .mp3 파일을 제외하려면 이 요소를 사용합니다. 또는 다른 메서드를 사용하여 백업 C:\UserData 하는 경우 전체 폴더를 마이그레이션에서 제외할 수 있습니다. 주의해서 이 요소를 사용합니다. 애플리케이션에 제외된 파일이 필요한 경우 애플리케이션이 대상 컴퓨터에서 제대로 작동하지 않을 수 있습니다.

구문:

<unconditionalExclude></unconditionalExclude>

다음 .xml 파일은 마이그레이션에서 모든 .mp3 파일을 제외합니다. 이 요소를 사용하는 방법에 대한 추가 예제는 파일 및 설정 제외를 참조하세요.

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/excludefiles">
  <component context="System" type="Documents">
        <displayName>Test</displayName>
        <role role="Data">
            <rules>
             <unconditionalExclude>
                        <objectSet>
    <script>MigXmlHelper.GenerateDrivePatterns ("* [*.mp3]", "Fixed")</script>
                        </objectSet> 
             </unconditionalExclude>
            </rules>
        </role>
    </component>
</migration>

<변수>

<변수> 요소는 환경> 요소에< 필요합니다. 각 <변수> 요소에 대해 하나의< objectSet>, <script> 또는 <text> 요소가 있어야 합니다. 변수> 요소의< 콘텐츠는 환경 변수에 텍스트 값을 할당합니다. 이 요소에는 다음 세 가지 옵션이 있습니다.

  1. variable> 요소에<text> 요소가 포함된< 경우 변수 요소의 값은 text> 요소의< 값입니다.

  2. 변수> 요소에<스크립트> 요소가 포함되어< 있고 스크립트 호출이 null이 아닌 문자열을 생성하는 경우 변수> 요소의< 값은 스크립트 호출의 결과입니다.

  3. 변수> 요소에<objectSet> 요소가 포함되어< 있고 objectSet> 요소의< 평가에서 하나 이상의 개체 패턴을 생성하는 경우 결과 개체 패턴과 일치하는 첫 번째 개체의 값은 변수 요소의 값입니다.

구문:

<variable name="ID" remap=TRUE|FALSE>
</variable>
설정 필수 여부
name ID 는 환경 변수를 참조하는 데 사용되는 이름인 문자열 값입니다. 네임스페이스 충돌을 방지하기 위해 ID 를 구성 요소 이름으로 시작하는 것이 좋습니다. 예를 들어 구성 요소의 이름이 MyComponent이고 구성 요소의 설치 경로인 변수가 필요한 경우 를 MyComponent.InstallPath지정할 수 있습니다.
매핑할 아니요, 기본값 = FALSE 이 환경 변수를 다시 매핑 환경 변수로 평가할지 여부를 지정합니다. 이 환경 변수의 값 아래에 있는 경로에 있는 개체는 환경 변수가 대상 컴퓨터에서 가리키는 위치로 자동으로 이동됩니다.

다음 예제는 파일에서 가져옵니다 MigApp.xml .

<environment>
   <variable name="HklmWowSoftware">
      <text>HKLM\Software</text>
   </variable>
   <variable name="WinZip8or9or10Exe">
      <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\Windows\CurrentVersion\App Paths\winzip32.exe []")</script>
   </variable>
</environment>

<version>

<version> 요소는 구성 요소의 버전을 정의하지만 마이그레이션에는 영향을 주지 않습니다.

  • 발생 횟수: 0개 또는 1개

  • 부모 요소:<component>

  • 자식 요소: none

구문:

<version>ComponentVersion</version>
설정 필수 여부
ComponentVersion 패턴을 포함할 수 있는 구성 요소의 버전입니다.

예시:

<version>4.*</version>

<windowsObjects>

<windowsObjects> 요소는 USMT 내부용으로만 사용됩니다. 이 요소를 사용하지 마세요.

부록

위치 지정

  • 인코딩된 위치 지정 모든 도우미 함수에 사용되는 인코딩된 위치는 개체 이름에 대한 명확한 문자열 표현입니다. 인코딩된 위치는 노드 부분으로 구성되며 필요에 따라 대괄호로 묶인 리프가 뒤따릅니다. 이 형식은 노드와 나뭇잎을 명확하게 구분합니다.

    예를 들어 다음과 c:\Windows[Notepad.exe]같은 파일을 C:\Windows\Notepad.exe 지정합니다. 마찬가지로 와 같은 c:\Windows\System32디렉터리를 지정합니다C:\Windows\System32. (구문이 없는 것을 확인합니다 [] .)

    레지스트리를 나타내는 것은 비슷합니다. 레지스트리 키의 기본값은 빈 [] 구문으로 표시됩니다. 예를 들어 레지스트리 키의 HKLM\SOFTWARE\MyKey 기본값은 입니다 HKLM\SOFTWARE\MyKey[].

  • 위치 패턴 지정 위치 패턴을 지정하는 것은 실제 위치를 지정하는 것과 비슷합니다. 예외는 노드와 리프 부분 모두 패턴을 허용한다는 것입니다. 그러나 노드의 패턴은 리프로 확장되지 않습니다.

    예를 들어 패턴 c:\Windows\* 은 Windows 디렉터리 및 모든 하위 디렉터리와 일치하지만 해당 디렉터리의 파일과 일치하지는 않습니다. 파일과 일치하려면 를 c:\Windows\*[*] 지정해야 합니다.

내부 USMT 함수

다음 함수는 내부 USMT 전용입니다. .xml 파일에서 사용하지 마세요.

  • AntiAlias

  • ConvertScreenSaver

  • ConvertShowIEOnDesktop

  • ConvertToOfficeLangID

  • MigrateActiveDesktop

  • MigrateAppearanceUPM

  • MigrateDisplayCS

  • MigrateDisplaySS

  • MigrateIEAutoSearch

  • MigrateMouseUPM

  • MigrateSoundSysTray

  • MigrateTaskBarSS

  • SetPstPathInMapiStruc

유효한 버전 태그

다음 버전 태그는 다양한 도우미 함수와 함께 사용할 수 있습니다.

  • "CompanyName"

  • "FileDescription"

  • "FileVersion"

  • "InternalName"

  • "LegalCopyright"

  • "OriginalFilename"

  • "ProductName"

  • "ProductVersion"

다음 버전 태그에는 비교할 수 있는 값이 포함되어 있습니다.

  • "FileVersion"

  • "ProductVersion"