XML-Elementbibliothek

In diesem Artikel werden die XML-Elemente und Hilfsfunktionen beschrieben, die zum Erstellen der Migration .xml Dateien zur Verwendung mit dem User State Migration Tool (USMT) verwendet werden können. In diesem Artikel werden grundlegende Xml-Kenntnisse vorausgesetzt.

Zusätzlich zu XML-Elementen und Hilfsfunktionen gilt in diesem Artikel Folgendes:

  • Beschreibt, wie codierte Speicherorte und Standortmuster angegeben werden.
  • Funktionen, die nur für interne USMT-Funktionen verwendet werden.
  • Die Versionstags, die mit Hilfsfunktionen verwendet werden können.

Elemente und Hilfsfunktionen

In der folgenden Tabelle werden die XML-Elemente und Hilfsfunktionen beschrieben, die mit USMT verwendet werden können.

Elemente A-K Elemente L-Z Hilfsfunktionen
<addObjects>
<Attribute>
<Bytes>
<CommandLine>
<Bestandteil>
<Zustand>
<Bedingungen>
<Inhalt>
<contentModify>
<Beschreibung>
<destinationCleanup>
<entdecken>
<Erkennt>
<Erkennung>
<displayName>
<Umwelt>
<ausschließen>
<excludeAttributes>
<Erweiterungen>
<Erweiterung>
<externalProcess>
<icon>
<include>
<includeAttribute>
<Bibliothek>
<Ort>
<locationModify>
<_locDefinition>
<Hersteller>
<verschmelzen>
<Migration>
<namedElements>
<Objekt>
<objectSet>
<Pfad>
<Pfade>
<Muster>
<Verarbeitung>
<Plug-In>
<Rolle>
<Regeln>
<Skript>
<Text>
<unconditionalExclude>
<Variable>
<Version>
<windowsObjects>
<Bedingungsfunktionen>
<Inhaltsfunktionen>
<contentModify-Funktionen>
<Filterfunktionen ein-> und <ausschließen>
<locationModify-Funktionen>
<Mergefunktionen>
<Skriptfunktionen>
Interne USMT-Funktionen

<addObjects>

Das <addObjects-Element> emuliert das Vorhandensein eines oder mehrerer Objekte auf dem Quellcomputer. Die untergeordneten< Objektelemente> stellen die Details der emulierten Objekte bereit. Wenn der Inhalt ein <Skriptelement> ist, ist das Ergebnis des Aufrufs ein Array von Objekten.

Syntax:

<addObjects>
</addObjects>

Das folgende Beispiel stammt aus der MigApp.xml Datei:

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

<Attribute>

Das <attributes-Element> definiert die Attribute für einen Registrierungsschlüssel oder eine Datei.

  • Anzahl der Vorkommen: einmal für jedes <Objekt>

  • Übergeordnete Elemente:<Objekt>

  • Untergeordnete Elemente: keine

Syntax:

<attributes>Content</attributes>
Einstellung Erforderlich? Wert
Inhalt Ja Der Inhalt hängt vom typ des angegebenen Objekts ab.
  • Bei Dateien kann der Inhalt eine Zeichenfolge sein, die eines der folgenden Attribute enthält, die durch Kommas getrennt sind:
    • Archiv
    • Schreibgeschützt
    • System
    • Hidden
  • Bei Registrierungsschlüsseln kann der Inhalt einer der folgenden Typen sein:
    • Keine
    • Zeichenfolge
    • ExpandString
    • Binär
    • Dword
    • REG_SZ

Das folgende Beispiel stammt aus der MigApp.xml Datei:

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

<Bytes>

Das <Bytes-Element> kann nur für Dateien angegeben werden, da Bytes> ignoriert werden, wenn<<der Speicherort> einem Registrierungsschlüssel oder einem Verzeichnis entspricht.

  • Anzahl der Vorkommen: 0 (null) oder 1

  • Übergeordnete Elemente:<Objekt>

  • Untergeordnete Elemente: keine

Syntax:

<bytes string="Yes|No" expand="Yes|No">Content</bytes>
Einstellung Erforderlich? Wert
string Nein, der Standardwert ist "Nein". Bestimmt, ob Content als Zeichenfolge oder als Bytes interpretiert werden soll.
expand Nein (Standard = Ja) Wenn der expand-Parameter Auf Ja festgelegt ist, wird der Inhalt des <Bytes-Elements> zuerst im Kontext des Quellcomputers erweitert und dann interpretiert.
Inhalt Ja Hängt vom Wert der Zeichenfolge ab.
  • Wenn die Zeichenfolge Auf Ja festgelegt ist, wird der Inhalt des <Bytes-Elements> als Zeichenfolge interpretiert.
  • Wenn die Zeichenfolge Nein ist, wird der Inhalt des <Bytes-Elements> als Bytes interpretiert. Alle zwei Zeichen stellen den Hexadezimalwert eines Byte dar. Beispielsweise 616263 ist die Darstellung für die abc ANSI-Zeichenfolge. Eine vollständige Darstellung der UNICODE-Zeichenfolge abc einschließlich des Zeichenfolgenabschlusszeichens wäre: 6100620063000000.

Das folgende Beispiel stammt aus der MigApp.xml Datei:

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

<CommandLine>

Das <commandLine-Element> kann verwendet werden, um einen Dienst oder eine Anwendung vor oder nach dem Ausführen der ScanState - und LoadState-Tools zu starten oder zu beenden.

  • Anzahl der Vorkommen: unbegrenzt

  • Übergeordnete Elemente:<externalProcess>

  • Untergeordnete Elemente: keine

Syntax:

<commandLine>CommandLineString</commandLine>
Einstellung Erforderlich? Wert
CommandLineString Ja Eine gültige Befehlszeile.

<Bestandteil>

Das <Komponentenelement> ist in einer benutzerdefinierten .xml-Datei erforderlich. Dieses Element definiert das grundlegendste Konstrukt einer Migrationsdatei.xml . In der MigApp.xml Datei ist Beispielsweise Microsoft Office 2016 eine Komponente, die eine andere Komponente enthält, Microsoft Office Access 2016. Die untergeordneten Elemente können verwendet werden, um die Komponente zu definieren.

Eine Komponente kann in einer anderen Komponente geschachtelt werden. Das heißt, das <Komponentenelement> kann in zwei Fällen ein untergeordnetes Element des <Rollenelements> innerhalb des <Komponentenelements> sein:

  1. Wenn das übergeordnete <Komponentenelement> ein Container ist
  2. Wenn das untergeordnete <Komponentenelement> dieselbe Rolle wie das übergeordnete <Komponentenelement> besitzt.

Syntax:

<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"
hidden="Yes|No">
</component>
Einstellung Erforderlich? Wert
Typ Ja Die folgenden Elemente können verwendet werden, um Einstellungen zu gruppieren und den Typ der Komponente zu definieren.
  • System: Betriebssystemeinstellungen. Alle Windows-Komponenten werden durch diesen Typ definiert.
    Bei type="System" und defaultSupported="FALSE" werden die Einstellungen nicht migriert, es sei denn, es gibt eine entsprechende Komponente im .xml Dateien, die in der LoadState.exe Befehlszeile angegeben wird. Beispielsweise enthält die Standarddatei MigSys.xml Komponenten mit type="System" und defaultSupported="FALSE". Wenn diese Datei in der ScanState.exe Befehlszeile angegeben wird, muss die Datei auch in der LoadState.exe Befehlszeile für die zu migrierenden Einstellungen angegeben werden. Die Datei muss angegeben werden, da das LoadState.exe Tool eine entsprechende Komponente erkennen muss. Das heißt, die Komponente muss die gleiche Migrations-URL-ID der .xml-Datei und einen identischen Anzeigenamen aufweisen. Andernfalls migriert das Tool LoadState diese Einstellungen nicht aus dem Speicher. Diese Einstellung ist hilfreich, da ein Speicher für Zielcomputer verwendet werden kann, die dieselbe oder eine andere Version von Windows wie der Quellcomputer haben.
  • Anwendung: Einstellungen für eine Anwendung.
  • Gerät: Einstellungen für ein Gerät.
  • Urkunden: Gibt Dateien an.
Zusammenhang Nein
Default = UserAndSystem
Definiert den Bereich dieses Parameters; Das heißt, ob diese Komponente im Kontext des jeweiligen Benutzers, über das gesamte Betriebssystem oder beides verarbeitet werden soll.
Der größtmögliche Bereich wird durch das <Komponentenelement> festgelegt. Wenn z. B. ein <Komponentenelement> den Kontext User aufweist und ein <Regelelement> den Kontext UserAndSystem aufweist, würde das <Regelelement> so handeln, als hätte es den Kontext User. Wenn ein <Regelelement> den Kontext System aufweist, würde es so handeln, als wäre das <Regelelement> nicht vorhanden.
  • Benutzer: Wertet die Komponente für jeden Benutzer aus.
  • System: Wertet die Komponente nur einmal für das System aus.
  • UserAndSystem: Wertet die Komponente für das gesamte Betriebssystem und jeden Benutzer aus.
defaultSupported Nein
(Standard = TRUE)
Kann true, FALSE, YES oder NO sein. Wenn dieser Parameter FALSE (oder NO) ist, wird die Komponente nur migriert, wenn auf dem Zielcomputer eine entsprechende Komponente vorhanden ist.
Bei type="System" und defaultSupported="FALSE" werden die Einstellungen nicht migriert, es sei denn, es gibt eine entsprechende Komponente im .xml Dateien, die in der LoadState.exe Befehlszeile angegeben sind. Beispielsweise enthält die Standarddatei MigSys.xml Komponenten mit type="System" und defaultSupported="FALSE". Wenn diese Datei in der ScanState.exe Befehlszeile angegeben wird, muss die Datei auch in der LoadState.exe Befehlszeile für die zu migrierenden Einstellungen angegeben werden. Die Datei muss in beiden Befehlszeilen angegeben werden, da das LoadState-Tool eine entsprechende Komponente erkennen muss. Das heißt, die Komponente muss dieselbe Migrations-URL-ID der .xml-Datei und einen identischen Anzeigenamen aufweisen, andernfalls migriert das LoadState-Tool diese Einstellungen nicht aus dem Speicher. Diese Einstellung ist hilfreich, da ein Speicher für Zielcomputer verwendet werden kann, die dieselbe oder eine andere Version von Windows wie der Quellcomputer haben.
versteckt Dieser Parameter ist nur für die interne USMT-Verwendung vorgesehen.

Ein Beispiel finden Sie in einer der Standardmigrationsdateien.xml Dateien.

<Zustand>

Obwohl das <Condition-Element> unter den <Detect>-, <objectSet-> und <addObjects-Elementen> weiterhin unterstützt wird, empfiehlt Microsoft, das <Bedingungselement> nicht mehr zu verwenden, da es in zukünftigen Versionen von USMT möglicherweise veraltet ist. Wenn das <Bedingungselement> veraltet ist, wäre ein erneutes Schreiben aller Skripts erforderlich, die das <Bedingungselement> verwenden. Wenn stattdessen eine Bedingung in den <Elementen objectSet> und <addObjects verwendet werden muss, empfiehlt Microsoft die Verwendung des leistungsfähigeren Bedingungselements>>.< Das <Bedingungselement> ermöglicht die Formulierung komplexer boolescher Anweisungen.

Das <Bedingungselement> weist ein boolesches Ergebnis auf. Dieses Element kann verwendet werden, um die Bedingungen anzugeben, unter denen das übergeordnete Element ausgewertet wird. Wenn eine der aktuellen Bedingungen FALSE zurückgibt, wird das übergeordnete Element nicht ausgewertet.

  • Anzahl der Vorkommen: unbegrenzt.

  • Übergeordnete Elemente:<conditions>, <detect>, <objectSet>, <addObjects>

  • Untergeordnete Elemente: keine

  • Hilfsfunktionen: Die folgenden <Bedingungsfunktionen> können mit diesem Element verwendet werden: DoesOSMatch, IsNative64Bit(), IsOSLaterThan, , DoesObjectExistIsOSEarlierThan, IsFileVersionAboveIsSystemContextDoesFileVersionMatchIsFileVersionBelow, DoesStringContentContainIsSameObjectDoesStringContentEqual, IsSameContentund .IsSameStringContent

Syntax:

<condition negation="Yes|No">ScriptName</condition>
Einstellung Erforderlich? Wert
Negation Nein
Standard = Nein
"Yes" kehrt den True/False-Wert der Bedingung um.
ScriptName Ja Ein Skript, das in diesem Migrationsabschnitt definiert ist.

Im folgenden Codebeispiel werden z. B. die <Bedingungselemente>A und B durch den AND-Operator verknüpft, da sie sich in separaten <Abschnitten zu Bedingungen> befinden:

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

Im folgenden Codebeispiel werden die <Bedingungselemente>A und B jedoch durch den OR-Operator miteinander verknüpft, da sie sich im gleichen <Bedingungsabschnitt> befinden.

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

<Bedingungsfunktionen>

Die <Bedingungsfunktionen> geben einen booleschen Wert zurück. Diese Elemente können in <addObjects-Bedingungen> verwendet werden.

