Condividi tramite


Libreria di elementi XML

Panoramica

Questo argomento descrive gli elementi XML e le funzioni helper che puoi usare per creare file XML di migrazione da usare con Utilità di migrazione stato utente (USMT). Si presuppone che tu conosca i concetti di base di XML. .

In questo argomento

Oltre agli elementi XML e alle funzioni helper, questo argomento spiega come specificare percorsi codificati e pattern di percorsi, funzioni solo per uso interno in USMT e tag di versione che puoi usare con le funzioni helper.

  • Elementi e funzioni helper

  • Appendice

    • Specificare i percorsi

    • Funzioni USMT interne

    • Tag di versione validi

Elementi e funzioni helper

La tabella seguente descrive gli elementi XML e le funzioni helper che puoi usare con USMT.

Elementi A-K Elementi L-Z Funzioni helper

<addObjects>

<attributes>

<bytes>

<commandLine>

<component>

<condition>

<conditions>

<content>

<contentModify>

<description>

<destinationCleanup>

<detect>

<detects>

<detection>

<displayName>

<environment>

<exclude>

<excludeAttributes>

<extensions>

<extension>

<externalProcess>

<icon>

<include>

<includeAttribute>

<library>

<location>

<locationModify>

<_locDefinition>

<manufacturer>

<merge>

<migration>

<namedElements>

<object>

<objectSet>

<path>

<paths>

<pattern>

<processing>

<plugin>

<role>

<rules>

<script>

<text>

<unconditionalExclude>

<variable>

<version>

<windowsObjects>

Funzioni <condition>

Funzioni <content>

Funzioni <contentModify>

Funzioni di filtro <include> ed <exclude>

Funzioni <locationModify>

Funzioni <merge>

Funzioni <script>

Funzioni USMT interne

 

<addObjects>

L'elemento <addObjects> emula l'esistenza di uno o più oggetti nel computer di origine. Gli elementi figlio <object> forniscono i dettagli degli oggetti emulati. Se il contenuto è un elemento <script>, il risultato della chiamata sarà una matrice di oggetti.

  • Numero di occorrenze: illimitate

  • Elementi padre:<rules>

  • Elementi figlio obbligatori: <object> Devi inoltre specificare <location> e <attribute> come elementi figlio di questo elemento <object>.

  • Elementi figlio facoltativi:<conditions>, <condition>, <script>

Sintassi:

<addObjects>

</addObjects>

L'esempio seguente è tratto dal file MigApp.xml:

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

<attributes>

L'elemento <attributes> definisce gli attributi di una chiave del Registro di sistema o di un file.

  • Numero di occorrenze: una per ogni elemento <object>

  • Elementi padre:<object>

  • Elementi figlio: nessuno

Sintassi:

<attributes>Content</attributes>

Impostazione Obbligatoria? Valore

Content

Yes

Il contenuto dipende dal tipo di oggetto specificato.

  • Per i file, il contenuto può essere una stringa che contiene uno degli attributi seguenti separati da virgole:

    • Archive

    • Read-only

    • System

    • Hidden

  • Per le chiavi del Registro di sistema, il contenuto può essere uno dei tipi seguenti:

    • None

    • String

    • ExpandString

    • Binary

    • Dword

    • REG_SZ

 

L'esempio seguente è tratto dal file MigApp.xml:

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

<bytes>

Devi specificare l'elemento <bytes> solo per i file perché l'elemento <bytes> verrà ignorato se <location> corrisponde a una chiave del Registro di sistema o a una directory.

  • Numero di occorrenze: zero o una

  • Elementi padre:<object>

  • Elementi figlio: nessuno

Sintassi:

<bytes string="Yes|No" expand="Yes|No">Content</bytes>

Impostazione Obbligatoria? Valore

string

No (impostazione predefinita = No)

Determina se Content deve essere interpretato come stringa o come byte.

expand

No (impostazione predefinita = Yes)

Quando il parametro expand è impostato su Yes, il contenuto dell'elemento <bytes> viene prima espanso nel contesto del computer di origine e quindi interpretato.

Content

Yes

Dipende dal valore di string.

  • Se string è Yes, il contenuto dell'elemento <bytes> viene interpretato come stringa.

  • Se string è No, il contenuto dell'elemento <bytes> viene interpretato come byte. Ogni sequenza di due caratteri rappresenta il valore esadecimale di un byte. Ad esempio, "616263" è la rappresentazione della stringa ANSI "abc". La rappresentazione completa della stringa UNICODE "abc", incluso il carattere di terminazione della stringa, sarebbe "6100620063000000".

 

L'esempio seguente è tratto dal file MigApp.xml:

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

<commandLine>

Puoi usare l'elemento <commandLine> per avviare o arrestare un servizio o un'applicazione prima o dopo l'esecuzione degli strumenti ScanState e LoadState.

  • Numero di occorrenze: illimitate

  • Elementi padre:<externalProcess>

  • Elementi figlio: nessuno

Sintassi:

<commandLine>CommandLineString</commandLine>

Impostazione Obbligatoria? Valore

CommandLineString

Yes

Una riga di comando valida.

 

<component>

L'elemento <component> è obbligatorio in un file XML personalizzato. Questo elemento definisce il costrutto più semplice di un file XML di migrazione. Nel file MigApp.xml, ad esempio, "Microsoft® Office 2003" è un componente che contiene un altro elemento, "Microsoft Office Access® 2003". Puoi usare gli elementi figlio per definire il componente.

Puoi annidare un componente all'interno di un altro, ossia l'elemento <component> può essere un figlio dell'elemento <role> all'interno dell'elemento <component> in due casi: 1) quando l'elemento <component> padre è un contenitore oppure 2) se l'elemento <component> figlio ha lo stesso ruolo dell'elemento <component> padre.

  • Numero di occorrenze: illimitate

  • Elementi padre:<migration>, <role>

  • Elementi figlio obbligatori:<role>, <displayName>

  • Elementi figlio facoltativi:<manufacturer>, <version>, <description>, <paths>, <icon>, <environment>, <extensions>

Sintassi:

<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"

hidden="Yes|No">

</component>

Impostazione Obbligatoria? Valore

type

Puoi usare le indicazioni seguenti per raggruppare le impostazioni e definire il tipo di componente.

  • System: impostazioni del sistema operativo. Tutti i componenti di Windows® sono definiti da questo tipo.

    Quando type="System" e defaultSupported="FALSE" non verrà eseguita la migrazione delle impostazioni a meno che non esista un componente equivalente nei file XML specificati nella riga di comando LoadState. Ad esempio, il file predefinito MigSys.xml contiene componenti con type="System" e defaultSupported="FALSE". Se specifichi questo file nella riga di comando di ScanState, devi anche specificare il file nella riga di comando di LoadState per le impostazioni di cui eseguire la migrazione. Il motivo è dovuto al fatto che lo strumento LoadState deve rilevare un componente equivalente. In altri termini, il componente deve avere lo stesso urlid di migrazione del file XML e un nome visualizzato identico. In caso contrario, lo strumento LoadState non eseguirà la migrazione di queste impostazioni dall'archivio. Questo è utile quando il computer di origine esegue Windows XP e intendi eseguire la migrazione sia in Windows Vista che in Windows XP perché puoi usare lo stesso archivio per entrambi i computer di destinazione.

  • Application: impostazioni per un'applicazione.

  • Device: impostazioni per un dispositivo.

  • Documents: specifica i file.

context

No

(impostazione predefinita = UserAndSystem)

Definisce l'ambito del parametro, ovvero se elaborare il componente nel contesto dello specifico utente, in tutto il sistema operativo o in entrambi i contesti.

L'ambito più vasto possibile è impostato dall'elemento <component>. Ad esempio, se un elemento <component> ha un contesto User e un elemento <rules> ha un contesto UserAndSystem, l'elemento <rules> opera come se avesse un contesto User. Se un elemento <rules> ha un contesto System, opera come se l'elemento <rules> non fosse presente.

  • User. Valuta il componente per ogni utente.

  • System. Valuta il componente una sola volta per il sistema.

  • UserAndSystem. Valuta il componente per l'intero sistema operativo e per ogni utente.

defaultSupported

No

(impostazione predefinita = TRUE)

Può essere TRUE, FALSE, YES o NO. Se questo parametro è FALSE (o NO), non verrà eseguita la migrazione del componente a meno che non esista un componente equivalente nel computer di destinazione.

Quando type="System" e defaultSupported="FALSE" non verrà eseguita la migrazione delle impostazioni a meno che non esista un componente equivalente nei file XML specificati nella riga di comando LoadState. Ad esempio, il file predefinito MigSys.xml contiene componenti con type="System" e defaultSupported="FALSE". Se specifichi questo file nella riga di comando di ScanState, devi anche specificare il file nella riga di comando di LoadState per le impostazioni di cui eseguire la migrazione. Il motivo è dovuto al fatto che lo strumento LoadState deve rilevare un componente equivalente. In altri termini, il componente deve avere lo stesso urlid di migrazione del file XML e un nome visualizzato identico. In caso contrario lo strumento LoadState non eseguirà la migrazione di queste impostazioni dall'archivio. Questo è utile quando il computer di origine esegue Windows XP e intendi eseguire la migrazione sia in Windows Vista che in Windows XP perché puoi usare lo stesso archivio per entrambi i computer di destinazione.

hidden

 

Questo parametro è riservato per uso interno in USMT.

 

Per un esempio, vedi uno dei file XML di migrazione predefiniti.

<condition>

Anche se l'elemento <condition> è supportato per gli elementi <detect>, <objectSet> e <addObjects>, consigliamo di non usarlo. Questo elemento potrebbe essere deprecato nelle versioni future di USMT, rendendo così necessaria la riscrittura degli script. Se devi usare una condizione con gli elementi <objectSet> e <addObjects>, ti consigliamo di usare l'elemento <conditions> più versatile, che consente di formulare istruzioni booleane complesse.

Il risultato dell'elemento <condition> è un valore booleano. Puoi usare questo elemento per specificare le condizioni di valutazione dell'elemento padre. Se una delle condizioni presenti restituisce FALSE, l'elemento padre non sarà valutato.

  • Numero di occorrenze: illimitate

  • Elementi padre:<conditions>, <detect>, <objectSet>, <addObjects>

  • Elementi figlio: nessuno

  • Funzioni helper: con questo elemento puoi usare le funzioni <condition> seguenti: DoesOSMatch, IsNative64Bit(), IsOSLaterThan, IsOSEarlierThan, DoesObjectExist, DoesFileVersionMatch, IsFileVersionAbove, IsFileVersionBelow, IsSystemContext, DoesStringContentEqual, DoesStringContentContain, IsSameObject, IsSameContent e IsSameStringContent.

Sintassi:

<condition negation="Yes|No">ScriptName</condition>

Impostazione Obbligatoria? Valore

negation

No

(impostazione predefinita = No)

"Yes" inverte il valore True/False della condizione.

ScriptName

Yes

Script definito in questa sezione della migrazione.

 

Ad esempio:

Nell'esempio di codice seguente, gli elementi <condition> A e B sono uniti con l'operatore AND perché si trovano in sezioni <conditions> separate. Ad esempio:

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

Nell'esempio di codice seguente, tuttavia, gli elementi <condition> A e B sono uniti con l'operatore OR perché si trovano nella stessa sezione <conditions>.

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

Funzioni <condition>

Le funzioni <condition> restituiscono un valore booleano. Puoi usare questi elementi nelle condizioni <addObjects>.

  • Funzioni per la versione del sistema operativo

  • Funzioni per il contenuto degli oggetti

