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.
<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.
Anzahl der Vorkommen: unbegrenzt
Übergeordnete Elemente:<Regeln>
Erforderliche untergeordnete Elemente:<Objekt> Zusätzlich <müssen location> und <attribute> als untergeordnete Elemente dieses <Objektelements> angegeben werden.
Optionale untergeordnete Elemente:<Bedingungen>, <Bedingung>, <Skript>
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.
|
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.
|
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:
- Wenn das übergeordnete <Komponentenelement> ein Container ist
- Wenn das untergeordnete <Komponentenelement> dieselbe Rolle wie das übergeordnete <Komponentenelement> besitzt.
Anzahl der Vorkommen: Unbegrenzt
Übergeordnete Elemente:<Migration>, <Rolle>
Erforderliche untergeordnete Elemente:<role>, <displayName>
Optionale untergeordnete Elemente:<Hersteller>, <Version>, <Beschreibung>, <Pfade>, <Symbol>, <Umgebung>, <Erweiterungen>
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.
|
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.
|
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
, ,DoesObjectExist
IsOSEarlierThan
,IsFileVersionAbove
IsSystemContext
DoesFileVersionMatch
IsFileVersionBelow
,DoesStringContentContain
IsSameObject
DoesStringContentEqual
,IsSameContent
und .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 wie5.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 wie5.0
zulä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 wie5.0
zulä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
StringContent
ist.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.
Anzahl der Vorkommen: Unbegrenzt innerhalb eines anderen <Bedingungselements> . Beschränkt auf ein Vorkommen in <Erkennung>, <Regeln>, <addObjects> und <objectSet>
Übergeordnete Elemente:<Bedingungen>, <Erkennung>, <Umgebung>, <Regeln>, <addObjects> und <objectSet>
Untergeordnete Elemente:<Bedingungen>, <Bedingung>
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
,ExtractMultipleFiles
undExtractDirectory
.
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
14
und der Wert"-2" lautet, befindet sich12
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 - Der Wert für den Quellcomputer stimmt nicht mit SourceTable überein.
- 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
undString
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.
Anzahl der Vorkommen: unbegrenzt
Übergeordnete Elemente:<detects>, <namedElements>
Erforderliche untergeordnete Elemente:<bedingung>
Optionale untergeordnete Elemente:<objectSet>
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.
|
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>
Anzahl der Vorkommen: Unbegrenzt.
Übergeordnete Elemente:<role>, <rules>, <namedElements>
Erforderliche untergeordnete Elemente:<detect>
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.
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.
Anzahl der Vorkommen: Unbegrenzt.
Übergeordnete Elemente:<role>, <namedElements>
Untergeordnete Elemente:<Bedingungen>
Syntax:
<detection name="ID" context="User|System|UserAndSystem">
</detection>
Einstellung | Erforderlich? | Wert |
---|---|---|
name |
|
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.
|
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.
Anzahl der Vorkommen: unbegrenzt
Übergeordnete Elemente:<role>, <component>, <namedElements>
Erforderliche untergeordnete Elemente:<Variable>
Optionale untergeordnete Elemente:<Bedingungen>
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.
|
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.txt
usw. 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
,NeverRestore
undSameRegContent
.
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" :
|
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:
|
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
,AnswerNo
undNeverRestore
.
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
StringContent
ist. -
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
.
-
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
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" :
|
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
Übergeordnete Elemente:<Regeln>
Erforderliches untergeordnetes Element:<objectSet>
Hilfsfunktionen: Die folgenden <locationModify-Funktionen> können mit diesem Element verwendet werden:
ExactMove
,RelativeMove
undMove
.
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).OriginalExtension
wird. 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()
undLowerValue()
.
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 QuelldateiMyDocument.doc
auf dem Zielcomputer inMyDocument (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 ProductVersion
seinFileVersion
. Die Datei mit der höchsten VersionTag-Version bestimmt, welche Konflikte basierend auf der Version der Datei gelöst werden. WennMyfile.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.
Anzahl der Vorkommen: eins
Übergeordnete Elemente: keine
Erforderliche untergeordnete Elemente:<Komponente>
Optionale untergeordnete Elemente:<library>, <namedElements>
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>
Anzahl der Vorkommen: Unbegrenzt
Übergeordnete Elemente:<Migration>
Untergeordnete Elemente:<Umgebung>, <Regeln>, <Bedingungen>, <Erkennung>, <Erkennt>, <Erkennen>
Ein Beispiel für dieses Element finden Sie in der MigApp.xml
Datei.
<Objekt>
Das <Objektelement> stellt eine Datei oder einen Registrierungsschlüssel dar.
Anzahl der Vorkommen: Unbegrenzt
Übergeordnete Elemente:<addObjects>
Erforderliche untergeordnete Elemente:<Location>, <Attribute>
Optionale untergeordnete Elemente:<Bytes>
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.
Anzahl der Vorkommen: Unbegrenzt
Übergeordnete Elemente:<variable>, <content>, <include>, <exclude>, <merge>, <contentModify>, <locationModify>, <destinationCleanup>, <includeAttributes>, <excludeAttributes>, <unconditionalExclude>, <detect>
Erforderliche untergeordnete Elemente:Skript<> oder <Muster>
Optionale untergeordnete Elemente:<Inhalt>, <Bedingungen>, <Bedingung>
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.
|
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:So migrieren Sie die
Sample.doc
Datei vonC:\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:
|
<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.
Anzahl der Vorkommen: Jede <Komponente> kann ein, zwei oder drei untergeordnete <Rollenelemente> aufweisen.
Übergeordnete Elemente:<Komponente>, <Rolle>
Erforderliche untergeordnete Elemente:<Regeln>
Optionale untergeordnete Elemente:<Umgebung>, <Erkennung>, <Komponente>, <Rolle>, <Erkennt,><Plug-In>
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:
|
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.
Anzahl der Vorkommen: unbegrenzt
Übergeordnete Elemente:<role>, <rules>, <namedElements>
Erforderliche untergeordnete Elemente:<include>
Optionale untergeordnete Elemente:<rules>, <exclude>, <unconditionalExclude,merge><>, <contentModify>, <locationModify>, <destinationCleanup>, <addObjects>, <externalProcess>, <processing>, <includeAttributes>, <excludeAttributes>, bedingungen, <erkennt>
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.
|
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.
|
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>
- Wenn der Objekttyp Registry ist, muss EncodedLocationPattern ein gültiger Registrierungspfad sein. Beispiel:
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 istPath [file.txt]
und DriveType istFixed
, generiertC:\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 inC:\Users
verfügen, indem sie aufrufenGenerateUserPattens('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.
Anzahl der Vorkommen: Einmal in jedem <Variablenelement> .
Übergeordnete Elemente:<Variable>
Untergeordnete Elemente: Nichts.
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:
Wenn das <Variablenelement> ein <Textelement> enthält, ist der Wert des Variablenelements der Wert des <Textelements> .
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.
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.
Anzahl der Vorkommen: Unbegrenzt
Übergeordnete Elemente:<Umgebung>
Erforderliche untergeordnete Elemente:text<>, script<> oder <objectSet>
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.InstallPath kann 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 VerzeichnisC:\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 denHKLM\SOFTWARE\MyKey
Registrierungsschlüssel ist z. BHKLM\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"