Betriebssystemversionsfunktionen

  • DoesOSMatch

    Bei allen Übereinstimmungen wird die Groß-/Kleinschreibung nicht beachtet.

    Syntax: DoesOSMatch("OSType","OSVersion")

    Einstellung Erforderlich? Wert
    OSType Ja Der einzige gültige Wert für diese Einstellung ist NT. Diese Einstellung muss jedoch festgelegt werden, damit die Bedingungsfunktionen<> ordnungsgemäß funktionieren.
    OSVersion Ja Hauptversion, Nebenversion, Buildnummer und korrigierte Dienstdiskette, getrennt durch Punkte. Beispiel: 5.0.2600.Service Pack 1. Die teilweise Spezifikation der Version kann auch mit einem Muster wie 5.0.*angegeben werden.

    Zum Beispiel:

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

    Die IsNative64Bit-Funktion gibt TRUE zurück, wenn der Migrationsprozess als nativer 64-Bit-Prozess ausgeführt wird. Das heißt, ein Prozess, der auf einem 64-Bit-System ohne Windows unter Windows (WOW) ausgeführt wird. Andernfalls wird FALSE zurückgegeben.

  • IsOSLaterThan

    Bei allen Vergleichen wird die Groß-/Kleinschreibung nicht beachtet.

    Syntax: IsOSLaterThan("OSType","OSVersion")

    Einstellung Erforderlich? Wert
    OSType Ja Kann 9x oder NT sein. Wenn OSType nicht mit dem Typ des aktuellen Betriebssystems übereinstimmt, wird FALSE zurückgegeben. Wenn das aktuelle Betriebssystem beispielsweise Windows NT-basiert und OSType"9x" ist, ist das Ergebnis FALSE.
    OSVersion Ja Hauptversion, Nebenversion, Buildnummer und korrigierte Dienstdiskette, getrennt durch Punkte. Beispiel: 5.0.2600.Service Pack 1. Eine partielle Spezifikation der Version kann auch angegeben werden, aber es ist kein Muster wie 5.0zulässig.

    Die IsOSLaterThan-Funktion gibt TRUE zurück, wenn das aktuelle Betriebssystem höher oder gleich OSVersion ist.

    Zum Beispiel:

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

    Bei allen Vergleichen wird die Groß-/Kleinschreibung nicht beachtet.

    Syntax: IsOSEarlierThan("OSType","OSVersion")

    Einstellung Erforderlich? Wert
    OSType Ja Kann 9x oder NT sein. Wenn OSType nicht mit dem Typ des aktuellen Betriebssystems übereinstimmt, wird FALSE zurückgegeben. Wenn das aktuelle Betriebssystem beispielsweise Windows NT-basiert und OSType"9x" ist, ist das Ergebnis FALSE.
    OSVersion Ja Hauptversion, Nebenversion, Buildnummer und korrigierte Dienstdiskette, getrennt durch Punkte. Beispiel: 5.0.2600.Service Pack 1. Eine partielle Spezifikation der Version kann auch angegeben werden, aber es ist kein Muster wie 5.0zulässig.

    Die IsOSEarlierThan-Funktion gibt TRUE zurück, wenn das aktuelle Betriebssystem vor OSVersion liegt.

Objektinhaltsfunktionen

  • DoesObjectExist

    Die DoesObjectExist-Funktion gibt TRUE zurück, wenn ein Objekt vorhanden ist, das dem Location-Muster entspricht. Andernfalls wird FALSE zurückgegeben. Das Standortmuster wird vor dem Versuch der Enumeration erweitert.

    Syntax: DoesObjectExist("ObjectType","EncodedLocationPattern")

    Einstellung Erforderlich? Wert
    ObjectType Ja Definiert den Objekttyp. Kann Datei oder Registrierung sein.
    EncodedLocationPattern Ja Das Standortmuster. Umgebungsvariablen sind zulässig.

    Ein Beispiel für dieses Element finden Sie in der MigApp.xml Datei.

  • DoesFileVersionMatch

    Bei der Musterprüfung wird die Groß-/Kleinschreibung nicht beachtet.

    Syntax: DoesFileVersionMatch("EncodedFileLocation","VersionTag","VersionValue")

    Einstellung Erforderlich? Wert
    EncodedFileLocation Ja Das Speicherortmuster für die Datei, die überprüft wird. Umgebungsvariablen sind zulässig.
    VersionTag Ja Der versionstag-Wert , der überprüft wird.
    VersionValue Ja Ein Zeichenfolgenmuster. Beispiel: "Microsoft*".

    Zum Beispiel:

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

    Die IsFileVersionAbove-Funktion gibt TRUE zurück, wenn die Version der Datei höher als VersionValue ist.

    Syntax: IsFileVersionAbove("EncodedFileLocation","VersionTag","VersionValue")

    Einstellung Erforderlich? Wert
    EncodedFileLocation Ja Das Speicherortmuster für die Datei, die überprüft wird. Umgebungsvariablen sind zulässig.
    VersionTag Ja Der versionstag-Wert , der überprüft wird.
    VersionValue Ja Der Wert, mit dem verglichen werden soll. Ein Muster kann nicht angegeben werden.
  • IsFileVersionBelow

    Syntax: IsFileVersionBelow("EncodedFileLocation","VersionTag","VersionValue")

    Einstellung Erforderlich? Wert
    EncodedFileLocation Ja Das Speicherortmuster für die Datei, die überprüft wird. Umgebungsvariablen sind zulässig.
    VersionTag Ja Der versionstag-Wert , der überprüft wird.
    VersionValue Ja Der Wert, mit dem verglichen werden soll. Ein Muster kann nicht angegeben werden.
  • IsSystemContext

    Die IsSystemContext-Funktion gibt TRUE zurück, wenn der aktuelle Kontext "System" ist. Andernfalls wird FALSE zurückgegeben.

    Syntax: IsSystemContext()

  • DoesStringContentEqual

    Die DoesStringContentEqual-Funktion gibt TRUE zurück, wenn die Zeichenfolgendarstellung des angegebenen Objekts mit identisch StringContentist.

    Syntax: DoesStringContentEqual("ObjectType","EncodedLocation","StringContent")

    Einstellung Erforderlich? Wert
    ObjectType Ja Definiert den Typ des Objekts. Kann Datei oder Registrierung sein.
    EncodedLocationPattern Ja Die codierte Position für das objekt, das untersucht wird. Umgebungsvariablen können angegeben werden.
    StringContent Ja Die Zeichenfolge, für die überprüft wird.

    Zum Beispiel:

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

    Die DoesStringContentContain-Funktion gibt TRUE zurück, wenn in der Zeichenfolgendarstellung des Objekts mindestens ein Vorkommen von StrToFind vorhanden ist.

    Syntax: DoesStringContentContain("ObjectType","EncodedLocation","StrToFind")

    Einstellung Erforderlich? Wert
    ObjectType Ja Definiert den Typ des Objekts. Kann Datei oder Registrierung sein.
    EncodedLocationPattern Ja Die codierte Position für das objekt, das untersucht wird. Umgebungsvariablen können angegeben werden.
    StrToFind Ja Eine Zeichenfolge, die im Inhalt des angegebenen Objekts durchsucht wird.
  • IsSameObject

    Die IsSameObject-Funktion gibt TRUE zurück, wenn die angegebenen codierten Speicherorte in dasselbe physische Objekt aufgelöst werden. Andernfalls wird FALSE zurückgegeben.

    Syntax: IsSameObject("ObjectType","EncodedLocation1","EncodedLocation2")

    Einstellung Erforderlich? Wert
    ObjectType Ja Definiert den Typ des Objekts. Kann Datei oder Registrierung sein.
    EncodedLocation1 Ja Der codierte Speicherort für das erste Objekt. Umgebungsvariablen können angegeben werden.
    EncodedLocation2 Ja Der codierte Speicherort für das zweite Objekt. Umgebungsvariablen können angegeben werden.

    Zum Beispiel:

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

    Die IsSameContent-Funktion gibt TRUE zurück, wenn die angegebenen Objekte denselben Inhalt aufweisen. Andernfalls wird FALSE zurückgegeben. Der Inhalt wird byte byte verglichen.

    Syntax: IsSameContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")

    Einstellung Erforderlich? Wert
    ObjectType1 Ja Definiert den Typ des ersten Objekts. Kann Datei oder Registrierung sein.
    EncodedLocation1 Ja Der codierte Speicherort für das erste Objekt. Umgebungsvariablen können angegeben werden.
    ObjectType2 Ja Definiert den Typ des zweiten Objekts. Kann Datei oder Registrierung sein.
    EncodedLocation2 Ja Der codierte Speicherort für das zweite Objekt. Umgebungsvariablen können angegeben werden.
  • IsSameStringContent

    Die IsSameStringContent-Funktion gibt TRUE zurück, wenn die angegebenen Objekte denselben Inhalt haben. Andernfalls wird FALSE zurückgegeben. Der Inhalt wird als Zeichenfolge interpretiert.

    Syntax: IsSameStringContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")

    Einstellung Erforderlich? Wert
    ObjectType1 Ja Definiert den Typ des ersten Objekts. Kann Datei oder Registrierung sein.
    EncodedLocation1 Ja Der codierte Speicherort für das erste Objekt. Umgebungsvariablen können angegeben werden.
    ObjectType2 Ja Definiert den Typ des zweiten Objekts. Kann Datei oder Registrierung sein.
    EncodedLocation2 Ja Der codierte Speicherort für das zweite Objekt. Umgebungsvariablen können angegeben werden.

<Bedingungen>

Das <conditions-Element> gibt ein boolesches Ergebnis zurück, das verwendet wird, um die Bedingungen anzugeben, unter denen das übergeordnete Element ausgewertet wird. USMT wertet die untergeordneten Elemente aus und verknüpft dann deren Ergebnisse mithilfe der Operatoren AND oder OR gemäß dem Vorgangsparameter.

Syntax:

<conditions operation="AND|OR">
</conditions>
Einstellung Erforderlich? Wert
Operation Nein, Standardwert = AND Definiert den booleschen Vorgang, der für die Ergebnisse ausgeführt wird, die von den untergeordneten Elementen abgerufen werden.

Das folgende Beispiel stammt aus der MigApp.xml Datei:

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

<Inhalt>

Das <Inhaltselement> kann verwendet werden, um eine Liste von Objektmustern anzugeben, um einen Objektsatz vom Quellcomputer abzurufen. Jedes <objectSet> innerhalb eines <Inhaltselements> wird ausgewertet. Für jede resultierende Objektmusterliste werden die objekte, die mit ihr übereinstimmen, aufgelistet, und ihr Inhalt wird nach dem Filterparameter gefiltert. Das resultierende Zeichenfolgenarray ist die Ausgabe für das <Inhaltselement> . Das Filterskript gibt ein Array von Speicherorten zurück. Das übergeordnete <objectSet-Element> kann mehrere untergeordnete <Inhaltselemente> enthalten.

  • Anzahl der Vorkommen: unbegrenzt

  • Übergeordnete Elemente:<objectSet>

  • Untergeordnete Elemente:<objectSet>

  • Hilfsfunktionen: Die folgenden <Inhaltsfunktionen> können mit diesem Element verwendet werden: ExtractSingleFile, ExtractMultipleFilesund ExtractDirectory.

Syntax:

<content filter="ScriptInvocation">
</content>
Einstellung Erforderlich? Wert
filter Ja Ein Skript gefolgt von einer beliebigen Anzahl von Zeichenfolgenargumenten, die durch ein Komma getrennt und in Klammern eingeschlossen sind. Beispiel: MyScripts.AScript ("Arg1","Arg2").
Das Skript wird für jedes Objekt aufgerufen, das von den Objektsätzen in der <Includeregel> aufgezählt wird. Das Filterskript gibt einen booleschen Wert zurück. Wenn der Rückgabewert TRUE ist, wird das Objekt migriert. Wenn es FALSE ist, wird es nicht migriert.

<Inhaltsfunktionen>

Die folgenden Funktionen generieren Muster aus dem Inhalt eines Objekts. Diese Funktionen werden für jedes Objekt aufgerufen, das das übergeordnete <ObjectSet-Element> aufzählt.

  • ExtractSingleFile

    Wenn der Registrierungswert ein MULTI-SZ-Wert ist, wird nur das erste Segment verarbeitet. Das zurückgegebene Muster ist der codierte Speicherort für eine Datei, die im System vorhanden sein muss. Wenn die Spezifikation im Registrierungswert korrekt ist, die Datei aber nicht vorhanden ist, gibt diese Funktion NULL zurück.

    Syntax: ExtractSingleFile(Separators,PathHints)

    Einstellung Erforderlich? Wert
    Trennzeichen Ja Eine Liste möglicher Trennzeichen, die möglicherweise der Dateispezifikation in diesem Registrierungswertnamen entsprechen. Wenn der Inhalt beispielsweise "C:\Windows\Notepad.exe,-2" ist, ist das Trennzeichen ein Komma. NULL kann angegeben werden.
    PathHints Ja Eine Liste zusätzlicher Pfade, die durch Doppelpunkte (;) getrennt sind, in der die Funktion nach einer Datei sucht, die dem aktuellen Inhalt entspricht. Wenn der Inhalt beispielsweise "Notepad.exe" und der Pfad die Umgebungsvariable %Path% ist, findet die Funktion Notepad.exe in %windir% und gibt "c:\Windows [Notepad.exe]" zurück. NULL kann angegeben werden.

    Zum Beispiel:

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

    und

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

    Die ExtractMultipleFiles-Funktion gibt mehrere Muster zurück, eines für jede Datei, die sich im Inhalt des angegebenen Registrierungswerts befindet. Wenn der Registrierungswert multi-SZ ist, wird das MULTI-SZ-Trennzeichen standardmäßig als Trennzeichen angesehen. Daher muss für MULTI-SZ das <Argument Separators>NULL sein.

    Die zurückgegebenen Muster sind die codierten Speicherorte für Dateien, die auf dem Quellcomputer vorhanden sein müssen. Wenn die Spezifikation im Registrierungswert korrekt ist, die Datei aber nicht vorhanden ist, ist sie nicht in der resultierenden Liste enthalten.

    Syntax: ExtractMultipleFiles(Separators,PathHints)

    Einstellung Erforderlich? Wert
    Trennzeichen Ja Eine Liste möglicher Trennzeichen, die möglicherweise der Dateispezifikation in diesem Registrierungswertnamen entsprechen. Wenn der Inhalt beispielsweise "C:\Windows\Notepad.exe,-2" ist, ist das Trennzeichen ein Komma. Dieser Parameter muss null sein, wenn MULTI-SZ-Registrierungswerte verarbeitet werden.
    PathHints Ja Eine Liste zusätzlicher Pfade, die durch Doppelpunkte (;) getrennt sind, in der die Funktion nach einer Datei sucht, die dem aktuellen Inhalt entspricht. Wenn der Inhalt beispielsweise "Notepad.exe" und der Pfad die Umgebungsvariable %Path% ist, findet die Funktion Notepad.exe in %windir% und gibt "c:\Windows [Notepad.exe]" zurück. NULL kann angegeben werden.
  • ExtractDirectory

    Die ExtractDirectory-Funktion gibt ein Muster zurück, bei dem es sich um den codierten Speicherort für ein Verzeichnis handelt, das auf dem Quellcomputer vorhanden sein muss. Wenn die Spezifikation im Registrierungswert korrekt ist, das Verzeichnis aber nicht vorhanden ist, gibt diese Funktion NULL zurück. Wenn ein Registrierungswert verarbeitet wird, bei dem es sich um einen MULTI-SZ-Wert handelt, wird nur das erste Segment verarbeitet.

    Syntax: ExtractDirectory(Separators,LevelsToTrim,PatternSuffix)

    Einstellung Erforderlich? Wert
    Trennzeichen Nein Eine Liste möglicher Trennzeichen, die möglicherweise der Dateispezifikation in diesem Registrierungswertnamen entsprechen. Wenn der Inhalt beispielsweise "C:\Windows\Notepad.exe,-2" ist, ist das Trennzeichen ein Komma. Bei der Verarbeitung von MULTI-SZ-Registrierungswerten muss NULL angegeben werden.
    LevelsToTrim Ja Die Anzahl der Ebenen, die am Ende der Verzeichnisspezifikation gelöscht werden sollen. Verwenden Sie diese Funktion, um ein Stammverzeichnis zu extrahieren, wenn ein Registrierungswert auf dieses Stammverzeichnis an einem bekannten Speicherort verweist.
    PatternSuffix Ja Das Muster, das der Verzeichnisspezifikation hinzugefügt werden soll. Beispiel: * [*].

    Zum Beispiel:

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