Funzioni per la versione del sistema operativo

  • DoesOSMatch

    Per tutte le corrispondenze la distinzione tra maiuscole e minuscole non è rilevante.

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

    Impostazione Obbligatoria? Valore

    OSType

    Yes

    L'unico valore valido per questa impostazione è NT. Tieni presente, tuttavia, che devi specificare questa impostazione per il corretto funzionamento delle funzioni <condition>.

    OSVersion

    Yes

    Versione principale, versione secondaria, numero di build e versione del dischetto del servizio corretto, separati da punti. Ad esempio, 5.0.2600.Service Pack 1. Puoi anche specificare in modo parziale la versione tramite un pattern. Ad esempio, 5.0.*.

     

    Ad esempio:

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

  • IsNative64Bit

    La funzione IsNative64Bit restituisce TRUE se il processo di migrazione viene eseguito come processo a 64 bit nativo, ovvero un processo in esecuzione in un sistema a 64 bit senza Windows on Windows (WOW). In caso contrario, restituisce FALSE.

  • IsOSLaterThan

    In tutti i confronti non viene applicata la distinzione tra maiuscole e minuscole.

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

    Impostazione Obbligatoria? Valore

    OSType

    Yes

    Può essere 9x oppure NT. Se OSType non corrisponde al tipo del sistema operativo corrente, restituisce FALSE. Ad esempio, se il sistema operativo corrente è basato su Windows NT e OSType è "9x", il risultato sarà FALSE.

    OSVersion

    Yes

    Versione principale, versione secondaria, numero di build e versione del dischetto del servizio corretto, separate da punti. Ad esempio, 5.0.2600.Service Pack 1. È anche possibile specificare in modo parziale la versione, ma non è consentito l'uso di pattern. Ad esempio, 5.0.

    La funzione IsOSLaterThan restituisce TRUE se la versione del sistema operativo corrente è successiva o uguale a OSVersion.

     

    Ad esempio:

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

  • IsOSEarlierThan

    In tutti i confronti non viene applicata la distinzione tra maiuscole e minuscole.

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

    Impostazione Obbligatoria? Valore

    OSType

    Yes

    Può essere 9x oppure NT. Se OSType non corrisponde al tipo del sistema operativo corrente, restituisce FALSE. Ad esempio, se il sistema operativo corrente è basato su Windows NT e OSType è "9x", il risultato sarà FALSE.

    OSVersion

    Yes

    Versione principale, versione secondaria, numero di build e versione del dischetto del servizio corretto, separate da punti. Ad esempio, 5.0.2600.Service Pack 1. È anche possibile specificare in modo parziale la versione, ma non è consentito l'uso di pattern. Ad esempio, 5.0.

    La funzione IsOSEarlierThan restituisce TRUE se la versione del sistema operativo corrente è precedente a OSVersion.

     

Funzioni per il contenuto degli oggetti

  • DoesObjectExist

    La funzione DoesObjectExist restituisce TRUE se esistono oggetti corrispondenti al pattern del percorso. In caso contrario, restituisce FALSE. Il pattern del percorso viene espanso prima di tentare l'enumerazione.

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

    Impostazione Obbligatoria? Valore

    ObjectType

    Yes

    Definisce il tipo di oggetto. Può essere File o Registry.

    EncodedLocationPattern

    Yes

    Pattern del percorso. Le variabili di ambiente sono consentite.

     

    Per un esempio di questo elemento, vedi il file MigApp.xml.

  • DoesFileVersionMatch

    Per il controllo del pattern non viene fatta distinzione tra maiuscole e minuscole.

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

    Impostazione Obbligatoria? Valore

    EncodedFileLocation

    Yes

    Pattern del percorso per il file che verrà controllato. Le variabili di ambiente sono consentite.

    VersionTag

    Yes

    Valore del tag di versione che verrà controllato.

    VersionValue

    Yes

    Pattern stringa. Ad esempio, "Microsoft*".

     

    Ad esempio:

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

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

  • IsFileVersionAbove

    La funzione IsFileVersionAbove restituisce TRUE se la versione del file è superiore a VersionValue.

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

    Impostazione Obbligatoria? Valore

    EncodedFileLocation

    Yes

    Pattern del percorso per il file che verrà controllato. Le variabili di ambiente sono consentite.

    VersionTag

    Yes

    Valore del tag di versione che verrà controllato.

    VersionValue

    Yes

    Valore con cui eseguire il confronto. Non è possibile specificare un pattern.

     

  • IsFileVersionBelow

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

    Impostazione Obbligatoria? Valore

    EncodedFileLocation

    Yes

    Pattern del percorso per il file che verrà controllato. Le variabili di ambiente sono consentite.

    VersionTag

    Yes

    Valore del tag di versione che verrà controllato.

    VersionValue

    Yes

    Valore con cui eseguire il confronto. Non è possibile specificare un pattern.

     

  • IsSystemContext

    La funzione IsSystemContext restituisce TRUE se il contesto corrente è "System". In caso contrario, restituisce FALSE.

    Sintassi: IsSystemContext()

  • DoesStringContentEqual

    La funzione DoesStringContentEqual restituisce TRUE se la rappresentazione stringa dell'oggetto specificato è identica a StringContent.

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

    Impostazione Obbligatoria? Valore

    ObjectType

    Yes

    Definisce il tipo di oggetto. Può essere File o Registry.

    EncodedLocationPattern

    Yes

    Percorso codificato per l'oggetto che verrà esaminato. È possibile specificare variabili di ambiente.

    ContenutoStringa

    Stringa in base alla quale verrà eseguito il controllo.

     

    Ad esempio:

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

    La funzione DoesStringContentContain restituisce TRUE se è presente almeno una occorrenza di StrToFind nella rappresentazione stringa dell'oggetto.

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

    Impostazione Obbligatoria? Valore

    ObjectType

    Yes

    Definisce il tipo di oggetto. Può essere File o Registry.

    EncodedLocationPattern

    Yes

    Percorso codificato per l'oggetto che verrà esaminato. Puoi specificare variabili di ambiente.

    StrToFind

    Yes

    Stringa che verrà cercata nel contenuto dell'oggetto specificato.

     

  • IsSameObject

    La funzione IsSameObject restituisce TRUE se i percorsi codificati specificati corrispondono allo stesso oggetto fisico. In caso contrario, restituisce FALSE.

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

    Impostazione Obbligatoria? Valore

    ObjectType

    Yes

    Definisce il tipo di oggetto. Può essere File o Registry.

    EncodedLocation1

    Yes

    Percorso codificato per il primo oggetto. Puoi specificare variabili di ambiente.

    EncodedLocation2

    Yes

    Percorso codificato per il secondo oggetto. È possibile specificare variabili di ambiente.

     

    Ad esempio:

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

    La funzione IsSameContent restituisce TRUE se il contenuto degli oggetti specificati è uguale. In caso contrario, restituisce FALSE. Il contenuto verrà confrontato byte per byte.

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

    Impostazione Obbligatoria? Valore

    ObjectType1

    Yes

    Definisce il tipo del primo oggetto. Può essere File o Registry.

    EncodedLocation1

    Yes

    Percorso codificato per il primo oggetto. Puoi specificare variabili di ambiente.

    ObjectType2

    Yes

    Definisce il tipo del secondo oggetto. Può essere File o Registry.

    EncodedLocation2

    Yes

    Percorso codificato per il secondo oggetto. È possibile specificare variabili di ambiente.

     

  • IsSameStringContent

    La funzione IsSameStringContent restituisce TRUE se il contenuto degli oggetti specificati è uguale. In caso contrario, restituisce FALSE. Il contenuto verrà interpretato come stringa.

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

    Impostazione Obbligatoria? Valore

    ObjectType1

    Yes

    Definisce il tipo del primo oggetto. Può essere File o Registry.

    EncodedLocation1

    Yes

    Percorso codificato per il primo oggetto. Puoi specificare variabili di ambiente.

    ObjectType2

    Yes

    Definisce il tipo del secondo oggetto. Può essere File o Registry.

    EncodedLocation2

    Yes

    Percorso codificato per il secondo oggetto. È possibile specificare variabili di ambiente.

     

<conditions>

L'elemento <conditions> restituisce un valore booleano usato per specificare le condizioni di valutazione dell'elemento padre. USMT valuta gli elementi figlio, quindi unisce i risultati con gli operatori AND o OR in base al parametro operation.

  • Numero di occorrenze: illimitate all'interno di un altro elemento <conditions> Limitato a un'occorrenza in <detection>, <rules>, <addObjects> e <objectSet>

  • Elementi padre:<conditions>, <detection>, <environment>, <rules>, <addObjects> e <objectSet>

  • Elementi figlio:<conditions>, <condition>

Sintassi:

<conditions operation="AND|OR">

</conditions>

Impostazione Obbligatoria? Valore

operation

No (impostazione predefinita = AND)

Definisce l'operazione booleana eseguita sui risultati ottenuti dagli elementi figlio.

 

L'esempio seguente è tratto dal file MigApp.xml:

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

<content>

Puoi usare l'elemento <content> per specificare un elenco di pattern di oggetti per ottenere un set di oggetti dal computer di origine. Viene valutato ogni <objectSet> in un elemento <content>. Per ogni elenco di pattern di oggetti risultante, vengono enumerati gli oggetti corrispondenti e il relativo contenuto viene filtrato in base al parametro filter. La matrice di stringhe risultante è l'output dell'elemento <content>. Lo script di filtro restituisce una matrice di percorsi. L'elemento <objectSet> padre può contenere più elementi <content> figlio.

  • Numero di occorrenze: illimitate

  • Elementi padre:<objectSet>

  • Elementi figlio:<objectSet>

  • Funzioni helper: con questo elemento puoi usare le funzioni <content> seguenti: ExtractSingleFile, ExtractMultipleFiles ed ExtractDirectory.

Sintassi:

<content filter="ScriptInvocation">

</content>

Impostazione Obbligatoria? Valore

filter

Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio, , MyScripts.AScript ("Arg1","Arg2").

Lo script viene chiamato per ogni oggetto enumerato dai set di oggetti nella regola <include>. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione.

 

Funzioni <content>

Le funzioni seguenti generano pattern dal contenuto di un oggetto. Queste funzioni vengono chiamate per ogni oggetto enumerato dall'elemento <objectSet> padre.

  • ExtractSingleFile

    Se il valore del Registro di sistema è di tipo MULTI-SZ, viene elaborato solo il primo segmento. Il pattern restituito è il percorso codificato per un file che deve esistere nel sistema. Se la specifica è corretta nel valore del Registro di sistema, ma il file non esiste, la funzione restituisce NULL.

    Sintassi: ExtractSingleFile(Separators,PathHints)

    Impostazione Obbligatoria? Valore

    Separators

    Yes

    Elenco di possibili separatori che possono seguire la specifica del file in questo nome del valore del Registro di sistema. Ad esempio, se il contenuto è "C:\Windows\Notepad.exe,-2", il separatore è una virgola. Puoi specificare NULL.

    PathHints

    Yes

    Elenco di percorsi aggiuntivi separati da punti e virgola (;), in cui la funzione cercherà un file corrispondente al contenuto corrente. Ad esempio, se il contenuto è "Notepad.exe" e il percorso è la variabile di ambiente %Path%, la funzione troverà Notepad.exe in %windir% e restituirà “c:\Windows [Notepad.exe]”. È possibile specificare NULL.

     

    Ad esempio:

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

    e

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

    La funzione ExtractMultipleFiles restituisce più pattern, uno per ogni file individuato nel contenuto del valore del Registro di sistema specificato. Se il valore del Registro di sistema è di tipo MULTI-SZ, il separatore MULTI-SZ è considerato un separatore per impostazione predefinita. Nel caso di MULTI-SZ, pertanto, l'argomento <Separatori> deve essere NULL.

    I pattern restituiti corrispondono ai percorsi codificati per i file che devono esistere nel sistema. Se la specifica è corretta nel valore del Registro di sistema, ma il file non esiste, non sarà incluso nell'elenco risultante.

    Sintassi: ExtractMultipleFiles(Separators,PathHints)

    Impostazione Obbligatoria? Valore

    Separators

    Yes

    Elenco di possibili separatori che possono seguire la specifica del file in questo nome del valore del Registro di sistema. Ad esempio, se il contenuto è "C:\Windows\Notepad.exe,-2", il separatore è una virgola. Questo parametro deve essere NULL per l'elaborazione di valori del Registro di sistema di tipo MULTI-SZ.

    PathHints

    Yes

    Elenco di percorsi aggiuntivi separati da punti e virgola (;), in cui la funzione cercherà un file corrispondente al contenuto corrente. Ad esempio, se il contenuto è "Notepad.exe" e il percorso è la variabile di ambiente %Path%, la funzione troverà Notepad.exe in %windir% e restituirà “c:\Windows [Notepad.exe]”. Puoi specificare NULL.

     

  • ExtractDirectory

    La funzione ExtractDirectory restituisce un pattern corrispondente al percorso codificato per una directory che deve esistere nel computer di origine. Se la specifica è corretta nel valore del Registro di sistema, ma la directory non esiste, la funzione restituisce NULL. Se il valore del Registro di sistema è di tipo MULTI-SZ, verrà elaborato solo il primo segmento.

    Sintassi: ExtractDirectory(Separators,LevelsToTrim,PatternSuffix)

    Impostazione Obbligatoria? Valore

    Separators

    No

    Elenco di possibili separatori che possono seguire la specifica del file in questo nome del valore del Registro di sistema. Ad esempio, se il contenuto è "C:\Windows\Notepad.exe,-2", il separatore è una virgola. Devi specificare NULL per l'elaborazione di valori del Registro di sistema di tipo MULTI-SZ.

    LevelsToTrim

    Yes

    Numero di livelli da eliminare dalla fine della specifica di directory. Usa questa funzione per estrarre una directory radice quando disponi di un valore del Registro di sistema che punta all'interno di tale directory radice in un percorso noto.

    PatternSuffix

    Yes

    Pattern da aggiungere alla specifica di directory. Ad esempio, * [*].

     

    Ad esempio:

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

<contentModify>

L'elemento <contentModify> modifica il contenuto di un oggetto prima che venga scritto nel computer di destinazione. Per ogni elemento <contentModify> possono esistere più elementi <objectSet>. Questo elemento restituisce il nuovo contenuto dell'oggetto in corso di elaborazione.

  • Numero di occorrenze: illimitate

  • Elementi padre:<rules>

  • Elementi figlio obbligatori:<objectSet>

  • Funzioni helper: con questo elemento puoi usare le funzioni <contentModify> seguenti: ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable, MergeMultiSzContent e MergeDelimitedContent.

Sintassi:

<contentModify script="ScriptInvocation">

</contentModify>

Impostazione Obbligatoria? Valore

script

Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio: , MyScripts.AScript ("Arg1","Arg2").

Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola di inclusione. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione.

 

Funzioni <contentModify>

Le funzioni seguenti modificano il contenuto degli oggetti durante la migrazione. Queste funzioni vengono chiamate per ogni oggetto enumerato dall'elemento <objectSet> padre.

  • ConvertToDWORD

    La funzione ConvertToDWORD converte in un valore DWORD il contenuto dei valori del Registro di sistema enumerati dall'elemento <objectSet> padre. Ad esempio, ConvertToDWORD convertirà la stringa "1" nel valore DWORD 0x00000001. Se la conversione non riesce, verrà applicato il valore di DefaultValueOnError.

    Sintassi: ConvertToDWORD(DefaultValueOnError)

    Impostazione Obbligatoria? Valore

    DefaultValueOnError

    No

    Valore che verrà scritto nel nome del valore se la conversione non riesce. È possibile specificare NULL e verrà scritto 0 se la conversione non riesce.

     

  • ConvertToString

    La funzione ConvertToString converte in una stringa il contenuto dei valori del Registro di sistema corrispondenti all'elemento <objectSet> padre. Ad esempio, il valore DWORD 0x00000001 verrà convertito nella stringa "1". Se la conversione non riesce, verrà applicato il valore di DefaultValueOnError.

    Sintassi: ConvertToString(DefaultValueOnError)

    Impostazione Obbligatoria? Valore

    DefaultValueOnError

    No

    Valore che verrà scritto nel nome del valore se la conversione non riesce. È possibile specificare NULL e verrà scritto 0 se la conversione non riesce.

     

    Ad esempio:

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

    La funzione ConvertToBinary converte in un tipo binario il contenuto dei valori del Registro di sistema corrispondenti all'elemento <objectSet> padre.

    Sintassi: ConvertToBinary ()

  • OffsetValue

    La funzione OffsetValue aggiunge o sottrae Value dal valore dell'oggetto migrato, quindi riscrive il risultato nel valore del Registro di sistema nel computer di destinazione. Ad esempio, se l'oggetto migrato è un DWORD con valore 14, e Value è "-2", il valore del Registro di sistema sarà 12 nel computer di destinazione.

    Sintassi: OffsetValue(Value)

    Impostazione Obbligatoria? Valore

    Value

    Rappresentazione stringa di un valore numerico. Può essere positivo o negativo. Ad esempio, OffsetValue(2).

     

  • SetValueByTable

    La funzione SetValueByTable cerca una corrispondenza tra il valore dal computer di origine e la tabella di origine. Se il valore è presente, verrà applicato il valore equivalente nella tabella di destinazione. Se il valore non è presente o se non esiste un valore equivalente nella tabella di destinazione, verrà applicato DefaultValueOnError.

    Sintassi: SetValueByTable(SourceTable,DestinationTable,DefaultValueOnError)

    Impostazione Obbligatoria? Valore

    SourceTable

    Yes

    Elenco di valori separati da virgole possibili per i valore del Registro di sistema di origine.

    DestinationTable

    No

    Elenco di valori convertiti separati da virgole.

    DefaultValueOnError

    No

    Il valore che verrà applicato nel computer di destinazione se 1) il valore per il computer di origine non corrisponde a SourceTable oppure 2) DestinationTable non contiene un valore equivalente.

    Se DefaultValueOnError è NULL, il valore non verrà modificato nel computer di destinazione.

     

  • KeepExisting

    Puoi usare la funzione KeepExisting in presenza di conflitti nel computer di destinazione. Questa funzione mantiene (non sovrascrive) gli attributi specificati per l'oggetto nel computer di destinazione.

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

    Impostazione Obbligatoria? Valore

    OptionString

    Yes

    OptionString può essere Security, TimeFields o FileAttrib:Letter. Puoi specificare solo uno per ogni tipo di OptionStrings. Non specificare più di OptionStrings con lo stesso valore. Se lo fai, verrà mantenuta l'opzione più a destra di tale tipo. Ad esempio, non specificare ("FileAttrib:H", "FileAttrib:R") perché verrà valutato solo l'attributo di sola lettura. Specifica invece ("FileAttrib:HR") per mantenere entrambi gli attributi nascosto e di sola lettura nel computer di destinazione.

    • Security. Mantiene il descrittore di sicurezza dell'oggetto di destinazione se esiste.

    • TimeFields. Mantiene i timestamp dell'oggetto di destinazione. Questo parametro può essere usato solo per i file.

    • FileAttrib:Letter. Mantiene il valore di attributo dell'oggetto di destinazione (attivato o disattivato) per l'insieme specificato di attributi dei file. Questo parametro può essere usato solo per i file. Per i valori seguenti non viene fatta distinzione tra maiuscole e minuscole, ma USMT ignorerà qualsiasi valore non valido o ripetuto oppure con uno spazio dopo "FileAttrib:". Puoi specificare qualsiasi combinazione degli attributi seguenti:

      • A = archivio

      • C = compresso

      • E = crittografato

      • H = nascosto

      • I = contenuto non indicizzato

      • O = offline

      • R = sola lettura

      • S = sistema

      • T = temporaneo

     

  • MergeMultiSzContent

    La funzione MergeMultiSzContent unisce il contenuto MULTI-SZ dei valori del Registro di sistema enumerati dall'elemento <objectSet> padre con il contenuto dei valori del Registro di sistema equivalenti già esistenti nel computer di destinazione. Instruction e String rimuovono o aggiungono contenuto al valore MULTI-SZ risultante. Gli elementi duplicati verranno rimossi.

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

    Impostazione Obbligatoria? Valore

    Instruction

    Yes

    I valori a disposizione sono:

    • Add. Aggiunge la stringa corrispondente al valore MULTI-SZ risultante, se non è già presente.

    • Remove. Rimuove la stringa corrispondente dal valore MULTI-SZ risultante.

    String

    Yes

    Stringa da aggiungere o rimuovere.

     

  • MergeDelimitedContent

    La funzione MergeDelimitedContent unisce il contenuto dei valori del Registro di sistema enumerati dall'elemento <objectSet> padre con il contenuto dei valori del Registro di sistema equivalenti già esistenti nel computer di destinazione. Il contenuto viene considerato un elenco di elementi separati da uno dei caratteri specificati nel parametro Delimitatori. Gli elementi duplicati verranno rimossi.

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

    Impostazione Obbligatoria? Valore

    Delimiters

    Yes

    Singolo carattere che verrà usato per separare il contenuto dell'oggetto in corso di elaborazione. Il contenuto verrà considerato un elenco di elementi separato da Delimiters.

    Con il delimitatore ".", ad esempio, la stringa verrà separata in base a un punto.

    Instruction

    Yes

    Può essere uno dei valori seguenti:

    • Add. Aggiunge String al valore MULTI-SZ risultante, se non è già presente.

    • Remove. Rimuove String dal valore MULTI-SZ risultante.

    String

    Yes

    Stringa da aggiungere o rimuovere.

     

<description>

L'elemento <description> definisce una descrizione per il componente ma non influisce sulla migrazione.

  • Numero di occorrenze: zero o una

  • Elementi padre:<component>

  • Elementi figlio: nessuno

Sintassi:

<description>ComponentDescription</description>

Impostazione Obbligatoria? Valore

ComponentDescription

Yes

Descrizione del componente.

 

L'esempio di codice seguente mostra come definire la descrizione "My custom component" con l'elemento <description>:

<description>My custom component<description>

<destinationCleanup>

L'elemento <destinationCleanup> elimina gli oggetti, come file e chiavi del Registro di sistema, dal computer di destinazione prima di applicare gli oggetti dal computer di origine. Questo elemento viene valutato solo al momento dell'esecuzione dello strumento LoadState nel computer di destinazione, ovvero l'elemento viene ignorato dallo strumento ScanState.

Importante  

Usa questa opzione con estrema cautela perché eliminerà gli oggetti dal computer di destinazione.

 

Per ogni elemento <destinationCleanup> possono esistere più elementi <objectSet>. Un uso comune di questo elemento è quando vuoi assicurarti che un componente venga incluso nella migrazione se una chiave del Registro di sistema risulta mancante nel computer di origine. In questo caso, puoi eliminare tutte le chiavi del Registro di sistema per il componente prima di eseguire la migrazione delle chiavi del Registro di sistema di origine. Potrai essere così sicuro che se una chiave manca nel computer di origine mancherà anche nel computer di destinazione.

  • Numero di occorrenze: illimitate

  • Elementi padre:<rules>

  • Elementi figlio:<objectSet> (tieni presente che il computer di destinazione eliminerà tutti gli elementi figlio)

Sintassi:

<destinationCleanup filter=ScriptInvocation>

</destinationCleanup>

Impostazione Obbligatoria? Valore

filter

Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio: , MyScripts.AScript ("Arg1","Arg2").

Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola di inclusione. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione.

 

Ad esempio:

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

<detect>

Anche se l'elemento <detect> è ancora supportato, sconsigliamo di usarlo perché potrebbe essere deprecato nelle versioni future di USMT. In tal caso, diventerebbe necessario riscrivere gli script. Consigliamo invece di usare l'elemento <detection>.

Puoi usare l'elemento <detect> per stabilire se un componente è presente in un sistema. Se tutti gli elementi figlio <detect> in un elemento <detect> corrispondono a TRUE, anche l'elemento <detect> corrisponde a TRUE. Se qualsiasi elemento figlio <detect> corrisponde a FALSE, il relativo elemento padre <detect> corrisponde a FALSE. In assenza di una sezione per l'elemento <detect>, USMT presuppone che il componente sia presente.