<contentModify>

Das <contentModify-Element> ändert den Inhalt eines Objekts, bevor das Objekt auf den Zielcomputer geschrieben wird. Für jedes <contentModify-Element> können mehrere <objectSet-Elemente> vorhanden sein. Dieses Element gibt den neuen Inhalt des Zu verarbeitenden Objekts zurück.

  • Anzahl der Vorkommen: Unbegrenzt

  • Übergeordnete Elemente:<Regeln>

  • Erforderliche untergeordnete Elemente:<objectSet>

  • Hilfsfunktionen: Die folgenden <contentModify-Funktionen> können mit diesem Element verwendet werden: ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable, MergeMultiSzContent und MergeDelimitedContent.

Syntax:

<contentModify script="ScriptInvocation">
</contentModify>
Einstellung Erforderlich? Wert
Skript Ja Ein Skript gefolgt von einer beliebigen Anzahl von Zeichenfolgenargumenten, die durch ein Komma getrennt und in Klammern eingeschlossen sind. Beispiel: MyScripts.AScript ("Arg1","Arg2")..

Das Skript wird für jedes Objekt aufgerufen, das von den Objektsätzen in der Includeregel aufgezählt wird. Das Filterskript gibt einen booleschen Wert zurück. Wenn der Rückgabewert TRUE ist, wird das Objekt migriert. Wenn es FALSE ist, wird es nicht migriert.

<contentModify-Funktionen>

Die folgenden Funktionen ändern den Inhalt von Objekten, während sie migriert werden. Diese Funktionen werden für jedes Objekt aufgerufen, das das übergeordnete <ObjectSet-Element> aufzählt.

  • ConvertToDWORD

    Die ConvertToDWORD-Funktion konvertiert den Inhalt von Registrierungswerten, die vom übergeordneten <ObjectSet-Element> aufgezählt werden, in ein DWORD. ConvertToDWORD konvertiert z. B. die Zeichenfolge "1" in das DWORD0x00000001. Wenn die Konvertierung fehlschlägt, wird der Wert von DefaultValueOnError angewendet.

    Syntax: ConvertToDWORD(DefaultValueOnError)

    Einstellung Erforderlich? Wert
    DefaultValueOnError Nein Der Wert, der in den Wertnamen geschrieben wird, wenn die Konvertierung fehlschlägt. NULL kann angegeben werden und 0 wird geschrieben, wenn die Konvertierung fehlschlägt.
  • ConvertToString

    Die ConvertToString-Funktion konvertiert den Inhalt von Registrierungswerten, die dem übergeordneten <ObjectSet-Element> entsprechen, in eine Zeichenfolge. Beispielsweise wird das DWORD 0x00000001 in die Zeichenfolge "1" konvertiert. Wenn die Konvertierung fehlschlägt, wird der Wert von DefaultValueOnError angewendet.

    Syntax: ConvertToString(DefaultValueOnError)

    Einstellung Erforderlich? Wert
    DefaultValueOnError Nein Der Wert, der in den Wertnamen geschrieben wird, wenn die Konvertierung fehlschlägt. NULL kann angegeben werden und 0 wird geschrieben, wenn die Konvertierung fehlschlägt.

    Zum Beispiel:

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

    Die ConvertToBinary-Funktion konvertiert den Inhalt von Registrierungswerten, die dem übergeordneten <ObjectSet-Element> entsprechen, in einen binärtyp.

    Syntax: ConvertToBinary ()

  • OffsetValue

    Die OffsetValue-Funktion addiert oder subtrahiert Value vom Wert des migrierten Objekts und schreibt das Ergebnis dann zurück in den Registrierungswert auf dem Zielcomputer. Wenn das migrierte Objekt beispielsweise ein DWORD mit dem Wert ist 14und der Wert"-2" lautet, befindet sich 12 der Registrierungswert auf dem Zielcomputer.

    Syntax: OffsetValue(Value)

    Einstellung Erforderlich? Wert
    Wert Ja Die Zeichenfolgendarstellung eines numerischen Werts. Es kann positiv oder negativ sein. Beispiel: OffsetValue(2).
  • SetValueByTable

    Die SetValueByTable-Funktion gleicht den Wert vom Quellcomputer mit der Quelltabelle ab. Wenn der Wert vorhanden ist, wird der entsprechende Wert in der Zieltabelle angewendet. Wenn der Wert nicht vorhanden ist oder die Zieltabelle keinen entsprechenden Wert aufweist, wird DefaultValueOnError angewendet.

    Syntax: SetValueByTable(SourceTable,DestinationTable,DefaultValueOnError)

    Einstellung Erforderlich? Wert
    SourceTable Ja Eine Liste von Werten, die durch Kommas getrennt sind, die für die Quellregistrierungswerte möglich sind.
    DestinationTable Nein Eine Liste der übersetzten Werte, die durch Kommas getrennt sind.
    DefaultValueOnError Nein Der Wert, der auf den Zielcomputer angewendet wird, wenn einer der beiden
    1. Der Wert für den Quellcomputer stimmt nicht mit SourceTable überein.
    2. DestinationTable hat keinen entsprechenden Wert.

    Wenn DefaultValueOnErrorNULL ist, wird der Wert auf dem Zielcomputer nicht geändert.
  • KeepExisting

    Die KeepExisting-Funktion kann verwendet werden, wenn auf dem Zielcomputer Konflikte auftreten. Diese Funktion behält die angegebenen Attribute für das Objekt, das sich auf dem Zielcomputer befindet, bei (überschreibt sie nicht).

    Syntax: KeepExisting("OptionString","OptionString","OptionString",…)

    Einstellung Erforderlich? Wert
    OptionString Ja OptionString kann Security, TimeFields oder FileAttrib:Letter sein. Jeder Typ von OptionStrings kann angegeben werden. Geben Sie nicht mehrere OptionStrings mit demselben Wert an. Wenn mehrere OptionStrings mit demselben Wert angegeben werden, wird die Rechtsoption dieses Typs beibehalten. Geben Sie beispielsweise nicht an ("FileAttrib:H", "FileAttrib:R"), da nur Schreibgeschützt ausgewertet wird. Geben Sie stattdessen ("FileAttrib:HR") an, und sowohl ausgeblendete als auch schreibgeschützte Attribute werden auf dem Zielcomputer beibehalten.
    • Sicherheit: Behält die Sicherheitsbeschreibung des Zielobjekts bei, sofern vorhanden.
    • TimeFields: Behält die Zeitstempel des Zielobjekts bei. Dieser Parameter gilt nur für Dateien.
    • FileAttrib:<Buchstabe>: Behält den Attributwert des Zielobjekts, entweder ON oder OFF, für den angegebenen Satz von Dateiattributen bei. Dieser Parameter gilt nur für Dateien. Im Folgenden wird die Groß-/Kleinschreibung nicht beachtet, aber USMT ignoriert alle Werte, die ungültig oder wiederholt sind, oder wenn nach FileAttrib:ein Leerzeichen vorhanden ist. Es kann eine beliebige Kombination der folgenden Attribute angegeben werden:
      • A = Archiv
      • C = Komprimiert
      • E = Verschlüsselt
      • H = Ausgeblendet
      • I = Nicht indizierter Inhalt
      • O = Offline
      • R = Read-Only
      • S = System
      • T = Temporär
  • MergeMultiSzContent

    Die MergeMultiSzContent-Funktion führt den MULTI-SZ-Inhalt der Registrierungswerte, die vom übergeordneten <ObjectSet-Element> aufgezählt werden, mit dem Inhalt der entsprechenden Registrierungswerte zusammen, die bereits auf dem Zielcomputer vorhanden sind. Instruction und String entfernen sie entweder, oder fügen Sie Inhalt zu der resultierenden MULTI-SZ hinzu. Doppelte Elemente werden entfernt.

    Syntax: MergeMultiSzContent (Instruction,String,Instruction,String,…)

    Einstellung Erforderlich? Wert
    Anweisung Ja Dies kann einer der folgenden Werte sein:
    • Fügen Sie hinzu. Fügt dem resultierenden MULTI-SZ die entsprechende Zeichenfolge hinzu, sofern sie noch nicht vorhanden ist.
    • Entfernen. Entfernt die entsprechende Zeichenfolge aus dem resultierenden MULTI-SZ.
    Zeichenfolge Ja Die hinzuzufügende oder zu entfernende Zeichenfolge.
  • MergeDelimitedContent

    Die MergeDelimitedContent-Funktion führt den Inhalt der Registrierungswerte, die vom übergeordneten <ObjectSet-Element> aufgezählt werden, mit dem Inhalt der entsprechenden Registrierungswerte zusammen, die bereits auf dem Zielcomputer vorhanden sind. Der Inhalt wird als Liste von Elementen betrachtet, die durch eines der Zeichen im Delimiters-Parameter getrennt sind. Doppelte Elemente werden entfernt.

    Syntax: MergeDelimitedContent(Delimiters,Instruction,String,…)

    Einstellung Erforderlich? Wert
    Trennzeichen Ja Ein einzelnes Zeichen, das verwendet wird, um den Inhalt des zu verarbeitenden Objekts zu trennen. Der Inhalt wird als eine Liste von Elementen betrachtet, die durch die Trennzeichen getrennt ist.
    Trennt z. B "." . die Zeichenfolge basierend auf einem Punkt.
    Anweisung Ja Dies kann einer der folgenden Werte sein:
    • Hinzufügen: Fügt dem resultierenden MULTI-SZ eine Zeichenfolge hinzu, wenn sie noch nicht vorhanden ist.
    • Entfernen: Entfernt Zeichenfolge aus dem resultierenden MULTI-SZ.
    Zeichenfolge Ja Die hinzuzufügende oder zu entfernende Zeichenfolge.

<Beschreibung>

Das <description-Element> definiert eine Beschreibung für die Komponente, wirkt sich jedoch nicht auf die Migration aus.

  • Anzahl der Vorkommen: 0 (null) oder 1

  • Übergeordnete Elemente:<Komponente>

  • Untergeordnete Elemente: keine

Syntax:

<description>ComponentDescription</description>
Einstellung Erforderlich? Wert
ComponentDescription Ja Die Beschreibung der Komponente.

Das folgende Codebeispiel zeigt, wie das <description-Element> die Beschreibung "Meine benutzerdefinierte Komponente" definiert:

<description>My custom component<description>

<destinationCleanup>

Das <destinationCleanup-Element> löscht Objekte, z. B. Dateien und Registrierungsschlüssel, vom Zielcomputer, bevor die Objekte vom Quellcomputer angewendet werden. Dieses Element wird nur ausgewertet, wenn das Tool LoadState auf dem Zielcomputer ausgeführt wird. Das heißt, dieses Element wird vom ScanState-Tool ignoriert.

Wichtig

Verwenden Sie diese Option mit äußerster Vorsicht, da objekte vom Zielcomputer gelöscht werden.

Für jedes <destinationCleanup-Element> können mehrere <objectSet-Elemente> vorhanden sein. Dieses Element wird häufig verwendet, wenn auf dem Quellcomputer ein Registrierungsschlüssel fehlt, die Komponente jedoch noch migriert werden muss. In diesem Fall können alle Registrierungsschlüssel der Komponente vor der Migration der Quellregistrierungsschlüssel gelöscht werden. Durch das Löschen aller Registrierungsschlüssel der Komponente wird sichergestellt, dass, wenn auf dem Quellcomputer ein Schlüssel fehlt, dieser auch auf dem Zielcomputer fehlt.

  • Anzahl der Vorkommen: Unbegrenzt

  • Übergeordnete Elemente:<Regeln>

  • Untergeordnete Elemente:<objectSet> (Der Zielcomputer löscht alle untergeordneten Elemente.)