Per ogni elemento <detect> possono esistere più elementi figlio <condition> o <objectSet>, che verranno uniti logicamente tramite un operatore OR. Se almeno un elemento <condition> o <objectSet> restituisce TRUE, allora l'elemento <detect> restituisce TRUE.

  • Numero di occorrenze: illimitate

  • Elementi padre: <detects>, <namedElements>

  • Elementi figlio obbligatori:<condition>

  • Elementi figlio facoltativi:<objectSet>

Sintassi:

<detect name="ID" context="User|System|UserAndSystem">

</detect>

Impostazione Obbligatoria? Valore

name

Sì, quando <detect> è un figlio di <namedElements>

No, quando l'elemento <detect> è un figlio dell'elemento <detects>

Quando specifichi ID, gli eventuali elementi figlio non vengono elaborati. Verranno invece elaborati gli eventuali altri elementi <detect> con lo stesso nome dichiarati nell'elemento <namedElements>.

context

No

(impostazione predefinita = UserAndSystem)

Definisce l'ambito del parametro: se elaborare il componente nel contesto dello specifico utente, in tutto il sistema operativo o in entrambi.

L'ambito più vasto possibile è impostato dall'elemento component. Ad esempio, se un elemento <component> ha un contesto User e un elemento <rules> ha un contesto UserAndSystem, l'elemento <rules> opera come se avesse un contesto User. Se l'elemento <rules> ha un contesto System, opera come se l'elemento <rules> non fosse presente.

  • User. Valuta le variabili per ogni utente.

  • System. Valuta le variabili una sola volta per il sistema.

  • UserAndSystem. Valuta le variabili per l'intero sistema operativo e per ogni utente.

 

Per esempi di questo elemento, vedi gli esempi per <detection>.

<detects>

Anche se l'elemento <detects> è ancora supportato, sconsigliamo di usarlo perché potrebbe essere deprecato nelle versioni future di USMT e potrebbe quindi diventare necessario riscrivere gli script. Consigliamo invece di usare l'elemento <detection> se l'elemento padre è <role> o <namedElements>, e di usare l'elemento <conditions> se l'elemento padre è <rules>. L'uso di <detection> consente di formulare più chiaramente istruzioni booleane complesse.

L'elemento <detects> è un contenitore per uno o più elementi <detect>. Se tutti gli elementi figlio <detect> in un elemento <detects> corrispondono a TRUE, anche <detects> corrisponde a TRUE. Se qualsiasi elemento figlio <detect> corrisponde a FALSE, <detects> corrisponde a FALSE. Se non vuoi scrivere gli elementi <detects> in un componente, puoi creare l'elemento <detects> all'interno dell'elemento <namedElements> e quindi farvi riferimento. In assenza di una sezione per l'elemento <detects>, USMT presuppone che il componente sia presente. I risultati di ogni elemento <detects> vengono uniti tramite l'operatore OR per comporre la regola usata per rilevare l'elemento padre.

Sintassi:

<detects name="ID" context="User|System|UserAndSystem">

</detects>

  • Numero di occorrenze: illimitate

  • Elementi padre:<role>, <rules>, <namedElements>

  • Elementi figlio obbligatori: <detect>

Impostazione Obbligatoria? Valore

name

Sì, quando <detects> è un figlio di <namedElements>

No, quando l'elemento <detects> è un figlio dell'elemento <role> o <rules>

Quando specifichi ID, nessun elemento <detect> figlio viene elaborato. Verranno invece elaborati gli eventuali altri elementi <detects> con lo stesso nome dichiarati nell'elemento <namedElements>.

context

No

(impostazione predefinita = UserAndSystem)

Definisce l'ambito del parametro: se elaborare il componente nel contesto dello specifico utente, in tutto il sistema operativo o in entrambi.

L'ambito più vasto possibile è impostato dall'elemento <component>. Ad esempio, se un elemento <component> ha un contesto User e un elemento <rules> ha un contesto UserAndSystem, l'elemento <rules> opera come se avesse un contesto User. Se l'elemento <rules> ha un contesto System, opera come se l'elemento <rules> non fosse presente.

  • User. Valuta le variabili per ogni utente.

  • System. Valuta le variabili una sola volta per il sistema.

  • UserAndSystem. Valuta le variabili per l'intero sistema operativo e per ogni utente.

Il parametro context viene ignorato per gli elementi <detects> inclusi in elementi <rules>.

 

L'esempio seguente è tratto dal file MigApp.xml.

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

<detection>

L'elemento <detection> è un contenitore per un elemento <conditions>. Il risultato di questo elemento dipende dal risultato degli elementi figlio <condition>, posizionati all'interno dell'elemento <conditions>. Ad esempio, se tutti gli elementi figlio <conditions> nell'elemento <detection> corrispondono a TRUE, allora l'elemento <detection> corrisponde a TRUE. Se qualsiasi elemento figlio <conditions> corrisponde a FALSE, allora l'elemento <detection> corrisponde a FALSE.

I risultati di ogni sezione <detection> nell'elemento <role>, inoltre, vengono uniti tramite l'operatore OR per comporre la regola di rilevamento dell'elemento padre. Ciò significa che se una delle sezioni <detection> corrisponde a TRUE, allora verrà elaborato l'elemento <role>. In caso contrario, l'elemento <role> non verrà elaborato.

Usa l'elemento <detection> all'interno dell'elemento <namedElements> se non vuoi scriverlo in un componente. Includi quindi una sezione <detection> corrispondente nell'elemento <role> per controllare se viene eseguita la migrazione del componente. In assenza di una sezione <detection> per un componente, USMT presuppone che il componente sia presente.

  • Numero di occorrenze: illimitate

  • Elementi padre:<role>, <namedElements>

  • Elementi figlio:<conditions>

Sintassi:

<detection name="ID" context="User|System|UserAndSystem">

</detection>

Impostazione Obbligatoria? Valore

name

  • Sì, se si dichiara <detection> in <namedElements>

  • Facoltativo, se dichiarato in <role>

Se dichiarato, il contenuto dell'elemento <detection> viene ignorato e verrà valutato il contenuto dell'elemento <detection> con lo stesso nome dichiarato nell'elemento <namedElements>.

context

No (impostazione predefinita = UserAndSystem)

Definisce l'ambito del parametro: se elaborare il componente nel contesto dello specifico utente, in tutto il sistema operativo o in entrambi.

  • User. Valuta il componente per ogni utente.

  • System. Valuta il componente una sola volta per il sistema.

  • UserAndSystem. Valuta il componente per l'intero sistema operativo e per ogni utente.

 

Ad esempio:

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

e

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

<displayName>

L'elemento <displayName> è un campo obbligatorio in ogni elemento <component>.

  • Numero di occorrenze: una per ogni componente

  • Elementi padre:<component>

  • Elementi figlio: nessuno

Sintassi:

<displayName _locID="ID">ComponentName</displayName>

Impostazione Obbligatoria? Valore

locID

No

Questo parametro è riservato per uso interno in USMT. Non usare questo parametro.

ComponentName

Yes

Nome per il componente.

 

Ad esempio:

<displayName>Command Prompt settings</displayName>

<environment>

L'elemento <environment> è un contenitore per gli elementi <variable> in cui puoi definire le variabili da usare nel file XML. Tutte le variabili di ambiente definite in questo modo saranno private, ossia saranno disponibili solo per i relativi componenti figlio e per il componente in cui sono state definite. Per due scenari di esempio, vedi Esempi.

  • Numero di occorrenze: illimitate

  • Elementi padre:<role>, <component>, <namedElements>

  • Elementi figlio obbligatori:<variable>

  • **Elementi figlio facoltativi:**conditions

Sintassi:

<environment name="ID" context="User|System|UserAndSystem">

</environment>

Impostazione Obbligatoria? Valore

name

Sì, quando <environment> è un figlio di <namedElements>

No, quando l'elemento <environment> è un figlio dell'elemento <role> o <component>

Quando questo elemento viene dichiarato come figlio degli elementi <role> o <component>, se ID viene dichiarato, USMT ignora il contenuto dell'elemento <environment> e viene elaborato il contenuto dell'elemento <environment> con lo stesso nome dichiarato nell'elemento <namedElements>.

context

No

(impostazione predefinita = UserAndSystem)

Definisce l'ambito del parametro: se elaborare il componente nel contesto dello specifico utente, in tutto il sistema operativo o in entrambi.

L'ambito più vasto possibile è impostato dall'elemento <component>. Ad esempio, se un elemento <component> ha un contesto User e un elemento <rules> ha un contesto UserAndSystem, l'elemento <rules> opera come se avesse un contesto User. Se l'elemento <rules> ha un contesto System, opera come se <rules> non fosse presente.

  • User. Valuta le variabili per ogni utente.

  • System. Valuta le variabili una sola volta per il sistema.

  • UserAndSystem. Valuta le variabili per l'intero sistema operativo e per ogni utente.

 

Scenario di esempio 1

In questo scenario, vuoi generare il percorso degli oggetti in fase di esecuzione, a seconda della configurazione nel computer di destinazione. Puoi avere la necessità di eseguire questa operazione, ad esempio, se un'applicazione scrive i dati nella directory di installazione e gli utenti possono installarla ovunque nel computer. Se l'applicazione scrive un valore del Registro di sistema hklm\software\companyname\install [path] e poi aggiorna questo valore con il percorso di installazione dell'applicazione, l'unico modo per eseguire correttamente la migrazione dei dati necessari consiste nel definire una variabile di ambiente. Ad esempio:

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

Puoi quindi usare una regola di inclusione come segue. Puoi usare una delle funzioni <script> per eseguire attività simili.

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

Puoi anche filtrare i valori del Registro di sistema che contengono i dati necessari. L'esempio seguente estrae la prima stringa (prima del separatore ",") nel valore del Registro di sistema Hklm\software\companyname\application\ [Path].

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

Scenario di esempio 2:

In questo scenario, vuoi eseguire la migrazione di cinque file denominati File1.txt, File2.txt e così via, da %SYSTEMDRIVE%\data\userdata\dir1\dir2\. A tale scopo, deve essere presente la seguente regola <include> in un file XML:

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

Anziché digitare il percorso cinque volte, puoi creare una variabile per il percorso come segue:

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

Puoi quindi specificare la variabile in una regola <include> come segue:

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

L'elemento <exclude> determina gli oggetti che non verranno inclusi nella migrazione, a meno che non esista un elemento <include> più specifico che imposta la migrazione di un oggetto. In presenza di un elemento <include> e uno <exclude> per lo stesso oggetto, questo verrà incluso. Per ogni elemento <exclude> possono esistere più elementi <objectSet> figlio.

  • Numero di occorrenze: illimitate

  • Elementi padre:<rules>

  • Elementi figlio:<objectSet>

  • Funzioni helper: con questo elemento puoi usare le funzioni di filtro <exclude> seguenti: CompareStringContent, IgnoreIrrelevantLinks, AnswerNo, NeverRestore e SameRegContent.

Sintassi:

<exclude filter="ScriptInvocation">

</exclude>

Impostazione Obbligatoria? Valore

filter

No

(impostazione predefinita = No)

Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio: , MyScripts.AScript ("Arg1","Arg2").

Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola di inclusione. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione.

 

Ecco un esempio tratto dal file MigUser.xml:

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

<excludeAttributes>

Puoi usare l'elemento <excludeAttributes> per stabilire quali parametri associati a un oggetto non devono essere inclusi nella migrazione. In presenza di conflitti tra gli elementi <includeAttributes> ed <excludeAttributes>, il pattern più specifico determina i pattern che non verranno inclusi nella migrazione. Se un oggetto non ha un elemento <includeAttributes> o <excludeAttributes>, verrà eseguita la migrazione di tutti i relativi parametri.

  • Numero di occorrenze: illimitate

  • Elementi padre:<rules>

  • Elementi figlio:<objectSet>

Sintassi:

<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">

</excludeAttributes>

Parametro Obbligatoria? Valore

attributes

Specifica gli attributi da escludere. È possibile specificare uno o entrambi i seguenti elementi, separati da virgolette. Ad esempio, "Security","TimeFields":

  • I valori a disposizione per Security sono Owner, Group, DACL o SACL.

  • I valori a disposizione per TimeFields sono CreationTime, LastAccessTime e LastWrittenTime

 