Syntax:

<destinationCleanup filter=ScriptInvocation>
</destinationCleanup>
Einstellung Erforderlich? Wert
filter Ja Ein Skript gefolgt von einer beliebigen Anzahl von Zeichenfolgenargumenten, die durch ein Komma getrennt und in Klammern eingeschlossen sind. Beispiel: MyScripts.AScript ("Arg1","Arg2").

Das Skript wird für jedes Objekt aufgerufen, das von den Objektsätzen in der Includeregel aufgezählt wird. Das Filterskript gibt einen booleschen Wert zurück. Wenn der Rückgabewert TRUE ist, wird das Objekt migriert. Wenn es FALSE ist, wird es nicht migriert.

Zum Beispiel:

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

<entdecken>

Obwohl das <Detect-Element> weiterhin unterstützt wird, empfiehlt Microsoft, das <Detect-Element> nicht mehr zu verwenden, da es in zukünftigen UsMT-Versionen möglicherweise veraltet ist. Wenn das <Detect-Element> veraltet ist, wäre ein Erneutes Schreiben aller Skripts erforderlich, die das <detect-Element> verwenden. Stattdessen empfiehlt Microsoft die Verwendung des <Erkennungselements> . Das <Erkennungselement> ermöglicht klarer formulierte komplexe boolesche Anweisungen.

Das <Detect-Element> kann verwendet werden, um zu bestimmen, ob die Komponente in einem System vorhanden ist. Wenn alle untergeordneten <Erkennungselemente> innerhalb eines <Erkennungselements> in TRUE aufgelöst werden, wird das <Detect-Element> in TRUE aufgelöst. Wenn untergeordnete <Erkennungselemente> in FALSE aufgelöst werden, wird das übergeordnete <Erkennungselement> in FALSE aufgelöst. Wenn kein Abschnitt zum Erkennen> eines Elements vorhanden ist<, geht USMT davon aus, dass die Komponente vorhanden ist.

Für jedes <Erkennungselement> können mehrere untergeordnete <Bedingungs> - oder <objectSet-Elemente> vorhanden sein, die logisch durch einen OR-Operator verknüpft werden. Wenn mindestens eine Bedingung> oder<<ein objectSet-Element>als TRUE ausgewertet wird, wird das <Detect-Element> zu TRUE ausgewertet.

Syntax:

<detect name="ID" context="User|System|UserAndSystem">
</detect>
Einstellung Erforderlich? Wert
name Ja, wenn <detect> ein untergeordnetes Element für <namedElements> ist
Nein, wenn <die Erkennung> ein untergeordnetes Element ist, das erkannt werden soll <>
Wenn die ID angegeben wird, werden keine untergeordneten Elemente verarbeitet. Stattdessen werden alle anderen <Erkennungselemente> mit demselben Namen verarbeitet, die <im namedElements-Element> deklariert sind.
Zusammenhang Nein
(standard = UserAndSystem)
Definiert den Bereich dieses Parameters, d. h. ob diese Komponente im Kontext des jeweiligen Benutzers, für das gesamte Betriebssystem oder beides verarbeitet werden soll.
Der größtmögliche Bereich wird durch das Komponentenelement festgelegt. Wenn z. B. ein <Komponentenelement> den Kontext User und ein <Regelelement> den Kontext UserAndSystem aufweist, verhält sich das <Regelelement> so, als hätte es den Kontext User. Wenn das <Regelelement> den Kontext System hätte, würde es so wirken, als ob das <Regelelement> nicht vorhanden wäre.
  • Benutzer: Wertet die Variablen für jeden Benutzer aus.
  • System: Wertet die Variablen nur einmal für das System aus.
  • UserAndSystem: Wertet die Variablen für das gesamte Betriebssystem und jeden Benutzer aus.

Beispiele finden Sie in den Beispielen für <die Erkennung>.

<Erkennt>

Obwohl das <Detects-Element> weiterhin unterstützt wird, empfiehlt Microsoft, das <Detects-Element> nicht mehr zu verwenden, da es in zukünftigen Versionen von USMT möglicherweise veraltet ist. Wenn das <Detects-Element> veraltet ist, erfordert es ein Erneutes Schreiben aller Skripts, die das <detects-Element> verwenden. Stattdessen empfiehlt Microsoft die Verwendung des <Erkennungselements>, wenn das übergeordnete Element role> oder namedElements ist<, oder das <Conditions-Element> zu verwenden, wenn das übergeordnete Element Regeln> ist<.>< Das <Erkennungselement> ermöglicht klarer formulierte komplexe boolesche Anweisungen, und das <Bedingungselement> ermöglicht die Formulierung komplexer boolescher Anweisungen.

Das <Detects-Element> ist ein Container für mindestens ein <Erkennungselement> . Wenn alle untergeordneten Erkennungselemente> innerhalb eines< -Elements in TRUE aufgelöst werden, wird erkannt>, dass in TRUE aufgelöst wird.<<> Wenn eines der untergeordneten <Erkennungselemente>>in FALSE aufgelöst wird, wird erkannt, dass in< FALSE aufgelöst wird. Um zu verhindern, dass das <detects-Element> innerhalb einer Komponente geschrieben wird, erstellen Sie das <detects-Element> unter dem <namedElements-Element> , und verweisen Sie dann darauf. Wenn kein <Abschnitt "detects> "-Element vorhanden ist, geht USMT davon aus, dass die Komponente vorhanden ist. Die Ergebnisse der einzelnen <Erkennungselemente werden durch den OR-Operator zusammengeführt, um die Regel zu bilden, die zum Erkennen des übergeordneten> Elements verwendet wird.

Syntax:

<detects name="ID" context="User|System|UserAndSystem">
</detects>
Einstellung Erforderlich? Wert
name Ja, wenn <erkennt, dass ein untergeordnetes> Element für <namedElements> ist
Nein, wenn <erkennt>, dass eine Rolle> oder Regeln untergeordnet< ist ><
Wenn id angegeben wird, werden keine untergeordneten< Erkennungselemente> verarbeitet. Stattdessen erkennt> jedes andere< Element, dass Elemente mit demselben Namen, die <im namedElements-Element> deklariert sind, verarbeitet werden.
Zusammenhang Nein
(standard = UserAndSystem)
Definiert den Bereich dieses Parameters: ob diese Komponente im Kontext des jeweiligen Benutzers, über das gesamte Betriebssystem oder beides verarbeitet werden soll.
Der größtmögliche Bereich wird durch das <Komponentenelement> festgelegt. Wenn z. B. ein <Komponentenelement> den Kontext User aufweist und ein <Regelelement> den Kontext UserAndSystem aufweist, würde das <Regelelement> so handeln, als hätte es den Kontext User. Wenn das <Regelelement> den Kontext System hätte, würde es so wirken, als ob das <Regelelement> nicht vorhanden wäre.
  • Benutzer: Wertet die Variablen für jeden Benutzer aus.
  • System: Wertet die Variablen nur einmal für das System aus.
  • UserAndSystem: Wertet die Variablen für das gesamte Betriebssystem und jeden Benutzer aus.

Der Kontextparameter wird ignoriert, um <Elemente zu erkennen> , die sich innerhalb von <Regelelementen> befinden.

Das folgende Beispiel stammt aus der MigApp.xml Datei.

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

<Erkennung>

Das <Erkennungselement> ist ein Container für ein <Bedingungselement> . Das Ergebnis der untergeordneten <Bedingungselemente> , die sich unterhalb des <elements conditions> befinden, bestimmt das Ergebnis dieses Elements. Wenn beispielsweise alle untergeordneten <Bedingungselemente> innerhalb des <Erkennungselements> in TRUE aufgelöst werden, wird das <Erkennungselement> in TRUE aufgelöst. Wenn eines der untergeordneten <Bedingungselemente> in FALSE aufgelöst wird, wird das <Erkennungselement> in FALSE aufgelöst.

Darüber hinaus werden die Ergebnisse der einzelnen <Erkennungsabschnitte> innerhalb des <Rollenelements> durch den OR-Operator zusammengeführt, um die Erkennungsregel des übergeordneten Elements zu bilden. Das heißt, wenn einer der <Erkennungsabschnitte> in TRUE aufgelöst wird, wird das <Rollenelement> verarbeitet. Andernfalls wird das <Rollenelement> nicht verarbeitet.

Verwenden Sie das <Erkennungselement> unter dem <namedElements-Element> , um nicht innerhalb einer Komponente zu schreiben. Fügen Sie dann einen übereinstimmenden <Erkennungsabschnitt> unter dem <Rollenelement> ein, um zu steuern, ob die Komponente migriert wird. Wenn es keinen <Erkennungsabschnitt> für eine Komponente gibt, geht USMT davon aus, dass die Komponente vorhanden ist.

Syntax:

<detection name="ID" context="User|System|UserAndSystem">
</detection>
Einstellung Erforderlich? Wert
name
  • Ja, wenn <die Erkennung> unter <namedElements> deklariert wird
  • Optional, wenn unter <der Rolle> deklariert
Bei einer Deklaration wird der Inhalt des <Erkennungselements> ignoriert, und der Inhalt des <Erkennungselements> mit demselben Namen, der <im namedElements-Element> deklariert ist, wird ausgewertet.
Zusammenhang Nein, Standard = UserAndSystem Definiert den Bereich dieses Parameters: ob diese Komponente im Kontext des jeweiligen Benutzers, über das gesamte Betriebssystem oder beides verarbeitet werden soll.
  • Benutzer: Wertet die Komponente für jeden Benutzer aus.
  • System: Wertet die Komponente nur einmal für das System aus.
  • UserAndSystem: Wertet die Komponente für das gesamte Betriebssystem und jeden Benutzer aus.

Zum Beispiel:

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

und

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

<displayName>

Das <displayName-Element> ist ein erforderliches Feld innerhalb jedes <Komponentenelements> .

  • Anzahl der Vorkommen: einmal für jede Komponente

  • Übergeordnete Elemente:<Komponente>

  • Untergeordnete Elemente: keine

Syntax:

<displayName _locID="ID">ComponentName</displayName>
Einstellung Erforderlich? Wert
locID Nein Dieser Parameter ist für die interne USMT-Verwendung vorgesehen. Verwenden Sie diesen Parameter nicht.
ComponentName Ja Der Name für die Komponente.

Zum Beispiel:

<displayName>Command Prompt settings</displayName>

<Umwelt>

Das <Umgebungselement> ist ein Container für <variablen> Elemente, in denen Variablen für die Verwendung in einer .xml-Datei definiert werden können. Alle auf diese Weise definierten Umgebungsvariablen sind privat. Das heißt, sie sind nur für ihre untergeordneten Komponenten und die Komponente verfügbar, in der sie definiert wurden. Zwei Beispielszenarien finden Sie unter Beispiele.

Syntax:

<environment name="ID" context="User|System|UserAndSystem">
</environment>
Einstellung Erforderlich? Wert
name Ja, wenn <die Umgebung> ein untergeordnetes Element von <namedElements> ist
Nein, wenn <die Umgebung> ein untergeordnetes Element der <Rolle> oder <Komponente> ist
Wenn die ID als untergeordnetes Element der <Rollen>- oder <Komponentenelemente> deklariert wird, ignoriert USMT den Inhalt des <Umgebungselements>, und der Inhalt des <Umgebungselements> mit demselben Namen, der <im namedElements-Element> deklariert ist, wird verarbeitet.
Zusammenhang Nein
(standard = UserAndSystem)
Definiert den Bereich dieses Parameters: ob diese Komponente im Kontext des jeweiligen Benutzers, über das gesamte Betriebssystem oder beides verarbeitet werden soll.
Der größtmögliche Bereich wird durch das <Komponentenelement> festgelegt. Wenn z. B. ein <Komponentenelement> den Kontext User aufweist und ein <Regelelement> den Kontext UserAndSystem aufweist, würde das <Regelelement> so handeln, als hätte es den Kontext User. Wenn das <Regelelement> einen Kontext von System hätte, würde es so tun, als ob <Regeln> nicht vorhanden wären.
  • Benutzer: Wertet die Variablen für jeden Benutzer aus.
  • System: Wertet die Variablen nur einmal für das System aus.
  • UserAndSystem: Wertet die Variablen für das gesamte Betriebssystem und jeden Benutzer aus.

Beispiele

Beispielszenario 1

Generieren Sie in diesem Szenario abhängig von der Konfiguration des Zielcomputers den Speicherort von Objekten zur Laufzeit. Wenn beispielsweise eine Anwendung Daten in das Verzeichnis schreibt, in dem die Anwendung installiert ist, und Benutzer die Anwendung an einer beliebigen Stelle auf dem Computer installieren können. Wenn die Anwendung einen Registrierungswert hklm\software\companyname\install [path\] schreibt und dann diesen Wert mit dem Speicherort aktualisiert, an dem die Anwendung installiert ist, besteht die einzige Möglichkeit, die erforderlichen Daten ordnungsgemäß zu migrieren, darin, eine Umgebungsvariable zu definieren. Zum Beispiel:

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

Anschließend kann eine Include-Regel wie folgt verwendet werden. Jede der <Skriptfunktionen> kann verwendet werden, um ähnliche Aufgaben auszuführen.

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

Zweitens können Registrierungswerte gefiltert werden, um die benötigten Daten zu enthalten. Im folgenden Beispiel wird die erste Zeichenfolge (vor dem Trennzeichen ",") im Wert der Registrierung Hklm\software\companyname\application\ [Path\]extrahiert.

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

Beispielszenario 2

In diesem Szenario müssen fünf Dateien mit dem Namen File1.txt, File2.txtusw. von %SYSTEMDRIVE%\data\userdata\dir1\dir2\migriert werden. Um diese Dateien zu migrieren, muss sich die folgende <Includeregel> in einer .xml-Datei befinden:

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