Esempio:

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

<extensions>

L'elemento <extensions> è un contenitore per uno o più elementi <extension>.

  • Numero di occorrenze: zero o una

  • Elementi padre:<component>

  • Elementi figlio obbligatori:<extension>

Sintassi:

<extensions>

</extensions>

<extension>

Puoi usare l'elemento <extension> per specificare i documenti con una specifica estensione.

  • Numero di occorrenze: illimitate

  • Elementi padre:<extensions>

  • Elementi figlio: nessuno

Sintassi:

<extension>FilenameExtension</extension>

Impostazione Obbligatoria? Valore

FilenameExtension

Yes

Estensione di file.

 

Per eseguire la migrazione di tutti i file con estensione DOC dal computer di origine, ad esempio, puoi specificare il codice seguente all'interno dell'elemento <component>:

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

Equivale a specificare il codice seguente nell'elemento <rules>:

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

Per un altro esempio di come usare l'elemento <extension>,vedi l'esempio per <excludeAttributes>.

<externalProcess>

Puoi usare l'elemento <externalProcess> per eseguire una riga di comando durante il processo di migrazione. Potresti avere la necessità, ad esempio, di eseguire un comando dopo il completamento del processo LoadState.

  • Numero di occorrenze: illimitate

  • Elementi padre:<rules>

  • Elementi figlio obbligatori:<commandLine>

Sintassi:

<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">

</externalProcess>

Impostazione Obbligatoria? Valore

when

Indica quando deve essere eseguita la riga di comando. I valori disponibili sono:

  • pre-scan prima dell'avvio del processo di analisi.

  • scan-success dopo il corretto completamento del processo di analisi.

  • post-scan dopo il completamento del processo di analisi, indipendentemente dal fatto che sia riuscito o meno.

  • pre-apply prima dell'avvio del processo di applicazione.

  • apply-success dopo il corretto completamento del processo di applicazione.

  • post-apply dopo il completamento del processo di applicazione, indipendentemente dal fatto che sia riuscito o meno.

 

Per un esempio di come usare l'elemento <externalProcess>,vedi l'esempio per <excludeAttributes>.

<icon>

Questo è un elemento USMT interno. Non usare questo elemento.

<include>

L'elemento <include> determina cosa includere nella migrazione, a meno che non sia presente una regola <exclude> più specifica. Puoi usare uno script per estendere in modo più specifico la definizione degli oggetti da raccogliere. Per ogni elemento <include> possono esistere più elementi <objectSet>.

  • Numero di occorrenze: illimitate

  • Elementi padre:<rules>

  • Elemento figlio obbligatorio:<objectSet>

  • Funzioni helper: con questo elemento puoi usare le funzioni di filtro <include> seguenti: CompareStringContent, IgnoreIrrelevantLinks, AnswerNo e NeverRestore.

Sintassi:

<include filter="ScriptInvocation">

</include>

Impostazione Obbligatoria? Valore

filter

No.

Se non si specifica questo parametro, verranno elaborati tutti i pattern all'interno dell'elemento <objectSet> figlio.

Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio, , MyScripts.AScript ("Arg1","Arg2").

Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola <include>. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione.

 

L'esempio seguente è tratto dal file MigUser.xml:

<component type="Documents" context="User">
   <displayName _locID="miguser.myvideo">My Video</displayName>
      <paths>
         <path type="File">%CSIDL_MYVIDEO%</path>
      </paths>
      <role role="Data">
         <detects>           
            <detect>
               <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
            </detect>
         </detects>
         <rules>
               <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                  <objectSet>
                     <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
                  </objectSet>
               </include>
               <merge script="MigXmlHelper.DestinationPriority()">
                  <objectSet>
                     <pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
                  </objectSet>
            </merge>
         </rules>
      </role>
    </component>

Funzioni di filtro <include> ed <exclude>

Le funzioni seguenti restituiscono un valore booleano. Puoi usarle per eseguire la migrazione di oggetti specifici in base a particolari condizioni.

  • AnswerNo

    Questo filtro restituisce sempre FALSE.

    Sintassi: AnswerNo ()

  • CompareStringContent

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

    Impostazione Obbligatoria? Valore

    StringContent

    Yes

    Stringa in base alla quale eseguire il confronto.

    CompareType

    Yes

    Stringa. Usa uno dei valori seguenti:

    • Equal (senza distinzione tra maiuscole e minuscole). La funzione restituisce TRUE se la rappresentazione stringa dell'oggetto corrente elaborata dal motore di migrazione è identica a StringContent.

    • NULL o qualsiasi altro valore. La funzione restituisce TRUE se la rappresentazione stringa dell'oggetto corrente elaborata dal motore di migrazione non corrisponde a StringContent.

     

  • IgnoreIrrelevantLinks

    Questo filtro esclude i file con estensione lnk che puntano a un oggetto non valido nel computer di destinazione. Nota che l'operazione di filtro viene eseguita nel computer di destinazione, quindi tutti i file con estensione lnk verranno salvati nell'archivio durante ScanState. Verranno poi esclusi durante l'esecuzione dello strumento LoadState.

    Sintassi: IgnoreIrrelevantLinks ()

    Ad esempio:

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

    Puoi usare questa funzione per raccogliere gli oggetti specificati dal computer di origine senza poi eseguirne la migrazione nel computer di destinazione. Se eseguita con lo strumento ScanState, questa funzione restituisce TRUE. Se eseguita con lo strumento LoadState, questa funzione restituisce FALSE. Questa funzione potrebbe esserti utile per controllare il valore di un oggetto nel computer di destinazione, quando non vuoi eseguirne la migrazione nella destinazione.

    Sintassi: NeverRestore()

    Nell'esempio seguente, il valore HKCU\Control Panel\International [Locale] sarà incluso nell'archivio ma non ne verrà eseguita la migrazione nel computer di destinazione:

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

<includeAttributes>

Puoi usare l'elemento <includeAttributes> per determinare se particolari parametri associati a un oggetto verranno inclusi nella migrazione insieme all'oggetto stesso. In presenza di conflitti tra gli elementi <includeAttributes> ed <excludeAttributes> , il pattern più specifico determinerà i parametri che verranno inclusi nella migrazione. Se un oggetto non ha un elemento <includeAttributes> o <excludeAttributes>, verrà eseguita la migrazione di tutti i relativi parametri.

  • Numero di occorrenze: illimitate

  • Elementi padre:<rules>

  • Elementi figlio:<objectSet>

Sintassi:

<includeAttributes attributes="Security|TimeFields|Security,TimeFields">

</includeAttributes>

Impostazione Obbligatoria? Valore

attributes

Specifica gli attributi da includere con un oggetto migrato. È possibile specificare uno o entrambi i seguenti elementi, separati da virgolette. Ad esempio, "Security","TimeFields":

  • I valori disponibili per Security sono:

    • Owner. Proprietario dell'oggetto (SID).

    • Group. Gruppo primario per l'oggetto (SID).

    • DACL (elenco di controllo di accesso discrezionale). Elenco di controllo di accesso gestito dal proprietario di un oggetto e che specifica l'accesso consentito per l'oggetto a particolari utenti o gruppi.

    • SACL (elenco di controllo di accesso di sistema). Elenco di controllo di accesso che controlla la generazione di messaggi di controllo per i tentativi di accesso a un oggetto a protezione diretta. La possibilità di ottenere o impostare l'elenco SACL di un oggetto dipende da un privilegio generalmente assegnato solo agli amministratori di sistema.

  • I valori disponibili per TimeFields sono:

    • CreationTime. Specifica la data e ora di creazione del file o della directory.

    • LastAccessTime. Specifica la data e ora dell'ultima lettura, scrittura o esecuzione (nel caso dei file eseguibili) del file.

    • LastWrittenTime. Specifica la data e ora dell'ultima scrittura o sovrascrittura o dell'ultimo troncamento del file.

 

Per un esempio di come usare l'elemento <includeAttributes>,vedi l'esempio per <excludeAttributes>.

<library>

Questo è un elemento USMT interno. Non usare questo elemento.

<location>

L'elemento <location> definisce il percorso dell'elemento <object>.

  • Numero di occorrenze: una per ogni elemento <object>

  • Elementi padre:<object>

  • Elementi figlio:<script>

Sintassi:

<location type="typeID">ObjectLocation</location>

Impostazione Obbligatoria? Valore

type

Yes

typeID può essere Registry o File.

ObjectLocation

Yes

Percorso dell'oggetto.

 

L'esempio seguente è tratto dal file MigApp.xml:

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

<locationModify>

Puoi usare l'elemento <locationModify> per modificare il percorso e il nome di un oggetto prima di eseguirne la migrazione nel computer di destinazione. L'elemento <locationModify> viene elaborato solo al momento dell'esecuzione dello strumento LoadState nel computer di destinazione, ovvero viene ignorato dallo strumento ScanState. L'elemento <locationModify> creerà la cartella appropriata nel computer di destinazione, se non è già presente.

Numero di occorrenze: illimitate

  • Elementi padre:<rules>

  • Elemento figlio obbligatorio:<objectSet>

  • Funzioni helper: con questo elemento puoi usare le funzioni <locationModify> seguenti: ExactMove, RelativeMove e Move.

Sintassi:

<locationModify script="ScriptInvocation">

</locationModify>

Impostazione Obbligatoria? Valore

script

Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio: , MyScripts.AScript ("Arg1","Arg2").

Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola di inclusione. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione.

 

L'esempio seguente è tratto dal file MigApp.xml:

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

Funzioni <locationModify>

Le funzioni seguenti modificano il percorso degli oggetti durante la migrazione quando si usa l'elemento <locationModify>. Queste funzioni vengono chiamate per ogni oggetto enumerato dall'elemento <objectSet> padre. L'elemento <locationModify> creerà la cartella appropriata nel computer di destinazione, se non è già presente.

  • ExactMove

    La funzione ExactMove sposta tutti gli oggetti individuati dall'elemento <ObjectSet> padre nel valore specificato per ObjectEncodedLocation. Puoi usare questa funzione quando vuoi spostare un singolo file in un percorso diverso nel computer di destinazione. Se il percorso di destinazione è un nodo, tutti gli oggetti di origine corrispondenti verranno scritti nel nodo senza eventuali sottodirectory. Se il percorso di destinazione è una foglia, il motore di migrazione eseguirà la migrazione di tutti gli oggetti di origine corrispondenti nello stesso percorso. In caso di collisioni, verranno applicati i normali algoritmi.

    Sintassi: ExactMove(ObjectEncodedLocation)

    Impostazione Obbligatoria? Valore

    ObjectEncodedLocation

    Yes

    Percorso di destinazione per tutti gli oggetti di origine.

     

    Ad esempio:

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

    La funzione Move sposta gli oggetti in un percorso diverso nel computer di destinazione. Questa funzione crea inoltre le sottodirectory superiori al CSIDL più lungo nel nome di oggetto di origine.

    Sintassi: Move(DestinationRoot)

    Impostazione Obbligatoria? Valore

    DestinationRoot

    Yes

    Percorso in cui verranno spostati gli oggetti di origine. Se necessario, questa funzione creerà le eventuali sottodirectory superiori al CSIDL più lungo nel nome di oggetto di origine.

     

  • RelativeMove

    Puoi usare la funzione RelativeMove per raccogliere e spostare dati. Tieni presente che puoi usare le variabili di ambiente nelle radici di origine e destinazione, ma queste potrebbero essere definite diversamente nei computer di origine e di destinazione.

    Sintassi: RelativeMove(SourceRoot,DestinationRoot)

    Impostazione Obbligatoria? Valore

    SourceRoot

    Yes

    Percorso da cui verranno spostati gli oggetti di origine. Qualsiasi oggetto di origine enumerato dall'elemento <ObjectSet> padre non presente in questo percorso non verrà spostato.

    DestinationRoot

    Yes

    Percorso da cui gli oggetti di origine verranno spostati nel computer di destinazione. Se necessario, questa funzionerà creerà le eventuali sottodirectory superiori a SourceRoot.

     

    Ad esempio:

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

Questo è un elemento USMT interno. Non usare questo elemento.

<manufacturer>

L'elemento <manufacturer> definisce il produttore per il componente, ma non influisce sulla migrazione.

  • Numero di occorrenze: zero o una

  • Elementi padre:<component>

  • Elementi figlio: nessuno

Sintassi:

<manufacturer>Name</manufacturer>

Impostazione Obbligatoria? Valore

Name

Yes

Nome del produttore del componente.

 

<merge>

L'elemento <merge> determina cosa accade in presenza di una collisione. Il termine collisione indica la situazione in cui un oggetto di cui eseguire la migrazione è già presente nel computer di destinazione. Se non specifichi questo elemento, il comportamento predefinito per il Registro di sistema prevede la sostituzione dell'oggetto di destinazione con l'oggetto di origine. Il comportamento predefinito per i file prevede la ridenominazione del file di origine in "NomeFileOriginale(1).EstensioneOriginale". Questo elemento specifica solo le azioni da eseguire in caso di collisione e non include oggetti. Per completare la migrazione degli oggetti, pertanto, devi specificare regole <include> insieme all'elemento <merge>. Se viene rilevata una collisione durante l'elaborazione di un oggetto, USMT selezionare la regola di unione più specifica e la applicherà per risolvere il conflitto. Ad esempio, se definisci una regola <merge> C:\* [*] impostata su <sourcePriority> e una regola <merge> C:\subfolder\* [*] impostata su <destinationPriority>, USMT usa la regola <destinationPriority> perché è più specifica.

Per un esempio di questo elemento, vedi Conflitti e precedenza.

  • Numero di occorrenze: illimitate

  • Elementi padre:<rules>

  • Elemento figlio obbligatorio:<objectSet>

  • Funzioni helper: con questo elemento puoi usare le funzioni <merge> seguenti: SourcePriority, DestinationPriority, FindFilePlaceByPattern, LeafPattern, NewestVersion, HigherValue() e LowerValue().

Sintassi:

<merge script="ScriptInvocation">

</merge>

Impostazione Obbligatoria? Valore

script

Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio, , MyScripts.AScript ("Arg1","Arg2").

Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola <include>. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione.

 

L'esempio seguente è tratto dal file MigUser.xml:

<rules>
   <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
      <objectSet>
         <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
      </objectSet>
   </include>
   <merge script="MigXmlHelper.DestinationPriority()">
      <objectSet>
         <pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
      </objectSet>
   </merge>
</rules>

Funzioni <merge>

Queste funzioni impostano la modalità di risoluzione delle collisioni.

  • DestinationPriority

    Specifica di mantenere l'oggetto nel computer di destinazione e di non eseguire la migrazione dell'oggetto dal computer di origine.

    Ad esempio:

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

    La funzione FindFilePlaceByPattern salva i file con un contatore incrementale in caso di collisione. Stringa che contiene uno dei costrutti seguenti in qualsiasi ordine: <F>, <E>, <N>.

    Sintassi: FindFilePlaceByPattern(FilePattern)

    Impostazione Obbligatoria? Valore

    FilePattern

    Yes

    • <F> verrà sostituito con il nome di file originale.

    • <N> verrà sostituito con un contatore incrementale fino a quando non sono più presenti collisioni con gli oggetti nel computer di destinazione.

    • <E> verrà sostituito dall'estensione di file originale.

    Ad esempio, <F> (<N>).<E> modificherà il file di origine MyDocument.doc in MyDocument (1).doc nel computer di destinazione.

     

  • NewestVersion

    La funzione NewestVersion risolverà i conflitti nel computer di destinazione in base alla versione del file.

    Sintassi: NewestVersion(VersionTag)

    Impostazione Obbligatoria? Valore

    VersionTag

    Yes

    Campo della versione che verrà controllato. Può essere "FileVersion" o "ProductVersion". Dal file con la versione VersionTag più alta dipendono i conflitti che verranno risolti in base alla versione del file. Ad esempio, se Myfile.txt contiene FileVersion 1 e lo stesso file nel computer di destinazione contiene FileVersion 2, rimarrà il file nella destinazione.

     

  • HigherValue()

    Puoi usare questa funzione per unire i valori del Registro di sistema. I valori del Registro di sistema verranno valutati come valori numerici e da quello con il valore più alto dipenderà la scelta dei valori del Registro di sistema che verranno uniti.

  • LowerValue()

    Puoi usare questa funzione per unire i valori del Registro di sistema. I valori del Registro di sistema verranno valutati come valori numerici e da quello con il valore più basso dipenderà la scelta dei valori del Registro di sistema che verranno uniti.

  • SourcePriority

    Specifica di eseguire la migrazione dell'oggetto dal computer di origine e di eliminare l'oggetto nel computer di destinazione.

    Ad esempio:

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

<migration>

L'elemento <migration> è il singolo elemento radice di un file XML di migrazione ed è obbligatorio. A ogni file XML deve essere assegnato un urlid di migrazione univoco. L'urlid di ogni file specificato nella riga di comando deve essere univoco. Il motivo è dovuto al fatto che USMT usa l'urlid per definire i componenti all'interno del file. Ad esempio, devi specificare quanto segue all'inizio di ogni file: <CustomFileName> è il nome del file, ad esempio "AppPersonalizzata".

  • Numero di occorrenze: una

  • Elementi padre: nessuno

  • Elementi figlio obbligatori:<component>

  • Elementi figlio facoltativi:<library>, <namedElements>

Sintassi:

<migration urlid="*UrlID/*Name">

</migration>

Impostazione Obbligatoria? Valore

urlid

Yes

UrlID è un ID stringa che identifica in modo univoco questo file XML. Questo parametro deve essere un nome senza due punti, come definito nella specifica degli spazi dei nomi XML. Ogni file XML deve avere un urlid univoco. Se due file XML di migrazione hanno lo stesso urlid, il secondo file XML specificato nella riga di comando non verrà elaborato. Per altre informazioni sugli spazi dei nomi XML, vedi l'argomento relativo all'uso degli spazi dei nomi XML.

Nome

No

Anche se non obbligatorio, è buona norma usare il nome del file XML.

 

L'esempio seguente è tratto dal file MigApp.xml:

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

MigXMLHelper.FileProperties

Questa funzione helper di filtro può essere usata per filtrare la migrazione dei file in base alle dimensioni e agli attributi di data dei file.

Funzione helper MigXMLHelper.FileProperties (proprietà, operatore, valoreDaConfrontare)

proprietà

filesize, dateCreated, dateModified, dateAccessed

operatore

range, neq, lte, lt, eq, gte, gt

valoreDaConfrontare

Il valore da confrontare. Ad esempio:

Data: "15/05/2008-17/05/2005", "15/05/2008"

Dimensioni: valore numerico seguito da B, KB, MB, o GB. "5GB", "1KB-1MB"

 

<component context="System"  type="Application">
<displayName>File_size</displayName>
<role role="Data">

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

<namedElements>

Puoi usare l'elemento <namedElements> per definire elementi denominati. Puoi usare questi elementi in qualsiasi componente nel file XML. Per un esempio di come usare questo elemento, vedi il file MigApp.xml.

Sintassi:

<namedElements>

</namedElements>

  • Numero di occorrenze: illimitate

  • Elementi padre:<migration>

  • Elementi figlio:<environment>, <rules>, <conditions>, <detection>, <detects>, <detect>

Per un esempio di questo elemento, vedi il file MigApp.xml.

<object>

L'elemento <object> rappresenta un file o una chiave del Registro di sistema.

  • Numero di occorrenze: illimitate

  • Elementi padre:<addObjects>

  • Elementi figlio obbligatori:<location>, <attributes>

  • Elementi figlio facoltativi:<bytes>

Sintassi:

<object>

</object>

L'esempio seguente è tratto dal file MigApp.xml:

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

<objectSet>

L'elemento <objectSet> contiene un elenco di pattern per gli oggetti, ad esempio percorsi di file, posizioni del Registro di sistema e così via. Verranno valutati per primi gli eventuali elementi figlio <conditions>. Se tutti gli elementi figlio <conditions> restituiscono FALSE, l'elemento <objectSet> restituirà un set vuoto. Per ogni elemento padre possono esistere solo più elementi <objectSet>.

  • Numero di occorrenze: illimitate

  • Elementi padre:<variable>, <content>, <include>, <exclude>, <merge>, <contentModify>, <locationModify>, <destinationCleanup>, <includeAttributes>, <excludeAttributes>, <unconditionalExclude>, <detect>

  • Elementi figlio obbligatori:<script> o <pattern>

  • Elementi figlio facoltativi:<content>, conditions, <condition>

Sintassi:

<objectSet>

</objectSet>

L'esempio seguente è tratto dal file MigUser.xml:

<component type="Documents" context="User">
   <displayName _locID="miguser.mymusic">My Music</displayName>
      <paths>
         <path type="File">%CSIDL_MYMUSIC%</path>
      </paths>
   <role role="Data">
      <detects>           
      <detect>
         <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
      </detect>
   </detects>           
   <rules>
      <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
         </objectSet>
      </include>
      <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
         </objectSet>
      </merge>
   </rules>
   </role>
</component>

<path>

Questo è un elemento USMT interno. Non usare questo elemento.

<paths>

Questo è un elemento USMT interno. Non usare questo elemento.

<pattern>

Puoi usare questo elemento per specificare più oggetti Puoi specificare più elementi <pattern> per ogni elemento <objectSet> e questi verranno combinati. Per la specifica di file, potresti usare GenerateDrivePatterns con <script> in alternativa. GenerateDrivePatterns è fondamentalmente uguale a una regola <pattern>, senza la specifica della lettera di unità. Le due righe di codice seguenti, ad esempio, sono simili:

<pattern type="File">C:\Folder\* [Sample.doc]</pattern>
<script>MigXmlHelper.GenerateDrivePatterns("\Folder\* [Sample.doc]","Fixed"</script>
  • Numero di occorrenze: illimitate

  • Elementi padre:<objectSet>

  • Elementi figlio: nessuno ma Path [object] deve essere valido.

Sintassi:

<pattern type="typeID">Path [object]</pattern>

Impostazione Obbligatoria? Valore

type

Yes

typeID può essere Registry, File o Ini. Se typeId è Ini, non è possibile inserire uno spazio tra Path e object. Il comando seguente, ad esempio, è corretto quanto type="Ini":

<pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern>

Path [object]

Yes

Pattern valido per il Registro di sistema o un percorso di file, seguito da almeno uno spazio e da parentesi quadre [] che contengono l'oggetto di cui eseguire la migrazione.

  • Path può contenere il carattere jolly asterisco (*) o essere una variabile di ambiente riconosciuta. Non puoi usare il punto interrogativo come carattere jolly. Puoi usare HKCU e HKLM per fare riferimento rispettivamente a HKEY_CURRENT_USER e HKEY_LOCAL_MACHINE.

  • Object può contenere il carattere jolly asterisco (*). Tuttavia non puoi usare il punto interrogativo come carattere jolly. Ad esempio:

    C:\Folder\ [*] enumera tutti i file in C:\Path ma nessuna sottocartella di C:\Folder.

    C:\Folder\* [*] enumera tutti i file e le sottocartelle di C:\Folder.

    C:\Folder\ [*.mp3] enumera tutti i file MP3 in C:\Folder.

    C:\Folder\ [Sample.doc] enumera solo il file Sample.doc disponibile in C:\Folder.

    Nota  

    Se esegui la migrazione di un file che contiene un carattere parentesi quadra ([ o ]) nel nome, devi inserire il carattere accento circonflesso (^) subito prima della parentesi quadra per ottenere una specifica valida. Ad esempio, se è presente un file denominato "file].txt", devi specificare <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> invece di <pattern type="File">c:\documents\mydocs [file].txt]</pattern>.

     

 