Anstatt den Pfad fünfmal einzugeben, erstellen Sie wie folgt eine Variable für den Speicherort:

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

Geben Sie dann die Variable in einer <Includeregel> wie folgt an:

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

Das <exclude-Element> bestimmt, welche Objekte nicht migriert werden, es sei denn, es gibt ein spezifischeres <Includeelement> , das ein Objekt migriert. Wenn für dasselbe Objekt ein include>- und<<ein exclude-Element> vorhanden ist, wird das Objekt eingeschlossen. Für jedes <exclude-Element> können mehrere untergeordnete <objectSet-Elemente> vorhanden sein.

  • Anzahl der Vorkommen: Unbegrenzt

  • Übergeordnete Elemente:<Regeln>

  • Untergeordnete Elemente:<objectSet>

  • Hilfsfunktionen: Die folgenden <Ausschlussfilterfunktionen> können mit diesem Element verwendet werden: CompareStringContent, IgnoreIrrelevantLinks, AnswerNo, NeverRestoreund SameRegContent.

Syntax:

<exclude filter="ScriptInvocation">
</exclude>
Einstellung Erforderlich? Wert
filter Nein
(Standard = Nein)
Ein Skript gefolgt von einer beliebigen Anzahl von Zeichenfolgenargumenten, die durch ein Komma getrennt und in Klammern eingeschlossen sind. Beispiel: MyScripts.AScript ("Arg1","Arg2").

Das Skript wird für jedes Objekt aufgerufen, das von den Objektsätzen in der Includeregel aufgezählt wird. Das Filterskript gibt einen booleschen Wert zurück. Wenn der Rückgabewert TRUE ist, wird das Objekt migriert. Wenn es FALSE ist, wird es nicht migriert.

Beispiel: Aus der MigUser.xml Datei:

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

<excludeAttributes>

Das <excludeAttributes-Element> kann verwendet werden, um zu bestimmen, welche Einem Objekt zugeordneten Parameter nicht migriert werden. Wenn konflikte zwischen den <includeAttributes> - und <excludeAttributes-Elementen> bestehen, bestimmt das spezifischste Muster die Muster, die nicht migriert werden. Wenn ein Objekt nicht über ein <includeAttributes-> oder <excludeAttributes-Element> verfügt, werden alle zugehörigen Parameter migriert.

  • Anzahl der Vorkommen: Unbegrenzt

  • Übergeordnete Elemente:<Regeln>

  • Untergeordnete Elemente:<objectSet>

Syntax:

<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">
</excludeAttributes>
Einstellung Erforderlich? Wert
Attribute Ja Gibt die auszuschließenden Attribute an. Es können entweder eine der folgenden Oder beide angegeben werden. Wenn Beides angegeben wird, müssen sie durch Anführungszeichen getrennt werden. Beispiel "Security","TimeFields":
  • Sicherheit kann besitzer, gruppe, DACL oder SACL sein.
  • TimeFields kann eines von "CreationTime", "LastAccessTime" und "LastWrittenTime" sein.

Beispiel:

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

<Erweiterungen>

Das <Extensions-Element> ist ein Container für ein oder <mehrere Erweiterungselemente> .

  • Anzahl der Vorkommen: 0 (null) oder 1

  • Übergeordnete Elemente:<Komponente>

  • Erforderliche untergeordnete Elemente:<erweiterung>

Syntax:

<extensions>
</extensions>

<Erweiterung>

Das <Erweiterungselement> kann verwendet werden, um Dokumente einer bestimmten Erweiterung anzugeben.

  • Anzahl der Vorkommen: unbegrenzt

  • Übergeordnete Elemente:<Erweiterungen>

  • Untergeordnete Elemente: keine

Syntax:

<extension>FilenameExtension</extension>
Einstellung Erforderlich? Wert
FilenameExtension Ja Eine Dateinamenerweiterung.

Wenn Sie beispielsweise alle *.doc-Dateien vom Quellcomputer migrieren möchten, geben Sie den folgenden Code unter dem <Komponentenelement> an:

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

ist identisch mit der Angabe des folgenden Codes unter dem <rules-Element> :

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

Ein weiteres Beispiel für die Verwendung des Erweiterungselements <> finden Sie im Beispiel für <excludeAttributes>.

<externalProcess>

Das <externalProcess-Element> kann verwendet werden, um während des Migrationsprozesses eine Befehlszeile auszuführen. Beispielsweise muss ein Befehl ausgeführt werden, nachdem der LoadState-Prozess abgeschlossen wurde.

  • Anzahl der Vorkommen: Unbegrenzt

  • Übergeordnete Elemente:<Regeln>

  • Erforderliche untergeordnete Elemente:<commandLine>

Syntax:

<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</externalProcess>
Einstellung Erforderlich? Wert
wann Ja Gibt an, wann die Befehlszeile ausgeführt werden soll. Dieser Wert kann einer der folgenden Werte sein:
  • Vor dem Starten des Scanvorgangs überprüfen.
  • Überprüfung erfolgreich , nachdem der Überprüfungsvorgang erfolgreich abgeschlossen wurde.
  • nach Abschluss des Überprüfungsvorgangs, unabhängig davon, ob er erfolgreich war oder nicht.
  • pre-apply before the apply process beginnt.
  • apply-success , nachdem der Anwendungsprozess erfolgreich abgeschlossen wurde.
  • post-apply , nachdem der Anwendungsprozess abgeschlossen wurde, unabhängig davon, ob er erfolgreich war oder nicht.

Ein Beispiel für die Verwendung des <externalProcess-Elements> finden Sie im Beispiel für <excludeAttributes>.

<icon>

Dieses Element ist ein internes USMT-Element. Verwenden Sie dieses Element nicht.

<include>

Das <include-Element> bestimmt, was migriert werden soll, es sei denn, es gibt eine spezifischere <Ausschlussregel> . Ein Skript kann als spezifischer angegeben werden, um die Definition zu erweitern, was gesammelt werden muss. Für jedes <include-Element> können mehrere <objectSet-Elemente> vorhanden sein.

  • Anzahl der Vorkommen: Unbegrenzt

  • Übergeordnete Elemente:<Regeln>

  • Erforderliches untergeordnetes Element:<objectSet>

  • Hilfsfunktionen: Die folgenden <Includefilterfunktionen> können mit diesem Element verwendet werden: CompareStringContent, IgnoreIrrelevantLinks, AnswerNound NeverRestore.

Syntax:

<include filter="ScriptInvocation">
</include>
Einstellung Erforderlich? Wert
filter Nein.
Wenn dieser Parameter nicht angegeben wird, werden alle Muster im untergeordneten <objectSet-Element> verarbeitet.
Ein Skript gefolgt von einer beliebigen Anzahl von Zeichenfolgenargumenten, die durch ein Komma getrennt und in Klammern eingeschlossen sind. Beispiel: MyScripts.AScript ("Arg1","Arg2").
Das Skript wird für jedes Objekt aufgerufen, das von den Objektsätzen in der <Includeregel> aufgezählt wird. Das Filterskript gibt einen booleschen Wert zurück. Wenn der Rückgabewert TRUE ist, wird das Objekt migriert. Wenn es FALSE ist, wird es nicht migriert.

Das folgende Beispiel stammt aus der MigUser.xml Datei:

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

<Filterfunktionen ein-> und <ausschließen>

Die folgenden Funktionen geben einen booleschen Wert zurück. Sie können verwendet werden, um bestimmte Objekte basierend darauf zu migrieren, wenn bestimmte Bedingungen erfüllt sind.

  • AnswerNo

    Dieser Filter gibt immer FALSE zurück.

    Syntax: AnswerNo ()

  • CompareStringContent

    Syntax: CompareStringContent("StringContent","CompareType")

    Einstellung Erforderlich? Wert
    StringContent Ja Die zu überprüfende Zeichenfolge.
    CompareType Ja Eine Zeichenfolge. Verwenden Sie einen der folgenden Werte:
    • Gleich (Groß-/Kleinschreibung wird nicht beachtet). Die Funktion gibt TRUE zurück, wenn die Zeichenfolgendarstellung des aktuellen Objekts, das von der Migrations-Engine verarbeitet wird, mit identisch StringContentist.
    • NULLoder ein beliebiger anderer Wert. Die Funktion gibt TRUE zurück, wenn die Zeichenfolgendarstellung des aktuellen Objekts, das von der Migrations-Engine verarbeitet wird, nicht mit übereinstimmt StringContent.
  • IgnoreIrrelevantLinks

    Dieser Filter überprüft die .lnk Dateien, die auf ein Objekt verweisen, das auf dem Zielcomputer ungültig ist. Die Überprüfung erfolgt auf dem Zielcomputer, sodass alle .lnk Dateien während scanState im Speicher gespeichert werden. Anschließend werden sie ausgecheckt, wenn das LoadState-Tool ausgeführt wird.

    Syntax: IgnoreIrrelevantLinks ()

    Zum Beispiel:

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

    Diese Funktion kann verwendet werden, um die angegebenen Objekte vom Quellcomputer zu erfassen, aber dann nicht zum Zielcomputer zu migrieren. Wenn sie mit dem ScanState-Tool ausgeführt wird, wird diese Funktion als TRUE ausgewertet. Wenn sie mit dem LoadState-Tool ausgeführt wird, wird diese Funktion zu FALSE ausgewertet. Diese Funktion kann verwendet werden, um den Wert eines Objekts auf dem Zielcomputer zu überprüfen, aber es ist nicht beabsichtigt, das Objekt zum Ziel zu migrieren.

    Syntax: NeverRestore()

    Im folgenden Beispiel ist HKCU\Control Panel\International [Gebietsschema] im Speicher enthalten, aber es wird nicht zum Zielcomputer migriert:

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

<includeAttributes>

Das <includeAttributes-Element> kann verwendet werden, um zu bestimmen, ob bestimmte Einem Objekt zugeordnete Parameter zusammen mit dem Objekt selbst migriert werden. Wenn konflikte zwischen den <includeAttributes> - und <excludeAttributes-Elementen> bestehen, bestimmt das spezifischste Muster, welche Parameter migriert werden. Wenn ein Objekt nicht über ein <includeAttributes-> oder <excludeAttributes-Element> verfügt, werden alle zugehörigen Parameter migriert.

  • Anzahl der Vorkommen: unbegrenzt

  • Übergeordnete Elemente:<Regeln>

  • Untergeordnete Elemente:<objectSet>

Syntax:

<includeAttributes attributes="Security|TimeFields|Security,TimeFields">
</includeAttributes>
Einstellung Erforderlich? Wert
Attribute Ja Gibt die Attribute an, die in ein migriertes Objekt eingeschlossen werden sollen. Es können entweder eine der folgenden Oder beide angegeben werden. Wenn Beides angegeben wird, müssen sie durch Anführungszeichen getrennt werden. Beispiel "Security","TimeFields":
  • Sicherheit kann einer der folgenden Werte sein:
    • Besitzer: Der Besitzer des Objekts (SID).
    • Gruppe: Die primäre Gruppe für das Objekt (SID).
    • DACL (Discretionary Access Control List): Eine Zugriffssteuerungsliste, die vom Besitzer eines Objekts gesteuert wird und angibt, welchen Zugriff bestimmte Benutzer oder Gruppen auf das Objekt haben können.
    • SACL (Systemzugriffssteuerungsliste): Eine Zugriffssteuerungsliste, die die Generierung von Überwachungsmeldungen für Versuche steuert, auf ein sicherungsfähiges Objekt zuzugreifen. Die Möglichkeit, die SACL eines Objekts abzurufen oder festzulegen, wird durch eine Berechtigung gesteuert, die normalerweise nur von Systemadministratoren gehalten wird.
  • TimeFields kann einer der folgenden Werte sein:
    • CreationTime: Gibt an, wann die Datei oder das Verzeichnis erstellt wurde.
    • LastAccessTime: Gibt an, wann die Datei zuletzt aus gelesen, in diese geschrieben oder für ausführbare Dateien ausgeführt wird.
    • LastWrittenTime: Gibt an, wann die Datei zuletzt in geschrieben, abgeschnitten oder überschrieben wird.

Ein Beispiel für die Verwendung des <includeAttributes-Elements> finden Sie im Beispiel für <excludeAttributes>.

<Bibliothek>

Dieses Element ist ein internes USMT-Element. Verwenden Sie dieses Element nicht.

<Ort>

Das <location-Element> definiert die Position des <Objektelements> .

  • Anzahl der Vorkommen: einmal für jedes <Objekt>

  • Übergeordnete Elemente:<Objekt>

  • Untergeordnete Elemente:<script>

Syntax:

<location type="typeID">ObjectLocation</location>
Einstellung Erforderlich? Wert
Typ Ja typeID kann "Registry" oder "File" sein.
ObjectLocation Ja Die Position des Objekts.

Das folgende Beispiel stammt aus der MigApp.xml Datei:

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

Das <locationModify-Element> kann verwendet werden, um die Position und den Namen eines Objekts zu ändern, bevor das Objekt zum Zielcomputer migriert wird. Das <locationModify-Element> wird nur verarbeitet, wenn das LoadState-Tool auf dem Zielcomputer ausgeführt wird. Anders ausgedrückt: Dieses Element wird vom ScanState-Tool ignoriert. Das <locationModify-Element> erstellt den entsprechenden Ordner auf dem Zielcomputer, sofern er noch nicht vorhanden ist.

Anzahl der Vorkommen: Unbegrenzt

Syntax:

<locationModify script="ScriptInvocation">
</locationModify>
Einstellung Erforderlich? Wert
Skript Ja Ein Skript gefolgt von einer beliebigen Anzahl von Zeichenfolgenargumenten, die durch ein Komma getrennt und in Klammern eingeschlossen sind. Beispiel: MyScripts.AScript ("Arg1","Arg2").