Ad esempio:

  • Per eseguire la migrazione di una singola chiave del Registro di sistema:

    <pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
    
  • Per eseguire la migrazione della cartella EngineeringDrafts e delle eventuali sottocartelle dall'unità C:

    <pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
    
  • Per eseguire solo la migrazione della cartella EngineeringDrafts, escludendo eventuali sottocartelle, dall'unità C:

    Reindirizzare file e impostazioni

  • Per eseguire la migrazione del file Sample.doc da C:\EngineeringDrafts:

    <pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
    
  • Per eseguire la migrazione del file Sample.doc da qualunque posizione si trovi nell'unità C:, usa pattern nel modo seguente. Se esistono più file con lo stesso nome nell'unità C:, verrà eseguita la migrazione di tutti i file.

    <pattern type="File"> C:\* [Sample.doc] </pattern>
    
  • Per altri esempi di come usare questo elemento, vedi Escludere file e impostazioni, Reindirizzare file e impostazioni, Includere file e impostazioni e Esempi di file XML personalizzati.

<processing>

Puoi usare questo elemento per eseguire uno script in un punto specifico nel processo di migrazione. Non sono previsti valori restituiti dagli script specificati e gli eventuali valori restituiti verranno ignorati.

  • Numero di occorrenze: illimitate

  • Elementi padre:<rules>

  • Elemento figlio obbligatorio:<script>

Sintassi:

<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">

</processing>

Impostazione Obbligatoria? Valore

when

Indica quando deve essere eseguito lo script. I valori disponibili sono:

  • pre-scan significa prima dell'avvio del processo di analisi.

  • scan-success significa dopo il corretto completamento del processo di analisi.

  • post-scan significa dopo il completamento del processo di analisi, indipendentemente dal fatto che sia riuscito o meno.

  • pre-apply significa prima dell'avvio del processo di applicazione.

  • apply-success significa dopo il corretto completamento del processo di applicazione.

  • post-apply significa dopo il completamento del processo di applicazione, indipendentemente dal fatto che sia riuscito o meno.

 

<plugin>

Questo è un elemento USMT interno. Non usare questo elemento.

<role>

L'elemento <role> è obbligatorio in un file XML personalizzato. Specificando l'elemento <role> puoi creare un componente concreto. Il componente verrà definito dai parametri specificati al livello <component> e con il ruolo specificato con questo elemento.

  • Numero di occorrenze: ogni elemento <component> può includere uno, due o tre elementi <role> figlio.

  • Elementi padre:<component>, <role>

  • Elementi figlio obbligatori:<rules>

  • Elementi figlio facoltativi:<environment>, <detection>, <component>, <role>, <detects>, <plugin>,

Sintassi:

<role role="Container|Binaries|Settings|Data">

</role>

Impostazione Obbligatoria? Valore

role

Definisce il ruolo per il componente. I valori a disposizione per role sono:

  • Container

  • Binaries

  • Settings

  • Data

Puoi:

  1. Specificare fino a tre elementi <role> in un elemento <component>, un elemento role di tipo "Binaries", un elemento role di tipo "Settings" e uno di tipo "Data". Questi parametri non modificano il comportamento di migrazione. L'unico loro scopo è di facilitare la categorizzazione delle impostazioni per la migrazione. Puoi annidare questi elementi <role>, ma ogni elemento annidato deve avere lo stesso parametro di ruolo.

  2. Specificare un solo elemento <role> di tipo "Container" in un elemento <component>. In questo caso, non puoi specificare elementi <rules> figlio, ma solo altri elementi <component>. Ogni elemento <component> figlio, inoltre, deve essere dello stesso tipo dell'elemento <component> padre. Ad esempio:

<component context="UserAndSystem" type="Application">
  <displayName _locID="migapp.msoffice2003">Microsoft Office 2003</displayName> 
  <environment name="GlobalEnv" /> 
  <role role="Container">
    <detection name="AnyOffice2003Version" /> 
    <detection name="FrontPage2003" /> 
    <!-- 
 Office 2003 Common Settings 
  --> 
    <component context="UserAndSystem" type="Application">

 

L'esempio seguente è tratto dal file MigUser.xml. Per altri esempi, vedi il file MigApp.xml:

<component type="System" context="User">
   <displayName _locID="miguser.startmenu">Start Menu</displayName>
   <paths>
      <path type="File">%CSIDL_STARTMENU%</path>
   </paths>
   <role role="Settings">
      <detects>           
         <detect>
            <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_STARTMENU%")</condition>
         </detect>
      </detects>           
   <rules>
      <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
            <pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
         </objectSet>
      </include>
      <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
            <pattern type="File">%CSIDL_STARTMENU% [desktop.ini]</pattern>
            <pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
         </objectSet>
      </merge>
   </rules>
   </role>
</component>

<rules>

L'elemento <rules> è obbligatorio in un file XML personalizzato. Questo elemento contiene le regole che verranno eseguite durante la migrazione se viene selezionato l'elemento <component> padre, a meno che l'elemento <conditions> figlio, se presente, non restituisca FALSE. Per ogni elemento <rules> possono esistere più elementi <rules> figlio.

  • Numero di occorrenze: illimitate

  • Elementi padre:<role>, <rules>, <namedElements>

  • Elementi figlio obbligatori:<include>

  • Elementi figlio facoltativi:<rules>, <exclude>, <unconditionalExclude>, <merge>, <contentModify>, <locationModify>, <destinationCleanup>, <addObjects>, <externalProcess>, <processing>, <includeAttributes>, <excludeAttributes>, conditions, <detects>

Sintassi:

<rules name="ID" context="User|System|UserAndSystem">

</rules>

Impostazione Obbligatoria? Valore

name

Sì, quando <rules> è un figlio di <namedElements>

No, quando l'elemento <rules> è un figlio di qualsiasi altro elemento

Quando specifichi ID, gli eventuali elementi figlio non vengono elaborati. Verranno invece elaborati gli eventuali altri elementi <rules> con lo stesso nome dichiarati nell'elemento <namedElements>.

context

No

(impostazione predefinita = UserAndSystem)

Definisce l'ambito del parametro, ovvero se elaborare il componente nel contesto dello specifico utente, in tutto il sistema operativo o in entrambi.

L'ambito più vasto possibile è impostato dall'elemento <component>. Ad esempio, se un elemento <component> ha un contesto User e un elemento <rules> ha un contesto UserAndSystem, l'elemento <rules> opera come se avesse un contesto User. Se l'elemento <rules> ha un contesto System, opera come se l'elemento <rules> non fosse presente.

  • User. Valuta le variabili per ogni utente.

  • System. Valuta le variabili una sola volta per il sistema.

  • UserAndSystem. Valuta le variabili per l'intero sistema operativo e per ogni utente.

 

L'esempio seguente è tratto dal file MigUser.xml:

<component type="Documents" context="User">
   <displayName _locID="miguser.mymusic">My Music</displayName>
      <paths>
         <path type="File">%CSIDL_MYMUSIC%</path>
      </paths>
   <role role="Data">
      <detects>           
      <detect>
         <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
      </detect>
   </detects>           
   <rules>
      <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
         </objectSet>
      </include>
      <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
         </objectSet>
      </merge>
   </rules>
   </role>
</component>

<script>

Il valore restituito richiesto da <script> dipende dall'elemento padre.

Numero di occorrenze: una per <variable>, illimitate per <objectSet> e <processing>

Elementi padre:<objectSet>, <variable>, <processing>

Elementi figlio: nessuno

Sintassi e funzioni helper:

  • Sintassi generale: <script>ScriptWithArguments</script>

  • Puoi usare GetStringContent quando l'elemento <script> è incluso in <variable>.

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

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

  • Puoi usare GenerateUserPatterns quando l'elemento <script> è incluso in <objectSet>.

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

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

  • Puoi usare GenerateDrivePatterns quando l'elemento <script> è incluso in <objectSet>.

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

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

  • Puoi usare gli script di semplice esecuzione con gli elementi <script> inclusi in elementi <processing>: AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM.

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

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

Impostazione Obbligatoria? Valore

ScriptWithArguments

Yes

Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio, , MyScripts.AScript ("Arg1","Arg2").

Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola <include>. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione.

Il valore restituito richiesto da <script> dipende dall'elemento padre.

  • Se usato in <variable>, il valore restituito deve essere una stringa.

  • Se usato in <objectSet>, il valore restituito deve essere una matrice di stringhe bidimensionale.

  • Se usato in <location>, il valore restituito deve essere un percorso valido in linea con l'attributo type di <location>. Ad esempio, se <location type="File">, l'elemento script figlio, se specificato, deve essere un percorso di file valido.

    Nota  

    Se esegui la migrazione di un file che contiene un carattere parentesi quadra ([ o ]) nel nome, devi inserire il carattere accento circonflesso (^) subito prima della parentesi quadra per ottenere una specifica valida. In presenza di un file denominato "file].txt", ad esempio, devi specificare <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> invece di <pattern type="File">c:\documents\mydocs [file].txt]</pattern>.

     

 

Esempi:

Per eseguire la migrazione del file Sample.doc da qualsiasi unità nel computer di origine, usa <script> come indicato di seguito. Se esistono più file con lo stesso nome, verrà eseguita la migrazione di tutti i file.

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

Per altri esempi di come usare questo elemento, vedi Escludere file e impostazioni, Reindirizzare file e impostazioni e Esempi di file XML personalizzati.

Funzioni <script>

Puoi usare le funzioni seguenti con l'elemento <script>

  • Funzioni per la generazione di stringhe e pattern

  • Script di semplice esecuzione

Funzioni per la generazione di stringhe e pattern

Queste funzioni restituiscono una stringa o un pattern.

  • GetStringContent

    Puoi usare GetStringContent con elementi <script> inclusi in elementi <variable>. Se possibile, questa funzione restituisce la rappresentazione stringa dell'oggetto specificato. In caso contrario, restituisce NULL. Per gli oggetti file questa funzione restituisce sempre NULL.

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

    Impostazione Obbligatoria? Valore

    ObjectType

    Yes

    Tipo di oggetto. Può essere Registry o Ini (per un file con estensione INI).

    EncodedLocationPattern

    Yes

    • Se il tipo di oggetto è Registry, PatternPercorsoCodificato deve essere un percorso del Registro di sistema valido. Ad esempio, HKLM\SOFTWARE\MyKey[].

    • Se il tipo di oggetto è Ini, PatternPercorsoCodificato deve essere nel formato seguente:

      PercorsoFileIni|NomeSezione[NomeImpostazione]

    ExpandContent

    No (impostazione predefinita = TRUE)

    Può essere TRUE o FALSE. Se FALSE, il percorso specificato non verrà espanso prima della restituzione.

     

    Ad esempio:

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

    La funzione GenerateDrivePatterns eseguirà un'iterazione di tutte le unità disponibili e selezionerà quelle corrispondenti al tipo di unità richiesto. Le unità selezionate verranno concatenate con la parte finale di PatternSegment per formare un pattern di file codificato completo. Ad esempio, se PatternSegment è Path [file.txt] e DriveType è Fixed, la funzione genererà C:\Path [file.txt] e altri pattern se esistono altre unità fisse oltre a C:. Non puoi specificare variabili di ambiente con questa funzione. Puoi usare GenerateDrivePatterns con elementi <script> inclusi in elementi <objectSet> inclusi in elementi <include>/<exclude>.

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

    Impostazione Obbligatoria? Valore

    PatternSegment

    Yes

    Suffisso di un pattern codificato. Verrà concatenato con una specifica di unità, ad esempio "c:\", per comporre un pattern di file codificato completo. Ad esempio, "* [*.doc]". PatternSegment non può essere una variabile di ambiente.

    DriveType

    Yes

    Tipo di unità per cui devono essere generati i pattern. I valori possibili sono:

    • Fixed

    • CDROM

    • Removable

    • Remote

     

    Per un esempio di questo elemento, vedi l'ultimo componente nel file MigUser.xml.

  • GenerateUserPatterns

    Questa funzione eseguirà un'iterazione di tutti gli utenti specificati per la migrazione, ad esclusione dell'utente in corso di elaborazione se ElaborazioneUtenteCorrente è FALSE. Il pattern specificato verrà espanso nel contesto di ogni utente. Se per gli utenti A, B e C esiste un profilo in C:\Documents and Settings, ad esempio, chiamando GenerateUserPattens('File','%userprofile% [*.doc]','TRUE') la funzione helper genererà i tre pattern seguenti:

    • "C:\Documents and Settings\A\* [*.doc]"

    • "C:\Documents and Settings\B\* [*.doc]"

    • "C:\Documents and Settings\C\* [*.doc]"

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

    Impostazione Obbligatoria? Valore

    ObjectType

    Yes

    Definisce il tipo di oggetto. Può essere File o Registry.

    EncodedLocationPattern

    Yes

    Pattern del percorso. Le variabili di ambiente sono consentite.

    ProcessCurrentUser

    Yes

    Può essere TRUE o FALSE. Indica se devono essere generati pattern per l'utente corrente.

     

    Esempio:

    Se si chiama GenerateUserPattens('File','%userprofile% [*.doc]','FALSE') durante l'elaborazione dell'utente A, la funzione genererà i pattern solo per gli utenti B e C. Puoi usare questa funzione helper per creare regole complesse. Ad esempio, eseguire la migrazione di tutti i file DOC dal computer di origine, ma se l'utente X non è incluso nella migrazione escludere dalla migrazione anche gli eventuali file DOC dal profilo dell'utente X.

    L'esempio di codice seguente corrisponde a questo scenario. Il primo elemento <rules> esegue la migrazione di tutti i file DOC nel computer di origine con l'eccezione di quelli nella cartella C:\Documents and Settings. Il secondo elemento <rules> esegue la migrazione di tutti i file DOC nella cartella C:\Documents and Settings con l'eccezione dei file DOC nei profili degli altri utenti. Dato che il secondo elemento <rules> verrà elaborato nel contesto di ogni utente incluso nella migrazione, il risultato finale corrisponderà al comportamento desiderato. Il risultato finale è quello previsto.

    <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

Questa funzione helper richiama lo strumento di ricerca dei documenti per analizzare il sistema e individuare tutti i file di cui è possibile eseguire la migrazione. Può essere richiamata nel contesto System o User per limitare l'analisi.

Impostazione Obbligatoria? Valore

ScanProgramFiles

No (impostazione predefinita = FALSE)

Può essere TRUE o FALSE. Il parametro ScanProgramFiles determina se lo strumento di ricerca dei documenti esegue o meno l'analisi della directory Programmi per raccogliere le estensioni di file registrate per le applicazioni note. Se impostato su TRUE, ad esempio, verranno individuati e inclusi nella migrazione i file con estensione JPG nella directory di Photoshop, se l'estensione JPG è registrata per Photoshop.

IncludePatterns

No (impostazione predefinita = TRUE)

Può essere TRUE o FALSE. L'impostazione TRUE causa la generazione dei pattern di inclusione ed è possibile aggiungerla nell'elemento <include>. L'impostazione FALSE causa la generazione dei pattern di esclusione ed è possibile aggiungerla nell'elemento <exclude>.

SystemDrive

No (impostazione predefinita = FALSE)

Può essere TRUE o FALSE. Se TRUE, tutti i pattern sono limitati all'unità di sistema.

 

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

Script di semplice esecuzione

Per gli script seguenti non è previsto un valore restituito. Puoi usare gli errori seguenti con elementi <script> inclusi negli elementi <processing>

  • AskForLogoff(). Richiede all'utente di disconnettersi al termine della migrazione. Ad esempio:

         <processing when="apply-success">
              <script>MigXmlHelper.AskForLogoff()</script>
         </processing>
    
  • ConvertToShortFileName(RegistryEncodedLocation). Se RegistryEncodedLocation è il percorso completo di un file esistente, questa funzione convertirà il file nel nome di file breve e quindi aggiornerà il valore del Registro di sistema.

  • KillExplorer(). Interrompe Explorer.exe per il contesto utente corrente. In questo modo è possibile accedere a chiavi e file specifici che vengono mantenuti aperti solo durante l'esecuzione di Explorer.exe. Ad esempio:

         <processing when="pre-apply">
              <script>MigXmlHelper.KillExplorer()</script>
         </processing>
    
  • RegisterFonts(FileEncodedLocation). Registra il tipo di carattere specificato per tutti i tipi di carattere nella directory specificata. Ad esempio:

    <processing when="apply-success">
    <script>MigXmlHelper.RegisterFonts("%CSIDL_COMMON_FONTS%")</script>
    </processing>
    
  • RemoveEmptyDirectories (DirectoryEncodedPattern). Elimina qualsiasi directory vuota corrispondente a DirectoryEncodedPattern nel computer di destinazione.

  • RestartExplorer(). Riavvia Explorer.exe alla fine della migrazione. Ad esempio:

         <processing when="post-apply">
              <script>MigXmlHelper.RestartExplorer()</script>
         </processing>
    
  • StartService (ServiceName, OptionalParam1, OptionalParam2,…). Avvia il servizio identificato da ServiceName. ServiceName è la sottochiave in HKLM\System\CurrentControlSet\Services che contiene i dati per il servizio specificato. I parametri facoltativi, se esistenti, verranno passati all'APIStartService. Per altre informazioni, vedi questo sito Web Microsoft.

  • StopService (ServiceName). Arresta il servizio identificato da ServiceName. ServiceName è la sottochiave in HKLM\System\CurrentControlSet\Services che contiene i dati per il servizio specificato.

  • SyncSCM(ServiceShortName). Legge il valore del tipo di avvio dal Registro di sistema (HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) dopo la modifica da parte del motore di migrazione e quindi sincronizza Gestione controllo servizi con il nuovo valore.

<text>

Puoi usare l'elemento <text> per impostare un valore per qualsiasi variabile di ambiente inclusa in uno dei file XML di migrazione.

  • Numero di occorrenze: una in ogni elemento <variable>

  • Elementi padre:<variable>

  • Elementi figlio: nessuno

Sintassi:

<text>NormalText</text>

Impostazione Valore

NormalText

Valore interpretato come testo normale.

 

Ad esempio:

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

<unconditionalExclude>

L'elemento <unconditionalExclude> esclude dalla migrazione i file e i valori del Registro di sistema specificati, indipendentemente dalla presenza di altre regole di inclusione nei file XML di migrazione o nel file Config.xml. Gli oggetti qui dichiarati non verranno inclusi nella migrazione, perché questo elemento ha la precedenza su tutte le altre regole. Anche se sono presenti regole <include> esplicite per includere i file MP3, ad esempio, se usi questa opzione per escluderli, i file non verranno inclusi nella migrazione.

Usa questo elemento se vuoi escludere tutti i file MP3 dal computer di origine. In alternativa, se stai eseguendo il backup di C:\UserData usando un altro metodo, puoi escludere l'intera cartella dalla migrazione. Questo elemento deve tuttavia essere usato con cautela perché se un'applicazione richiede un file escluso, l'applicazione potrebbe non funzionare correttamente nel computer di destinazione.

  • Numero di occorrenze: illimitate

  • Elementi padre:<rules>

  • Elementi figlio:<objectSet>

Sintassi:

<unconditionalExclude></unconditionalExclude>

Il file XML seguente esclude tutti i file MP3 dalla migrazione. Per altri esempi di come usare questo elemento, vedi Escludere file e impostazioni.

<migration urlid="https://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>

L'elemento <variable> è obbligatorio in un elemento <environment>. Per ogni elemento <variable> deve esistere un solo elemento <objectSet>, <script> o <text>. Il contenuto dell'elemento <variable> assegna un valore di testo alla variabile di ambiente. Per questo elemento esistono le tre opzioni seguenti:

  1. Se l'elemento <variable> contiene un elemento <text>, il valore dell'elemento <variable> sarà il valore dell'elemento <text>.

  2. Se l'elemento <variable> contiene un elemento <script> e la chiamata dello script genera una stringa non NULL, il valore dell'elemento <variable> sarà il risultato della chiamata dello script.

  3. Se l'elemento <variable> contiene un elemento <objectSet> e la valutazione dell'elemento <objectSet> genera almeno un pattern di oggetto, il valore del primo oggetto corrispondente al pattern di oggetto risultante sarà il valore dell'elemento <variable>.

  • Numero di occorrenze: illimitate

  • Elementi padre:<environment>

  • :<text>, <script> o <objectSet>

Sintassi:

<variable name="ID" remap=TRUE|FALSE>

</variable>

Impostazione Obbligatoria? Valore

name

Yes

ID è un valore stringa corrispondente al nome usato per fare riferimento alla variabile di ambiente. Consigliamo di anteporre al nome del componente l'ID per evitare collisioni nello spazio dei nomi. Se il nome del componente è MyComponent, ad esempio, e vuoi una variabile corrispondente al percorso di installazione del componente, potresti specificare MyComponent.InstallPath.

remap

No (impostazione predefinita = FALSE)

Specifica se valutare la variabile di ambiente come variabile di ambiente di remapping. Gli oggetti che si trovano in un percorso al di sotto del valore di questa variabile di ambiente vengono spostati automaticamente nella posizione a cui punta la variabile di ambiente nel computer di destinazione.

 

L'esempio seguente è tratto dal file MigApp.xml:

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

<version>

L'elemento <version> definisce la versione per il componente, ma non influisce sulla migrazione.

  • Numero di occorrenze: zero o una

  • Elementi padre:<component>

  • Elementi figlio: nessuno

Sintassi:

<version>ComponentVersion</version>

Impostazione Obbligatoria? Valore

ComponentVersion

Yes

Versione del componente che può contenere pattern.

 

Ad esempio:

<version>4.*</version>

<windowsObjects>

L'elemento <windowsObjects> è riservato per uso interno in USMT. Non usare questo elemento.

Appendice

Specificare i percorsi

  • Specificare i percorsi codificati. Il percorso codificato usato in tutte le funzioni helper è una rappresentazione stringa non ambigua per il nome di un oggetto. La rappresentazione è composta dalla parte nodo seguita facoltativamente dalla parte foglia racchiusa tra parentesi quadre. Questo crea una netta distinzione tra i nodi e le foglie.

    Ad esempio, specifica il file C:\Windows\Notepad.exe in questo modo: c:\Windows[Notepad.exe]. In modo analogo, specifica la directory C:\Windows\System32 in questo modo: c:\Windows\System32. (Nota l'assenza del costrutto [].)

    La rappresentazione per il Registro di sistema è molto simile. Il valore predefinito di una chiave del Registro di sistema è rappresentato da un costrutto [] vuoto. Ad esempio, il valore predefinito della chiave del Registro di sistema HKLM\SOFTWARE\MyKey sarà HKLM\SOFTWARE\MyKey[].

  • Specificare pattern di percorso. Puoi specificare un pattern di percorso in modo simile a come specifichi un percorso effettivo. L'eccezione è rappresentata dal fatto che sia la parte del nodo che le parti foglia accettano pattern. Un pattern, tuttavia, non si estende dal nodo alla foglia.

    Il pattern c:\Windows\*, ad esempio, corrisponderà alla directory Windows e a tutte le sottodirectory, ma non corrisponderà ad alcun file in queste directory. Per la corrispondenza anche dei file, devi specificare c:\Windows\*[*].

Funzioni USMT interne

Le funzioni seguenti sono riservate per uso interno in USMT. Non usarle in alcun file XML.

  • AntiAlias

  • ConvertScreenSaver

  • ConvertShowIEOnDesktop

  • ConvertToOfficeLangID

  • MigrateActiveDesktop

  • MigrateAppearanceUPM

  • MigrateDisplayCS

  • MigrateDisplaySS

  • MigrateIEAutoSearch

  • MigrateMouseUPM

  • MigrateSoundSysTray

  • MigrateTaskBarSS

  • SetPstPathInMapiStruc

Tag di versione validi

Puoi usare i tag di versione seguenti con varie funzioni helper:

  • "CompanyName"

  • "FileDescription"

  • "FileVersion"

  • "InternalName"

  • "LegalCopyright"

  • "OriginalFilename"

  • "ProductName"

  • "ProductVersion"

I tag di versione seguenti contengono valori confrontabili:

  • "FileVersion"

  • "ProductVersion"

Argomenti correlati

Riferimento XML per USMT