Das Skript wird für jedes Objekt aufgerufen, das von den Objektsätzen in der Includeregel aufgezählt wird. Das Filterskript gibt einen booleschen Wert zurück. Wenn der Rückgabewert TRUE ist, wird das Objekt migriert. Wenn es FALSE ist, wird es nicht migriert.

Das folgende Beispiel stammt aus der MigApp.xml Datei:

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

<locationModify-Funktionen>

Die folgenden Funktionen ändern die Position von Objekten, während sie migriert werden, wenn das <locationModify-Element> verwendet wird. Diese Funktionen werden für jedes Objekt aufgerufen, das das übergeordnete <objectSet-Element> aufzählt. Das <locationModify-Element> erstellt den entsprechenden Ordner auf dem Zielcomputer, sofern er noch nicht vorhanden ist.

  • ExactMove

    Die ExactMove-Funktion verschiebt alle Objekte, die vom übergeordneten <objectSet-Element> abgeglichen werden, in das angegebene ObjectEncodedLocation-Objekt. Diese Funktion kann verwendet werden, um eine einzelne Datei an einen anderen Speicherort auf dem Zielcomputer zu verschieben. Wenn der Zielspeicherort ein Knoten ist, werden alle übereinstimmenden Quellobjekte ohne Unterverzeichnisse in den Knoten geschrieben. Wenn der Zielspeicherort ein Blatt ist, migriert die Migrations-Engine alle übereinstimmenden Quellobjekte an denselben Speicherort. Wenn eine Kollision auftritt, gelten die normalen Kollisionsalgorithmen.

    Syntax: ExactMove(ObjectEncodedLocation)

    Einstellung Erforderlich? Wert
    ObjectEncodedLocation Ja Der Zielspeicherort für alle Quellobjekte.

    Zum Beispiel:

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

    Die Move-Funktion verschiebt Objekte an eine andere Position auf dem Zielcomputer. Darüber hinaus erstellt diese Funktion Unterverzeichnisse, die über der längsten CSIDL im Quellobjektnamen lagen.

    Syntax: Move(DestinationRoot)

    Einstellung Erforderlich? Wert
    DestinationRoot Ja Der Speicherort, an den die Quellobjekte verschoben werden. Bei Bedarf erstellt diese Funktion alle Unterverzeichnisse, die über der längsten CSIDL im Quellobjektnamen lagen.
  • RelativeMove

    Die RelativeMove-Funktion kann zum Sammeln und Verschieben von Daten verwendet werden. Umgebungsvariablen können in Quell- und Zielstämmen verwendet werden, aber sie können auf den Quell- und Zielcomputern unterschiedlich definiert werden.

    Syntax: RelativeMove(SourceRoot,DestinationRoot)

    Einstellung Erforderlich? Wert
    SourceRoot Ja Die Position, von der die Objekte verschoben werden. Alle Quellobjekte, die vom übergeordneten <objectSet-Element> aufgezählt werden und sich nicht an diesem Speicherort befinden, werden nicht verschoben.
    DestinationRoot Ja Der Speicherort, an den die Quellobjekte auf dem Zielcomputer verschoben werden. Bei Bedarf erstellt diese Funktion alle Unterverzeichnisse, die sich oberhalb von SourceRoot befanden.

Zum Beispiel:

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

Dieses Element ist ein internes USMT-Element. Verwenden Sie dieses Element nicht.

<Hersteller>

Das <Manufacturer-Element> definiert den Hersteller für die Komponente, wirkt sich jedoch nicht auf die Migration aus.

  • Anzahl der Vorkommen: 0 (null) oder 1

  • Übergeordnete Elemente:<Komponente>

  • Untergeordnete Elemente: keine

Syntax:

<manufacturer>Name</manufacturer>
Einstellung Erforderlich? Wert
Name Ja Der Name des Herstellers für die Komponente.

<verschmelzen>

Das <merge-Element> bestimmt, was geschieht, wenn ein Konflikt auftritt. Ein Konflikt tritt auf, wenn ein migriertes Objekt bereits auf dem Zielcomputer vorhanden ist. Wenn dieses Element nicht angegeben wird, ist das Standardverhalten für die Registrierung das Überschreiben des Zielobjekts durch das Quellobjekt. Das Standardverhalten für Dateien besteht darin, dass die Quelldatei in umbenannt OriginalFileName(1).OriginalExtensionwird. Dieses Element gibt nur an, was bei einem Konflikt zu tun ist. Es enthält keine -Objekte. Daher müssen für die zu migrierenden <Objekte Includeregeln> zusammen mit dem <Mergeelement> angegeben werden. Wenn ein Objekt verarbeitet und ein Konflikt erkannt wird, wählt USMT die spezifischste Mergeregel aus. Anschließend wird die Regel angewendet, um den Konflikt zu lösen. Wenn z. B. eine <Mergeregel>C:\* [*] auf <sourcePriority> und eine <Mergeregel>C:\subfolder\* [*] auf <destinationPriority> festgelegt ist, verwendet USMT die <destinationPriority-Regel> , da sie spezifischer ist.

Ein Beispiel für dieses Element finden Sie unter Konflikte und Rangfolge.

  • Anzahl der Vorkommen: Unbegrenzt

  • Übergeordnete Elemente:<Regeln>

  • Erforderliches untergeordnetes Element:<objectSet>

  • Hilfsfunktionen: Die folgenden <Mergefunktionen> können mit diesem Element verwendet werden: SourcePriority, DestinationPriority, FindFilePlaceByPattern, LeafPattern, NewestVersion, HigherValue()und LowerValue().

Syntax:

<merge script="ScriptInvocation">
</merge>
Einstellung Erforderlich? Wert
Skript Ja Ein Skript gefolgt von einer beliebigen Anzahl von Zeichenfolgenargumenten, die durch ein Komma getrennt und in Klammern eingeschlossen sind. Beispiel: MyScripts.AScript ("Arg1","Arg2").

Das Skript wird für jedes Objekt aufgerufen, das von den Objektsätzen in der <Includeregel> aufgezählt wird. Das Filterskript gibt einen booleschen Wert zurück. Wenn der Rückgabewert TRUE ist, wird das Objekt migriert. Wenn es FALSE ist, wird es nicht migriert.

Das folgende Beispiel stammt aus der MigUser.xml Datei:

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

<Mergefunktionen>

Diese Funktionen steuern, wie Kollisionen gelöst werden.

  • DestinationPriority

    Gibt an, dass das Objekt, das sich auf dem Zielcomputer befindet, beibehalten und nicht vom Quellcomputer migriert werden soll.

    Zum Beispiel:

    <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

    Die FindFilePlaceByPattern-Funktion speichert Dateien mit einem inkrementellen Zähler, wenn ein Konflikt auftritt. Es handelt sich um eine Zeichenfolge, die eines jedes Konstrukts enthält: <F>, <E>, <N> in beliebiger Reihenfolge.

    Syntax: FindFilePlaceByPattern(FilePattern)

    Einstellung Erforderlich? Wert
    FilePattern Ja
    • <F> wird durch den ursprünglichen Dateinamen ersetzt.
    • <N> wird durch einen inkrementellen Zähler ersetzt, bis keine Kollision mit den Objekten auf dem Zielcomputer vorliegt.
    • <E> wird durch die ursprüngliche Dateinamenerweiterung ersetzt.

    Ändert z. B <F> (<N>).<E> . die Quelldatei MyDocument.doc auf dem Zielcomputer in MyDocument (1).doc .
  • NewestVersion

    Die NewestVersion-Funktion löst Konflikte auf dem Zielcomputer basierend auf der Version der Datei.

    Syntax: NewestVersion(VersionTag)

    Einstellung Erforderlich? Wert
    VersionTag Ja Das versionsfeld, das aktiviert ist. Dieses Feld kann oder ProductVersionseinFileVersion. Die Datei mit der höchsten VersionTag-Version bestimmt, welche Konflikte basierend auf der Version der Datei gelöst werden. Wenn Myfile.txt z. B. FileVersion 1 enthält und dieselbe Datei auf dem Zielcomputer FileVersion 2 enthält, bleibt die Datei am Ziel erhalten.
  • HigherValue()

    Diese Funktion kann zum Zusammenführen von Registrierungswerten verwendet werden. Die Registrierungswerte werden als numerische Werte ausgewertet, und der Wert mit dem höheren Wert bestimmt, welche Registrierungswerte zusammengeführt werden.

  • LowerValue()

    Diese Funktion kann zum Zusammenführen von Registrierungswerten verwendet werden. Die Registrierungswerte werden als numerische Werte ausgewertet, und der Wert mit dem niedrigeren Wert bestimmt, welche Registrierungswerte zusammengeführt werden.

  • SourcePriority

    Gibt an, dass das -Objekt vom Quellcomputer migriert und das Objekt auf dem Zielcomputer gelöscht werden soll.

    Zum Beispiel:

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

<Migration>

Das <Migrationselement> ist das einzelne Stammelement einer Migrationsdatei.xml und ist erforderlich. Jede .xml Datei muss eine eindeutige Migrations-URL-ID aufweisen. Die URL-ID jeder Datei, die in der Befehlszeile angegeben wird, muss eindeutig sein. Die urlids müssen eindeutig sein, da USMT die urlid verwendet, um die Komponenten in der Datei zu definieren.

Syntax:

<migration urlid="*UrlID/*Name">
</migration>
Einstellung Erforderlich? Wert
urlid Ja UrlID ist ein Zeichenfolgenbezeichner, der diese .xml Datei eindeutig identifiziert. Dieser Parameter muss ein Name ohne Doppelpunkt sein, wie in der XML-Namespaces-Spezifikation definiert. Jede Migration .xml Datei muss über eine eindeutige URL-ID verfügen. Wenn zwei Migrations -.xml-Dateien dieselbe urlid aufweisen, wird die zweite .xml Datei, die in der Befehlszeile angegeben ist, nicht verarbeitet. Weitere Informationen zu XML-Namespaces finden Sie unter Verwenden von XML-Namespaces.
Name Nein Obwohl nicht erforderlich, empfiehlt es sich, den Namen der .xml-Datei zu verwenden.

Das folgende Beispiel stammt aus der MigApp.xml Datei:

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

MigXMLHelper.FileProperties

Diese Filterhilfsfunktion kann verwendet werden, um die Migration von Dateien nach Dateigröße und Datumsattributen zu filtern.

Hilfsfunktion MigXMLHelper.FileProperties (Property, Operator, valueToCompare)
Eigenschaft filesize, dateCreated, dateModified, dateAccessed
Operator Range, neq, lte, lt, eq, gte, gte
valueToCompare Der Wert, der verglichen wird. Zum Beispiel:
Datum: "15.05.2023-2020/05/17", "2023/05/15"
Größe: Eine Zahl mit B, KB, MB oder GB am Ende. "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>

Das <namedElements-Element> kann verwendet werden, um benannte Elemente zu definieren. Diese Elemente können in jeder Komponente in der .xml-Datei verwendet werden. Ein Beispiel für die Verwendung dieses Elements finden Sie in der MigApp.xml Datei.

Syntax:

<namedElements>
</namedElements>

Ein Beispiel für dieses Element finden Sie in der MigApp.xml Datei.

<Objekt>

Das <Objektelement> stellt eine Datei oder einen Registrierungsschlüssel dar.

Syntax:

<object>
</object>

Das folgende Beispiel stammt aus der MigApp.xml Datei:

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

Das <objectSet-Element> enthält eine Liste von Objektmustern, z. B. Dateipfade, Registrierungsspeicherorte usw. Alle untergeordneten< Bedingungselemente> werden zuerst ausgewertet. Wenn alle untergeordneten< Bedingungselemente>FALSE zurückgeben, wird das <objectSet-Element> zu einem leeren Satz ausgewertet. Für jedes übergeordnete Element können nur mehrere <objectSet-Elemente> vorhanden sein.

Syntax:

<objectSet>
</objectSet>

Das folgende Beispiel stammt aus der MigUser.xml Datei:

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

Dieses Element ist ein internes USMT-Element. Verwenden Sie dieses Element nicht.

<Pfade>

Dieses Element ist ein internes USMT-Element. Verwenden Sie dieses Element nicht.

<Muster>

Dieses Element kann verwendet werden, um mehrere Objekte anzugeben. Für jedes <objectSet-Element> können mehrere <Musterelemente> verwendet werden, die kombiniert werden. Wenn Sie Dateien angeben, empfiehlt Microsoft stattdessen die Verwendung GenerateDrivePatterns mit <Skript> . GenerateDrivePatterns ist im Grunde identisch mit einer <Musterregel> , ohne angabe des Laufwerkbuchstabens. Die folgenden beiden Codezeilen sind z. B. ähnlich:

<pattern type="File">C:\Folder\* [Sample.doc]</pattern>
<script>MigXmlHelper.GenerateDrivePatterns("\Folder\* [Sample.doc]","Fixed"</script>
  • Anzahl der Vorkommen: Unbegrenzt

  • Übergeordnete Elemente:<objectSet>

  • Untergeordnete Elemente: Keine, aber Path [Object] muss gültig sein.

Syntax:

<pattern type="typeID">Path [object]</pattern>
Einstellung Erforderlich? Wert
Typ Ja typeID kann Registrierung, Datei oder Ini sein. Wenn typeId auf Ini festgelegt ist, ist ein Leerzeichen zwischen Path und Objekt nicht zulässig. Beispielsweise ist das folgende Format korrekt, wenn type="Ini":
<pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[Keeponscreen]</pattern>
Pfad [Objekt] Ja Ein gültiges Registrierungs- oder Dateipfadmuster, gefolgt von mindestens einem Leerzeichen, gefolgt von Klammern [], die das zu migrierende Objekt enthalten.
  • Der Pfad kann das Platzhalterzeichen (*) oder eine Erkannte Umgebungsvariable enthalten. Das Fragezeichen kann nicht als Wildcardzeichen verwendet werden. HKCUund HKLM können verwendet werden, um auf bzwHKEY_LOCAL_MACHINE. zu HKEY_CURRENT_USER verweisen.
  • Das Objekt kann das Platzhalterzeichen (*) enthalten. Das Fragezeichen kann jedoch nicht als Wildcardzeichen verwendet werden. Zum Beispiel:
    C:\Folder\ [*] Listet alle Dateien in C:\Folder , aber keine Unterordner von C:\Folderauf.
    C:\Folder* [*] Listet alle Dateien und Unterordner von auf C:\Folder.
    C:\Folder\ [*.mp3] Listet alle .mp3 Dateien in C:\Folderauf.
    C:\Folder\ [Sample.doc] listet nur die Datei auf, die Sample.doc sich in C:\Folder befindet.
    Hinweis
    Beim Migrieren einer Datei mit eckigen Klammern ([ oder ]) im Dateinamen muss ein Karottenzeichen (^) direkt vor der Klammer eingefügt werden, damit es gültig ist. Wenn beispielsweise eine Datei mit dem Namen "file].txt" vorhanden ist, <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> muss anstelle von <pattern type="File">c:\documents\mydocs [file].txt]</pattern>angegeben werden.

Zum Beispiel:

  • So migrieren Sie einen einzelnen Registrierungsschlüssel:

    <pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
    
  • So migrieren Sie den C:\EngineeringDrafts Ordner und alle Unterordner vom Laufwerk C:

    <pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
    
  • So migrieren Sie nur den C:\EngineeringDrafts Ordner mit Ausnahme aller Unterordner vom Laufwerk C:

    Umleiten von Dateien und Einstellungen

  • So migrieren Sie die Sample.doc Datei von C:\EngineeringDrafts:

    <pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
    
  • Verwenden Sie das Muster wie folgt, um die Sample.doc Datei von dem Speicherort auf Laufwerk C: zu migrieren. Wenn mehrere Dateien mit demselben Namen auf Laufwerk C: vorhanden sind, werden alle diese Dateien migriert.

    <pattern type="File"> C:\* [Sample.doc] </pattern>
    
  • Weitere Beispiele für die Verwendung dieses Elements finden Sie unter Ausschließen von Dateien und Einstellungen, Umleiten von Dateien und Einstellungen, Einschließen von Dateien und Einstellungen und Benutzerdefinierte XML-Beispiele.

<Verarbeitung>

Dieses Element kann verwendet werden, um ein Skript während eines bestimmten Punkts innerhalb des Migrationsprozesses auszuführen. Rückgabewerte werden von den angegebenen Skripts nicht erwartet. Wenn Rückgabewerte vorhanden sind, werden sie ignoriert.

  • Anzahl der Vorkommen: unbegrenzt

  • Übergeordnete Elemente:<Regeln>

  • Erforderliches untergeordnetes Element:<script>

Syntax:

<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</processing>
Einstellung Erforderlich? Wert
wann Ja Gibt an, wann das Skript ausgeführt werden soll. Dieser Wert kann einer der folgenden Werte sein:
  • Pre-Scan bedeutet, bevor der Scanvorgang beginnt.
  • Scan-Erfolg bedeutet, dass der Scanvorgang erfolgreich abgeschlossen wurde.
  • Post-Scan bedeutet, dass nach Abschluss des Überprüfungsvorgangs unabhängig davon, ob er erfolgreich war oder nicht.
  • Pre-Apply bedeutet, bevor der Anwendungsprozess beginnt.
  • apply-success bedeutet, dass der Anwendungsprozess erfolgreich abgeschlossen wurde.
  • post-apply bedeutet, dass der Anwendungsprozess abgeschlossen ist, unabhängig davon, ob er erfolgreich war oder nicht.

<Plug-In>

Dieses Element ist ein internes USMT-Element. Verwenden Sie dieses Element nicht.

<Rolle>

Das <Role-Element> ist in einer benutzerdefinierten .xml-Datei erforderlich. Wenn das <Rollenelement> angegeben wird, kann eine konkrete Komponente erstellt werden. Die Komponente wird durch die Parameter definiert, die <auf Komponentenebene> und mit der hier angegebenen Rolle angegeben sind.

Syntax:

<role role="Container|Binaries|Settings|Data">
</role>
Einstellung Erforderlich? Wert
Rolle Ja Definiert die Rolle für die Komponente. Die Rolle kann eine der folgenden Sein:
  • Container
  • Binärdateien
  • Einstellungen
  • Daten
Eines der folgenden Elemente kann angegeben werden:
  1. Bis zu drei <Rollenelemente> innerhalb einer <Komponente> : ein Rollenelement "Binaries", ein Rollenelement "Settings" und ein "Data"-Rollenelement. Diese Parameter ändern das Migrationsverhalten nicht. Ihr einziger Zweck besteht darin, die zu migrierenden Einstellungen zu kategorisieren. Diese <Rollenelemente> können geschachtelt werden, aber jedes geschachtelte Element muss denselben Rollenparameter aufweisen.
  2. Ein "Container" <-Rollenelement> innerhalb eines <Komponentenelements> . In diesem Fall können keine untergeordneten <Regelelemente> angegeben werden, nur andere <Komponentenelemente> . Und jedes untergeordnete <Komponentenelement> muss denselben Typ wie das übergeordnete <Komponentenelement> aufweisen. Zum Beispiel:
              
              
              <component context="UserAndSystem" type="Application">
<displayName _locID="migapp.msoffice2016">Microsoft Office 2016</displayName>
<environment name="GlobalEnv" />
<role role="Container">
<detection name="AnyOffice2016Version" />
<detection name="Word2016" />
<!--
Allgemeine Office 2016-Einstellungen
-->
<component context="UserAndSystem" type="Application">

Das folgende Beispiel stammt aus der MigUser.xml Datei. Weitere Beispiele finden Sie in der MigApp.xml Datei:

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

<Regeln>

Das <rules-Element> ist in einer benutzerdefinierten .xml-Datei erforderlich. Dieses Element enthält Regeln, die während der Migration ausgeführt werden, wenn das übergeordnete <Komponentenelement> ausgewählt ist, es sei denn, das untergeordnete <Bedingungselement> wird, falls vorhanden, zu FALSE ausgewertet. Für jedes <Regelelement> können mehrere untergeordnete <Regelelemente> vorhanden sein.

Syntax:

<rules name="ID" context="User|System|UserAndSystem">
</rules>
Einstellung Erforderlich? Wert
name Ja, wenn <regeln> ein untergeordnetes Element von <namedElements> sind
Nein, wenn <Regeln> einem anderen Element untergeordnet sind
Wenn die ID angegeben wird, werden keine untergeordneten Elemente verarbeitet. Stattdessen werden alle anderen <Regelelemente> mit demselben Namen verarbeitet, die in <namedElements> deklariert werden.
Zusammenhang Nein
(standard = UserAndSystem)
Definiert den Bereich dieses Parameters – ob diese Komponente im Kontext des jeweiligen Benutzers, über das gesamte Betriebssystem oder beides verarbeitet werden soll.
Der größtmögliche Bereich wird durch das Komponentenelement festgelegt. Wenn z. B. ein <Komponentenelement> den Kontext User aufweist und ein <Regelelement> den Kontext UserAndSystem aufweist, würde das <Regelelement> so handeln, als hätte es den Kontext User. Wenn <Regeln> den Kontext System hätten, würde dies so wirken, als ob <Regeln> nicht vorhanden wären.
  • Benutzer: Wertet die Variablen für jeden Benutzer aus.
  • System: Wertet die Variablen nur einmal für das System aus.
  • UserAndSystem: Wertet die Variablen für das gesamte Betriebssystem und jeden Benutzer aus.

Das folgende Beispiel stammt aus der MigUser.xml Datei:

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

<Skript>

Der Rückgabewert, der für <das Skript> erforderlich ist, hängt vom übergeordneten Element ab.

Anzahl der Vorkommen: Einmal für <Variable>, unbegrenzt für <objectSet> und <Processing>

Übergeordnete Elemente:<objectSet>, <Variable>, <Verarbeitung>

Untergeordnete Elemente: keine

Syntax- und Hilfsfunktionen:

  • Allgemeine Syntax: <script>ScriptWithArguments</script>

  • GetStringContent kann verwendet werden, wenn <sich das Skript> innerhalb einer <Variablen> befindet.

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

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

  • GenerateUserPatterns kann verwendet werden, wenn <sich das Skript> in <objectSet> befindet.

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

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

  • GenerateDrivePatterns kann verwendet werden, wenn <sich das Skript> in <objectSet> befindet.

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

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

  • Die einfach ausgeführten Skripts können mit <Skriptelementen> verwendet werden, die sich in <Verarbeitungselementen> befinden: AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM.

    Syntax: <script>MigXmlHelper.ExecutingScript</script>

    Beispiel: <script>MigXmlHelper.KillExplorer()</script>

Einstellung Erforderlich? Wert
ScriptWithArguments Ja Ein Skript gefolgt von einer beliebigen Anzahl von Zeichenfolgenargumenten, die durch ein Komma getrennt und in Klammern eingeschlossen sind. Beispiel: MyScripts.AScript ("Arg1","Arg2").
Das Skript wird für jedes Objekt aufgerufen, das von den Objektsätzen in der <Includeregel> aufgezählt wird. Das Filterskript gibt einen booleschen Wert zurück. Wenn der Rückgabewert TRUE ist, wird das Objekt migriert. Wenn es FALSE ist, wird es nicht migriert.
Der Rückgabewert, der für <das Skript> erforderlich ist, hängt vom übergeordneten Element ab.
  • Bei Verwendung innerhalb <einer Variablen> muss der Rückgabewert eine Zeichenfolge sein.
  • Bei Verwendung innerhalb von <objectSet> muss der Rückgabewert ein zweidimensionales Array von Zeichenfolgen sein.
  • Bei Verwendung innerhalb des <Speicherorts> muss der Rückgabewert ein gültiger Speicherort sein, der am typ-Attribut von <location> ausgerichtet ist. Beispiel: Wenn <location type="File">, muss das untergeordnete Skriptelement, sofern angegeben, ein gültiger Dateispeicherort sein.
    Hinweis
    Wenn Sie eine Datei migrieren, die eine Klammer ([ oder ]) im Dateinamen enthält, fügen Sie das Karottenzeichen (^) direkt vor der Klammer ein, damit es gültig ist. Wenn beispielsweise eine Datei mit dem Namen "file].txt" vorhanden ist, geben Sie anstelle von <pattern type="File">c:\documents\mydocs [file].txt]</pattern>an<pattern type="File">c:\documents\mydocs [file^].txt]</pattern>.

Beispiele:

Um die Sample.doc-Datei von einem beliebigen Laufwerk auf dem Quellcomputer zu migrieren, verwenden Sie <das Skript> wie folgt. Wenn mehrere Dateien mit demselben Namen vorhanden sind, werden alle dateien migriert.

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

Weitere Beispiele für die Verwendung dieses Elements finden Sie unter Ausschließen von Dateien und Einstellungen, Umleiten von Dateien und Einstellungen und Benutzerdefinierte XML-Beispiele.

<Skriptfunktionen>

Die folgenden Funktionen können mit dem <script-Element> verwendet werden:

Zeichenfolgen- und Mustergenerierungsfunktionen

Diese Funktionen geben entweder eine Zeichenfolge oder ein Muster zurück.

  • GetStringContent

    GetStringContent kann mit <Skriptelementen> verwendet werden, die sich in <variablen> Elementen befinden. Wenn möglich, gibt diese Funktion die Zeichenfolgendarstellung des angegebenen Objekts zurück. Andernfalls wird NULL zurückgegeben. Bei Dateiobjekten gibt diese Funktion immer NULL zurück.

    Syntax: GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")

    Einstellung Erforderlich? Wert
    ObjectType Ja Der Typ des Objekts. Kann Registrierung oder Ini (für eine .ini-Datei ) sein.
    EncodedLocationPattern Ja
    • Wenn der Objekttyp Registry ist, muss EncodedLocationPattern ein gültiger Registrierungspfad sein. Beispiel: HKLM\SOFTWARE\MyKey[].
    • Wenn der Typ des Objekts Ini ist, muss EncodedLocationPattern das folgende Format aufweisen:
      IniFilePath|SectionName[SettingName]
    ExpandContent Nein (default=TRUE) Kann TRUE oder FALSE sein. False gibt an, dass der angegebene Speicherort nicht erweitert wird, bevor er zurückgegeben wird.

    Zum Beispiel:

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

    Die GenerateDrivePatterns Funktion durchläuft alle verfügbaren Laufwerke und wählt die Laufwerke aus, die dem angeforderten Laufwerkstyp entsprechen. Anschließend werden die ausgewählten Laufwerke mit dem Endteil von PatternSegment verkettet, um ein vollständiges codiertes Dateimuster zu bilden. Wenn PatternSegment beispielsweise ist Path [file.txt] und DriveType ist Fixed, generiert C:\Path [file.txt]die Funktion , und andere Muster, wenn es andere Festplattenlaufwerke als C:gibt. Umgebungsvariablen können mit dieser Funktion nicht angegeben werden. GenerateDrivePatterns kann mit <Skriptelementen> verwendet werden, die sich innerhalb von <objectSet> befinden und sich innerhalb von <include>/<exclude befinden>.

    Syntax: GenerateDrivePatterns("PatternSegment","DriveType")

    Einstellung Erforderlich? Wert
    PatternSegment Ja Das Suffix eines codierten Musters. Der Wert wird mit einer Laufwerksspezifikation wie "c:" verkettet, um ein vollständiges codiertes Dateimuster zu bilden. Beispiel: "* [*.doc]". PatternSegment kann keine Umgebungsvariable sein.
    DriveType Ja Der Laufwerkstyp, für den die Muster generiert werden sollen. Eines der folgenden Elemente kann angegeben werden:
    • Behoben
    • CDROM
    • Abnehmbar
    • Remote

    Ein Beispiel für dieses Element finden Sie in der letzten Komponente in der MigUser.xml Datei.

  • GenerateUserPatterns

    Die GenerateUserPatterns Funktion durchläuft alle Benutzer, die migriert werden, mit Ausnahme des aktuell verarbeiteten Benutzers, wenn <ProcessCurrentUser>FALSE ist, und erweitert das angegebene Muster im Kontext jedes Benutzers. Wenn z. B. Benutzer A, B und C über Profile in C:\Usersverfügen, indem sie aufrufen GenerateUserPattens('File','%userprofile% [*.doc]','TRUE'), generiert die Hilfsfunktion die folgenden drei Muster:

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

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

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

    Syntax: GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")

    Einstellung Erforderlich? Wert
    ObjectType Ja Definiert den Objekttyp. Kann Datei oder Registrierung sein.
    EncodedLocationPattern Ja Das Standortmuster. Umgebungsvariablen sind zulässig.
    ProcessCurrentUser Ja Kann TRUE oder FALSE sein. Gibt an, ob die Muster für den aktuellen Benutzer generiert werden sollen.

Beispiel:

Wenn GenerateUserPattens('File','%userprofile% [*.doc]','FALSE') aufgerufen wird, während USMT Benutzer A verarbeitet, generiert diese Funktion nur Muster für Benutzer B und C. Diese Hilfsfunktion kann verwendet werden, um komplexe Regeln zu erstellen. Wenn Sie beispielsweise alle .doc Dateien vom Quellcomputer migrieren möchten, wenn Benutzer X jedoch nicht migriert wurde, migrieren Sie keine der .doc Dateien aus dem Profil von Benutzer X.

Das folgende Beispiel ist Beispielcode für dieses Szenario. Das erste <Regelelement> migriert alle .doc Dateien auf dem Quellcomputer mit Ausnahme der Dateien in C:\Users. Die zweiten <Regelelemente> migrieren alle .doc Dateien von C:\Users mit Ausnahme der .doc Dateien in den Profilen der anderen Benutzer. Da das zweite <Regelelement> in jedem migrierten Benutzerkontext verarbeitet wird, ist das Endergebnis das gewünschte Verhalten. Das Endergebnis ist das ergebnis, das wir erwartet haben.

<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

Die MigXmlHelper.GenerateDocPatterns Hilfsfunktion ruft die Dokumentsuche auf, um das System auf alle Dateien zu überprüfen, die migriert werden können. Sie kann entweder im System - oder Benutzerkontext aufgerufen werden, um den Fokus auf die Überprüfung zu legen.

Einstellung Erforderlich? Wert
ScanProgramFiles Nein (Standard = FALSE) Kann TRUE oder FALSE sein. Der Parameter ScanProgramFiles bestimmt, ob die Dokumentsuche das Verzeichnis Programme überprüft, um registrierte Dateierweiterungen für bekannte Anwendungen zu erfassen. Wenn sie beispielsweise auf TRUE festgelegt ist, werden .jpg Dateien im Photoshop-Verzeichnis ermittelt und migriert, wenn .jpg eine Dateierweiterung ist, die für Photoshop registriert ist.
IncludePatterns Nein (Standard = TRUE) Kann TRUE oder FALSE sein. TRUE generiert Includemuster und kann unter dem <include-Element> hinzugefügt werden. FALSE generiert Ausschlussmuster und kann unter dem <exclude-Element> hinzugefügt werden.
SystemDrive Nein (Standard = FALSE) Kann TRUE oder FALSE sein. Wenn TRUE, schränkt alle Muster auf das Systemlaufwerk ein.
 <!-- 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>

Einfaches Ausführen von Skripts

Die folgenden Skripts haben keinen Rückgabewert. Die folgenden Fehler können mit <Skriptelementen> verwendet werden, die sich in <Verarbeitungselementen> befinden.

  • AskForLogoff(). Fordert den Benutzer am Ende der Migration auf, sich abzumelden. Zum Beispiel:

    <processing when="apply-success">
      <script>MigXmlHelper.AskForLogoff()</script>
    </processing>
    
  • ConvertToShortFileName(RegistryEncodedLocation). Wenn RegistryEncodedLocation der vollständige Pfad einer vorhandenen Datei ist, konvertiert diese Funktion die Datei in ihren Kurzdateinamen und aktualisiert dann den Registrierungswert.

  • KillExplorer(). Beendet Explorer.exe für den aktuellen Benutzerkontext. Das Beenden Explorer.exe ermöglicht den Zugriff auf bestimmte Schlüssel und Dateien, die geöffnet bleiben, wenn Explorer.exe ausgeführt wird. Zum Beispiel:

    <processing when="pre-apply">
      <script>MigXmlHelper.KillExplorer()</script>
    </processing>
    
  • RegisterFonts(FileEncodedLocation). Registriert die angegebene Schriftart oder alle Schriftarten im angegebenen Verzeichnis. Zum Beispiel:

 <processing when="apply-success">
   <script>MigXmlHelper.RegisterFonts("%CSIDL_COMMON_FONTS%")</script>
 </processing>
  • RemoveEmptyDirectories (DirectoryEncodedPattern). Löscht alle leeren Verzeichnisse, die directoryEncodedPattern auf dem Zielcomputer entsprechen.

  • RestartExplorer(). Startet Explorer.exe am Ende der Migration neu. Zum Beispiel:

    <processing when="post-apply">
      <script>MigXmlHelper.RestartExplorer()</script>
    </processing>
    
  • StartService (ServiceName, OptionalParam1, OptionalParam2,...). Startet den durch ServiceName identifizierten Dienst . ServiceName ist der Unterschlüssel in HKLM\System\CurrentControlSet\Services , der die Daten für den angegebenen Dienst enthält. Die optionalen Parameter werden ggf. an die StartService-API übergeben. Weitere Informationen finden Sie im Artikel StartServiceA-Funktion (winsvc.h).

  • StopService (ServiceName). Beendet den Dienst, der durch ServiceName identifiziert wird. ServiceName ist der Unterschlüssel in HKLM\System\CurrentControlSet\Services , der die Daten für den angegebenen Dienst enthält.

  • SyncSCM(ServiceShortName). Liest den Starttypwert aus der Registrierung (HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) , nachdem der Wert von der Migrations-Engine geändert wurde, und synchronisiert dann Service Control Manager (SCM) mit dem neuen Wert.

<Text>

Das <Textelement> kann verwendet werden, um einen Wert für alle Umgebungsvariablen festzulegen, die sich in einer der Migrationsdateien.xml befinden.

Syntax:

<text>NormalText</text>
Einstellung Wert
NormalText Dieser Text wird als normaler Text interpretiert.

Zum Beispiel:

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

<unconditionalExclude>

Das <bedingungsloseExclude-Element> schließt die angegebenen Dateien und Registrierungswerte unabhängig von den anderen Includeregeln in der Migration .xml Dateien oder in der Config.xml Datei aus. Die hier deklarierten Objekte werden nicht migriert, da dieses Element Vorrang vor allen anderen Regeln hat. Selbst wenn beispielsweise explizite <Includeregeln> zum Einschließen .mp3 von Dateien vorhanden sind, wenn sie mit dieser Option ausgeschlossen werden, werden sie nicht migriert.

Verwenden Sie dieses Element, um alle .mp3 Dateien vom Quellcomputer auszuschließen. C:\UserData Wenn Sie eine sicherung mit einer anderen Methode durchführen, kann der gesamte Ordner von der Migration ausgeschlossen werden. Verwenden Sie dieses Element mit Vorsicht. Wenn eine Anwendung eine ausgeschlossene Datei benötigt, funktioniert die Anwendung auf dem Zielcomputer möglicherweise nicht ordnungsgemäß.

  • Anzahl der Vorkommen: Unbegrenzt.

  • Übergeordnete Elemente:<Regeln>

  • Untergeordnete Elemente:<objectSet>

Syntax:

<unconditionalExclude></unconditionalExclude>

Die folgende .xml Datei schließt alle .mp3 Dateien von der Migration aus. Weitere Beispiele für die Verwendung dieses Elements finden Sie unter Ausschließen von Dateien und Einstellungen.

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

<Variable>

Das <Variablenelement> ist in einem Umgebungselement<> erforderlich. Für jedes <Variablenelement> muss ein <objectSet>-, <Skript-> oder <Textelement> vorhanden sein. Der Inhalt des <Variablenelements> weist der Umgebungsvariablen einen Textwert zu. Dieses Element verfügt über die folgenden drei Optionen:

  1. Wenn das <Variablenelement> ein <Textelement> enthält, ist der Wert des Variablenelements der Wert des <Textelements> .

  2. Wenn das <Variablenelement> ein <Skriptelement> enthält und der Aufruf des Skripts eine Zeichenfolge ungleich NULL erzeugt, ist der Wert des <Variablenelements> das Ergebnis des Skriptaufrufs.

  3. Wenn das <Variable-Element> ein <objectSet-Element> enthält und die Auswertung des <objectSet-Elements> mindestens ein Objektmuster erzeugt, ist der Wert des ersten Objekts, das mit dem resultierenden Objektmuster übereinstimmt, der Wert des Variablenelements.

Syntax:

<variable name="ID" remap=TRUE|FALSE>
</variable>
Einstellung Erforderlich? Wert
name Ja ID ist ein Zeichenfolgenwert, der der Name ist, der verwendet wird, um auf die Umgebungsvariable zu verweisen. Microsoft empfiehlt, dass die ID mit dem Namen der Komponente beginnt, um Namespacekonflikte zu vermeiden. Wenn der Name der Komponente beispielsweise MyComponent lautet und eine Variable gewünscht wird, die dem Installationspfad der Komponente entspricht, MyComponent.InstallPathkann angegeben werden.
Remap Nein, Standardwert = FALSE Gibt an, ob diese Umgebungsvariable als Neuzuordnungsumgebungsvariable ausgewertet werden soll. Objekte, die sich in einem Pfad befinden, der sich unterhalb des Werts dieser Umgebungsvariablen befindet, werden automatisch dorthin verschoben, wo die Umgebungsvariable auf dem Zielcomputer zeigt.

Das folgende Beispiel stammt aus der MigApp.xml Datei:

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

Das <Versionselement> definiert die Version für die Komponente, wirkt sich jedoch nicht auf die Migration aus.

  • Anzahl der Vorkommen: 0 (null) oder 1

  • Übergeordnete Elemente:<Komponente>

  • Untergeordnete Elemente: keine

Syntax:

<version>ComponentVersion</version>
Einstellung Erforderlich? Wert
ComponentVersion Ja Die Version der Komponente, die Muster enthalten kann.

Zum Beispiel:

<version>4.*</version>

<windowsObjects>

Das <windowsObjects-Element> ist nur für die interne USMT-Verwendung vorgesehen. Verwenden Sie dieses Element nicht.

Anhang

Angeben von Speicherorten

  • Angeben von codierten Speicherorten. Die codierte Position, die in allen Hilfsfunktionen verwendet wird, ist eine eindeutige Zeichenfolgendarstellung für den Namen eines Objekts. Die codierte Position besteht aus dem Knotenteil, optional gefolgt von dem Blatt, das in eckigen Klammern eingeschlossen ist. Dieses Format unterscheidet deutlich zwischen Knoten und Blättern.

    Geben Sie beispielsweise die Datei C:\Windows\Notepad.exe wie folgt an: c:\Windows[Notepad.exe]. Geben Sie auf ähnliche Weise das Verzeichnis C:\Windows\System32 wie folgt an: c:\Windows\System32. (Beachten Sie, dass das [] Konstrukt nicht vorhanden ist.)

    Die Darstellung der Registrierung ist ähnlich. Der Standardwert eines Registrierungsschlüssels wird als leeres [] Konstrukt dargestellt. Der Standardwert für den HKLM\SOFTWARE\MyKey Registrierungsschlüssel ist z. B HKLM\SOFTWARE\MyKey[]. .

  • Angeben von Standortmustern. Das Angeben eines Standortmusters ähnelt der Angabe eines tatsächlichen Standorts. Die Ausnahme besteht darin, dass sowohl der Knoten als auch der Blattteil Muster akzeptieren. Ein Muster vom Knoten erstreckt sich jedoch nicht auf das Blatt.

    Beispielsweise stimmt das Muster c:\Windows\* mit dem Windows-Verzeichnis und allen Unterverzeichnissen überein, aber es stimmt mit keiner der Dateien in diesen Verzeichnissen überein. Um auch die Dateien abzugleichen, c:\Windows\*[*] muss angegeben werden.

Interne USMT-Funktionen

Die folgenden Funktionen sind nur für die interne USMT-Verwendung vorgesehen. Verwenden Sie sie nicht in einer .xml-Datei .

  • AntiAlias

  • ConvertScreenSaver

  • ConvertShowIEOnDesktop

  • ConvertToOfficeLangID

  • MigrateActiveDesktop

  • MigrateAppearanceUPM

  • MigrateDisplayCS

  • MigrateDisplayss

  • MigrateIEAutoSearch

  • MigrateMouseUPM

  • MigrateSoundSysTray

  • MigrateTaskBarSS

  • SetPstPathInMapiStruc

Gültige Versionstags

Die folgenden Versionstags können mit verschiedenen Hilfsfunktionen verwendet werden:

  • "CompanyName"

  • "FileDescription"

  • "FileVersion"

  • "InternalName"

  • "LegalCopyright"

  • "OriginalFilename"

  • "ProductName"

  • "ProductVersion"

Die folgenden Versionstags enthalten Werte, die verglichen werden können:

  • "FileVersion"

  • "ProductVersion"