Condividi tramite


Libreria di elementi XML

Questo articolo descrive gli elementi XML e le funzioni helper che possono essere usate per creare i file di migrazione.xml da usare con lo strumento usmt (User State Migration Tool). Questo articolo presuppone una conoscenza di base del codice XML.

Oltre agli elementi XML e alle funzioni helper, questo articolo:

  • Descrive come specificare percorsi e percorsi codificati.
  • Le funzioni che sono solo per USMT interno usano.
  • Tag di versione che possono essere usati con le funzioni helper.

Elementi e funzioni helper

Nella tabella seguente vengono descritti gli elementi XML e le funzioni helper che è possibile usare con USMT.

Elementi A-K Elementi L-Z Funzioni helper
<addObjects>
<Attributi>
<Byte>
<commandLine>
<componente>
<condizione>
<Condizioni>
<contenuto>
<contentModify>
<descrizione>
<destinationCleanup>
<rilevare>
<Rileva>
<scoperta>
<displayName>
<ambiente>
<escludere>
<excludeAttributes>
<Estensioni>
<estensione>
<externalProcess>
<icon>
<include>
<includeAttribute>
<biblioteca>
<ubicazione>
<locationModify>
<_locDefinition>
<fabbricante>
<fondersi>
<migrazione>
<namedElements>
<oggetto>
<objectSet>
<sentiero>
<Percorsi>
<motivo>
<elaborazione>
<plug-in>
<ruolo>
<norme>
<copione>
<Testo>
<unconditionalExclude>
<variabile>
<Versione>
<windowsObjects>
<funzioni condition>
<funzioni di contenuto>
<Funzioni contentModify>
<includere> ed <escludere> funzioni di filtro
<Funzioni locationModify>
<funzioni di merge>
<Funzioni script>
Funzioni USMT interne

<addObjects>

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

Sintassi:

<addObjects>
</addObjects>

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

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

<Attributi>

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

  • Numero di occorrenze: una volta per ogni <oggetto>

  • Elementi padre:<oggetto>

  • Elementi figlio: nessuno

Sintassi:

<attributes>Content</attributes>
Impostazione Obbligatorio? Value
Contenuto Il contenuto dipende dal tipo di oggetto specificato.
  • Per i file, il contenuto può essere una stringa contenente uno degli attributi seguenti separati da virgole:
    • Archive
    • Sola lettura
    • System
    • Hidden
  • Per le chiavi del Registro di sistema, il contenuto può essere uno dei tipi seguenti:
    • Nessuno
    • Stringa
    • ExpandString
    • Binary
    • Dword
    • REG_SZ

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

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

<Byte>

L'elemento <byte> può essere specificato solo per i file perché, se <il percorso> corrisponde a una chiave del Registro di sistema o a una directory, i <byte> vengono ignorati.

  • Numero di occorrenze: zero o uno

  • Elementi padre:<oggetto>

  • Elementi figlio: nessuno

Sintassi:

<bytes string="Yes|No" expand="Yes|No">Content</bytes>
Impostazione Obbligatorio? Value
stringa No, il valore predefinito è No Determina se Il contenuto deve essere interpretato come stringa o come byte.
expand No (impostazione predefinita = Sì) Quando il parametro expand è , il contenuto dell'elemento <byte> viene prima espanso nel contesto del computer di origine e quindi interpretato.
Contenuto Dipende dal valore della stringa.
  • Quando la stringa è : il contenuto dell'elemento <byte> viene interpretato come stringa.
  • Quando la stringa è No: il contenuto dell'elemento <byte> viene interpretato come byte. Ogni due caratteri rappresentano il valore esadecimale di un byte. Ad esempio, 616263 è la rappresentazione per la abc stringa ANSI. Una rappresentazione completa della stringa abc UNICODE che include il carattere di terminazione della stringa sarebbe: 6100620063000000.

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

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

<commandLine>

L'elemento <commandLine> può essere usato per avviare o arrestare un servizio o un'applicazione prima o dopo l'esecuzione degli strumenti ScanState e LoadState .

  • Numero di occorrenze: illimitato

  • Elementi padre:<externalProcess>

  • Elementi figlio: nessuno

Sintassi:

<commandLine>CommandLineString</commandLine>
Impostazione Obbligatorio? Value
CommandLineString Riga di comando valida.

<componente>

L'elemento <componente> è necessario in un file di.xml personalizzato. Questo elemento definisce il costrutto più semplice di un file .xml di migrazione. Nel file, MigApp.xml ad esempio, Microsoft Office 2016 è un componente che contiene un altro componente, Microsoft Office Access 2016. Gli elementi figlio possono essere usati per definire il componente.

Un componente può essere annidato all'interno di un altro componente; Ovvero, l'elemento <componente> può essere un elemento figlio dell'elemento <role> all'interno dell'elemento componente<> in due casi:

  1. Quando l'elemento del componente> padre< è un contenitore
  2. Se l'elemento del componente> figlio< ha lo stesso ruolo dell'elemento componente> padre<.

Sintassi:

<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"
hidden="Yes|No">
</component>
Impostazione Obbligatorio? Valore
tipo Gli elementi seguenti possono essere usati per raggruppare le impostazioni e definire il tipo del componente.
  • Sistema: Impostazioni del sistema operativo. Tutti i componenti di Windows sono definiti da questo tipo.
    Quando type="System" e defaultSupported="FALSE", le impostazioni non vengono migrate a meno che non sia presente un componente equivalente nei file .xml specificati nella LoadState.exe riga di comando. Ad esempio, il file predefinito MigSys.xml contiene componenti con type="System" e defaultSupported="FALSE". Se questo file viene specificato nella ScanState.exe riga di comando, è necessario specificare anche il file nella LoadState.exe riga di comando per la migrazione delle impostazioni. Il file deve essere specificato perché lo LoadState.exe strumento deve rilevare un componente equivalente. Ovvero, il componente deve avere lo stesso URL di migrazione del file .xml e un nome visualizzato identico. In caso contrario, lo strumento LoadState non esegue la migrazione di tali impostazioni dall'archivio. Questa impostazione è utile perché un archivio può essere usato per i computer di destinazione che sono la stessa o diversa versione di Windows del computer di origine.
  • Applicazione: Impostazioni per un'applicazione.
  • Dispositivo: Impostazioni per un dispositivo.
  • Documenti: Specifica i file.
contesto No
Default = UserAndSystem
Definisce l'ambito di questo parametro; ovvero se elaborare questo componente nel contesto dell'utente specifico, nell'intero sistema operativo o in entrambi.
L'ambito più grande possibile viene impostato dall'elemento componente<>. Ad esempio, se un <elemento componente> ha un contesto User e un <elemento rules> ha un contesto UserAndSystem, l'elemento <rules> agirebbe come se avesse un contesto user. Se un <elemento rules> ha un contesto di System, funzionerebbe come se l'elemento <rules> non fosse presente.
  • Utente: valuta il componente per ogni utente.
  • Sistema: 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), la migrazione del componente non viene eseguita a meno che non sia presente un componente equivalente nel computer di destinazione.
Quando type="System" e defaultSupported="FALSE", la migrazione delle impostazioni non viene eseguita a meno che non sia presente un componente equivalente nei file .xml specificati nella LoadState.exe riga di comando. Ad esempio, il file predefinito MigSys.xml contiene componenti con type="System" e defaultSupported="FALSE". Se questo file viene specificato nella ScanState.exe riga di comando, è necessario specificare anche il file nella LoadState.exe riga di comando per la migrazione delle impostazioni. Il file deve essere specificato in entrambe le righe di comando perché lo strumento LoadState deve rilevare un componente equivalente. Ovvero, il componente deve avere lo stesso URL di migrazione del file .xml e un nome visualizzato identico oppure lo strumento LoadState non esegue la migrazione di tali impostazioni dall'archivio. Questa impostazione è utile perché un archivio può essere usato per i computer di destinazione che sono la stessa o diversa versione di Windows del computer di origine.
nascosto Questo parametro è destinato solo all'uso interno di USMT.

Per un esempio, vedere uno qualsiasi dei file di migrazione predefiniti.xml .

<condizione>

Anche se l'elemento <condizione> negli <elementi detect>, <objectSet> e <addObjects> è ancora supportato, Microsoft consiglia di non usare più l'elemento <condizione> perché potrebbe essere deprecato nelle versioni future di USMT. Se l'elemento <condition> è deprecato, richiederebbe una riscrittura di tutti gli script che usano l'elemento <condition> . Se invece è necessario usare una condizione all'interno degli <elementi objectSet> e <addObjects>, Microsoft consiglia di usare l'elemento condizioni> più potente<. L'elemento <conditions> consente la formulazione di istruzioni booleane complesse.

L'elemento <condizione> ha un risultato booleano. Questo elemento può essere usato per specificare le condizioni in cui viene valutato l'elemento padre. Se una delle condizioni presenti restituisce FALSE, l'elemento padre non viene valutato.

  • Numero di occorrenze: illimitato.

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

  • Elementi figlio: nessuno

  • Funzioni helper: Con questo elemento è possibile utilizzare le funzioni di condizione> seguenti<: DoesOSMatch, IsNative64Bit(), IsOSLaterThan, IsOSEarlierThan, DoesObjectExist, DoesFileVersionMatch, IsFileVersionAbove, IsFileVersionBelow, , IsSystemContext, DoesStringContentEqual, , DoesStringContentContain, IsSameObject, IsSameContente IsSameStringContent.

Sintassi:

<condition negation="Yes|No">ScriptName</condition>
Impostazione Obbligatorio? Value
negazione No
Default = No
"Sì" inverte il valore True/False della condizione.
Nome Script Script definito all'interno di questa sezione di migrazione.

Nell'esempio di codice seguente, ad esempio, gli elementi della <condizione>, A e B, vengono uniti dall'operatore AND perché si trovano in sezioni di condizioni> separate<:

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

Tuttavia, nell'esempio di codice seguente, gli elementi della <condizione>, A e B, vengono uniti dall'operatore OR perché si trovano nella stessa <sezione delle condizioni>.

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

<funzioni condition>

Le <funzioni della condizione> restituiscono un valore booleano. Questi elementi possono essere usati nelle <condizioni addObjects> .

Funzioni della versione del sistema operativo

  • DoesOSMatch

    Tutte le corrispondenze non fanno distinzione tra maiuscole e minuscole.

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

    Impostazione Obbligatorio? Value
    OSType L'unico valore valido per questa impostazione è NT. Tuttavia, questa impostazione deve essere impostata affinché le funzioni della <condizione> funzionino correttamente.
    OSVersion La versione principale, la versione secondaria, il numero di build e la versione corretta del dischetto del servizio separati da punti. Ad esempio: 5.0.2600.Service Pack 1. È anche possibile specificare una specifica parziale della versione con un modello come 5.0.*.

    Ad esempio:

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

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

  • IsOSLaterThan

    Tutti i confronti non fanno distinzione tra maiuscole e minuscole.

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

    Impostazione Obbligatorio? Value
    OSType Può essere 9x o 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 è FALSE.
    OSVersion La versione principale, la versione secondaria, il numero di build e la versione corretta del dischetto del servizio separati da punti. Ad esempio: 5.0.2600.Service Pack 1. È anche possibile specificare una specifica parziale della versione, ma non è consentito alcun modello, ad 5.0esempio .

    La funzione IsOSLaterThan restituisce TRUE se il sistema operativo corrente è successivo o uguale a OSVersion.

    Ad esempio:

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

    Tutti i confronti non fanno distinzione tra maiuscole e minuscole.

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

    Impostazione Obbligatorio? Value
    OSType Può essere 9x o 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 è FALSE.
    OSVersion La versione principale, la versione secondaria, il numero di build e la versione corretta del dischetto del servizio separati da punti. Ad esempio: 5.0.2600.Service Pack 1. È anche possibile specificare una specifica parziale della versione, ma non è consentito alcun modello, ad 5.0esempio .

    La funzione IsOSEarlierThan restituisce TRUE se il sistema operativo corrente è precedente a OSVersion.

Funzioni di contenuto dell'oggetto

  • DoesObjectExist

    La funzione DoesObjectExist restituisce TRUE se esiste un oggetto che corrisponde al modello di posizione. In caso contrario, restituisce FALSE. Il modello di posizione viene espanso prima di tentare l'enumerazione.

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

    Impostazione Obbligatorio? Value
    ObjectType Definisce il tipo di oggetto. Può essere File o Registro di sistema.
    EncodedLocationPattern Modello di posizione. Le variabili di ambiente sono consentite.

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

  • DoesFileVersionMatch

    Il controllo dei criteri non fa distinzione tra maiuscole e minuscole.

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

    Impostazione Obbligatorio? Value
    EncodedFileLocation Modello di percorso per il file selezionato. Le variabili di ambiente sono consentite.
    VersionTag Valore del tag di versione selezionato.
    Valore versione Modello di 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 Obbligatorio? Value
    EncodedFileLocation Modello di percorso per il file selezionato. Le variabili di ambiente sono consentite.
    VersionTag Valore del tag di versione selezionato.
    Valore versione Valore con cui eseguire il confronto. Non è possibile specificare un modello.
  • IsFileVersionBelow

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

    Impostazione Obbligatorio? Value
    EncodedFileLocation Modello di percorso per il file selezionato. Le variabili di ambiente sono consentite.
    VersionTag Valore del tag di versione selezionato.
    Valore versione Valore con cui eseguire il confronto. Non è possibile specificare un modello.
  • IsSystemContext

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

    Sintassi: IsSystemContext()

  • DoesStringContentEqual

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

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

    Impostazione Obbligatorio? Value
    ObjectType Definisce il tipo di oggetto . Può essere File o Registro di sistema.
    EncodedLocationPattern Posizione codificata per l'oggetto esaminato. È possibile specificare variabili di ambiente.
    StringContent Stringa su cui viene eseguito il controllo.

    Ad esempio:

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

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

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

    Impostazione Obbligatorio? Value
    ObjectType Definisce il tipo di oggetto . Può essere File o Registro di sistema.
    EncodedLocationPattern Posizione codificata per l'oggetto esaminato. È possibile specificare variabili di ambiente.
    StrToFind Stringa cercata all'interno del contenuto dell'oggetto specificato.
  • IsSameObject

    La funzione IsSameObject restituisceTRUE se le posizioni con codifica specificata si restituiscono nello stesso oggetto fisico. In caso contrario, restituisce FALSE.

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

    Impostazione Obbligatorio? Value
    ObjectType Definisce il tipo di oggetto . Può essere File o Registro di sistema.
    EncodedLocation1 Percorso codificato per il primo oggetto. È possibile specificare variabili di ambiente.
    EncodedLocation2 Posizione codificata 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 restituisceTRUE se gli oggetti specificati hanno lo stesso contenuto. In caso contrario, restituisce FALSE. Il contenuto viene confrontato byte per byte.

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

    Impostazione Obbligatorio? Value
    ObjectType1 Definisce il tipo del primo oggetto. Può essere File o Registro di sistema.
    EncodedLocation1 Percorso codificato per il primo oggetto. È possibile specificare variabili di ambiente.
    ObjectType2 Definisce il tipo del secondo oggetto. Può essere File o Registro di sistema.
    EncodedLocation2 Posizione codificata per il secondo oggetto. È possibile specificare variabili di ambiente.
  • IsSameStringContent

    La funzione IsSameStringContent restituisceTRUE se gli oggetti specificati hanno lo stesso contenuto. In caso contrario, restituisce FALSE. Il contenuto viene interpretato come stringa.

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

    Impostazione Obbligatorio? Value
    ObjectType1 Definisce il tipo del primo oggetto. Può essere File o Registro di sistema.
    EncodedLocation1 Percorso codificato per il primo oggetto. È possibile specificare variabili di ambiente.
    ObjectType2 Definisce il tipo del secondo oggetto. Può essere File o Registro di sistema.
    EncodedLocation2 Posizione codificata per il secondo oggetto. È possibile specificare variabili di ambiente.

<Condizioni>

L'elemento <conditions> restituisce un risultato booleano utilizzato per specificare le condizioni in cui viene valutato l'elemento padre. USMT valuta gli elementi figlio e quindi unisce i risultati usando gli operatori AND o OR in base al parametro dell'operazione.

Sintassi:

<conditions operation="AND|OR">
</conditions>
Impostazione Obbligatorio? Value
operazione No, default = AND Definisce l'operazione booleana eseguita sui risultati ottenuti dagli elementi figlio.

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

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

<contenuto>

L'elemento <contenuto> può essere usato per specificare un elenco di modelli di oggetto per ottenere un set di oggetti dal computer di origine. Ogni <objectSet> all'interno di un <elemento di contenuto> viene valutato. Per ogni elenco di modelli di oggetti risultanti, gli oggetti corrispondenti vengono enumerati e il relativo contenuto viene filtrato in base al parametro di filtro. La matrice di stringhe risultante è l'output per l'elemento di< contenuto>. Lo script di filtro restituisce una matrice di posizioni. L'elemento objectSet> padre< può contenere più elementi di contenuto> figlio<.

Sintassi:

<content filter="ScriptInvocation">
</content>
Impostazione Obbligatorio? Value
filter Script seguito da un numero qualsiasi 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 di inclusione> . Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione.

<funzioni di contenuto>

Le funzioni seguenti generano modelli dal contenuto di un oggetto . Queste funzioni vengono chiamate per ogni oggetto che l'elemento ObjectSet> padre< sta enumerando.

  • ExtractSingleFile

    Se il valore del Registro di sistema è multi-SZ, viene elaborato solo il primo segmento. Il modello 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, questa funzione restituisce NULL.

    Sintassi: ExtractSingleFile(Separators,PathHints)

    Impostazione Obbligatorio? Value
    Separatori Elenco di possibili separatori che potrebbero seguire la specifica del file in questo nome di valore del Registro di sistema. Ad esempio, se il contenuto è "C:\Windows\Notepad.exe,-2", il separatore è una virgola. È possibile specificare NULL.
    PathHints Elenco di percorsi aggiuntivi, separati da due punti (;), in cui la funzione cerca un file corrispondente al contenuto corrente. Ad esempio, se il contenuto è "Notepad.exe" e il percorso è la variabile di ambiente %Path%, la funzione trova Notepad.exe in %windir% e restituisce "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ù modelli, uno per ogni file presente nel contenuto del valore del Registro di sistema specificato. Se il valore del Registro di sistema è MULTI-SZ, il separatore MULTI-SZ viene considerato un separatore per impostazione predefinita. Pertanto, per MULTI-SZ, l'argomento <Separatori> deve essere NULL.

    I modelli restituiti sono i percorsi codificati per i file che devono esistere nel computer di origine. Se la specifica è corretta nel valore del Registro di sistema, ma il file non esiste, non viene incluso nell'elenco risultante.

    Sintassi: ExtractMultipleFiles(Separators,PathHints)

    Impostazione Obbligatorio? Value
    Separatori Elenco di possibili separatori che potrebbero seguire la specifica del file in questo nome di valore del Registro di sistema. Ad esempio, se il contenuto è "C:\Windows\Notepad.exe,-2", il separatore è una virgola. Questo parametro deve essere NULL durante l'elaborazione dei valori del Registro di sistema MULTI-SZ .
    PathHints Elenco di percorsi aggiuntivi, separati da due punti (;), in cui la funzione cerca un file corrispondente al contenuto corrente. Ad esempio, se il contenuto è "Notepad.exe" e il percorso è la variabile di ambiente %Path%, la funzione trova Notepad.exe in %windir% e restituisce "c:\Windows [Notepad.exe]". È possibile specificare NULL.
  • ExtractDirectory

    La funzione ExtractDirectory restituisce un modello che rappresenta il 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, questa funzione restituisce NULL. Se sta elaborando un valore del Registro di sistema multi-SZ, viene elaborato solo il primo segmento.

    Sintassi: ExtractDirectory(Separators,LevelsToTrim,PatternSuffix)

    Impostazione Obbligatorio? Value
    Separatori No Elenco di possibili separatori che potrebbero seguire la specifica del file in questo nome di valore del Registro di sistema. Ad esempio, se il contenuto è "C:\Windows\Notepad.exe,-2", il separatore è una virgola. È necessario specificare NULL durante l'elaborazione dei valori del Registro di sistema MULTI-SZ .
    LevelsToTrim Numero di livelli da eliminare dalla fine della specifica della directory. Usare questa funzione per estrarre una directory radice quando è presente un valore del Registro di sistema che punta all'interno di tale directory radice in un percorso noto.
    PatternSuffix Modello da aggiungere alla specifica della 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 l'oggetto venga scritto nel computer di destinazione. Per ogni <elemento contentModify> possono essere presenti più <elementi objectSet> . Questo elemento restituisce il nuovo contenuto dell'oggetto che viene elaborato.

  • Numero di occorrenze: Illimitato

  • Elementi padre:<regole>

  • Elementi figlio obbligatori:<objectSet>

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

Sintassi:

<contentModify script="ScriptInvocation">
</contentModify>
Impostazione Obbligatorio? Value
copione Script seguito da un numero qualsiasi di argomenti stringa separati da una virgola e racchiusi tra parentesi. Per esempio MyScripts.AScript ("Arg1","Arg2").

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

<Funzioni contentModify>

Le funzioni seguenti modificano il contenuto degli oggetti durante la migrazione. Queste funzioni vengono chiamate per ogni oggetto che l'elemento ObjectSet> padre< sta enumerando.

  • ConvertToDWORD

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

    Sintassi: ConvertToDWORD(DefaultValueOnError)

    Impostazione Obbligatorio? Value
    DefaultValueOnError No Valore scritto nel nome del valore se la conversione ha esito negativo. È possibile specificare NULL e 0 viene scritto se la conversione ha esito negativo.
  • ConvertToString

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

    Sintassi: ConvertToString(DefaultValueOnError)

    Impostazione Obbligatorio? Value
    DefaultValueOnError No Valore scritto nel nome del valore se la conversione ha esito negativo. È possibile specificare NULL e 0 viene scritto se la conversione ha esito negativo.

    Ad esempio:

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

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

    Sintassi: ConvertToBinary ()

  • OffsetValue

    La funzione OffsetValue aggiunge o sottrae Value dal valore dell'oggetto di cui è stata eseguita la migrazione e quindi scrive nuovamente il risultato nel valore del Registro di sistema nel computer di destinazione. Ad esempio, se l'oggetto di cui è stata eseguita la migrazione è un DWORD con valore pari 14a e Value è "-2", il valore del Registro di sistema sarà 12 nel computer di destinazione.

    Sintassi: OffsetValue(Value)

    Impostazione Obbligatorio? Value
    Valore Rappresentazione di stringa di un valore numerico. Può essere positivo o negativo. Ad esempio: OffsetValue(2).
  • SetValueByTable

    La funzione SetValueByTable corrisponde al valore dal computer di origine alla tabella di origine. Se il valore è presente, viene applicato il valore equivalente nella tabella di destinazione. Se il valore non è presente o se la tabella di destinazione non ha alcun valore equivalente, viene applicato DefaultValueOnError .

    Sintassi: SetValueByTable(SourceTable,DestinationTable,DefaultValueOnError)

    Impostazione Obbligatorio? Value
    SourceTable Elenco di valori separati da virgole possibili per i valori del Registro di sistema di origine.
    DestinationTable No Elenco di valori tradotti separati da virgole.
    DefaultValueOnError No Valore applicato al computer di destinazione se uno dei due
    1. Il valore per il computer di origine non corrisponde a SourceTable
    2. DestinationTable non ha alcun valore equivalente.

    Se DefaultValueOnError è NULL, il valore non viene modificato nel computer di destinazione.
  • KeepExisting

    La funzione KeepExisting può essere usata in caso di conflitti nel computer di destinazione. Questa funzione mantiene (non sovrascrive) gli attributi specificati per l'oggetto presente nel computer di destinazione.

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

    Impostazione Obbligatorio? Value
    OptionString OptionString può essere Security, TimeFields o FileAttrib:Letter. È possibile specificare uno di ogni tipo di OptionStrings . Non specificare più OptionString con lo stesso valore. Se vengono specificati più Oggetti OptionString con lo stesso valore, viene mantenuta l'opzione più a destra di tale tipo. Ad esempio, non specificare ("FileAttrib:H", "FileAttrib:R") perché viene valutata solo la sola lettura. Specificare invece ("FileAttrib:HR") e gli attributi Hidden e Read-only vengono mantenuti nel computer di destinazione.
    • Sicurezza: mantiene il descrittore di sicurezza dell'oggetto di destinazione, se presente.
    • TimeFields: mantiene i timestamp dell'oggetto di destinazione. Questo parametro è solo per i file.
    • FileAttrib:<Lettera>: mantiene il valore dell'attributo dell'oggetto di destinazione, ON o OFF, per il set specificato di attributi di file. Questo parametro è solo per i file. Di seguito non viene fatta distinzione tra maiuscole e minuscole, ma USMT ignorerà tutti i valori non validi, ripetuti o se è presente uno spazio dopo FileAttrib:. È possibile specificare qualsiasi combinazione degli attributi seguenti:
      • A = Archivio
      • C = compresso
      • E = Crittografato
      • H = Nascosto
      • I = Non indicizzato contenuto
      • O = Offline
      • R = Read-Only
      • 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à presenti nel computer di destinazione. Instruction e String rimuovere o aggiungere contenuto al multi-SZ risultante. Gli elementi duplicati vengono rimossi.

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

    Impostazione Obbligatorio? Value
    Istruzione Può essere uno dei valori seguenti:
    • Aggiungi. Aggiunge l'oggetto String corrispondente all'oggetto MULTI-SZ risultante, se non è già presente.
    • Rimuovere. Rimuove l'oggetto String corrispondente dall'oggetto MULTI-SZ risultante.
    Stringa 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 equivalenti del Registro di sistema già esistenti nel computer di destinazione. Il contenuto viene considerato un elenco di elementi separati da uno dei caratteri nel parametro Delimiters. Gli elementi duplicati vengono rimossi.

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

    Impostazione Obbligatorio? Value
    Delimitatori Singolo carattere utilizzato per separare il contenuto dell'oggetto in fase di elaborazione. Il contenuto viene considerato come un elenco di elementi separati dai delimitatori.
    Ad esempio, "." separa la stringa in base a un punto.
    Istruzione Può essere uno dei valori seguenti:
    • Aggiungi: aggiunge string al multi-SZ risultante, se non è già presente.
    • Rimuovi: rimuove String dall'oggetto MULTI-SZ risultante.
    Stringa Stringa da aggiungere o rimuovere.

<descrizione>

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

  • Numero di occorrenze: zero o uno

  • Elementi padre:<componente>

  • Elementi figlio: nessuno

Sintassi:

<description>ComponentDescription</description>
Impostazione Obbligatorio? Value
ComponentDescription Descrizione del componente.

Nell'esempio di codice seguente viene illustrato come l'elemento <description> definisce la descrizione "Componente personalizzato":

<description>My custom component<description>

<destinationCleanup>

L'elemento< destinationCleanup> elimina gli oggetti, ad esempio 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 quando lo strumento LoadState viene eseguito nel computer di destinazione. Ovvero, questo elemento viene ignorato dallo strumento ScanState .

Importante

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

Per ogni <elemento destinationCleanup> , possono essere presenti più <elementi objectSet> . Un uso comune per questo elemento è se nel computer di origine è presente una chiave del Registro di sistema mancante, ma è comunque necessario eseguire la migrazione del componente. In questo caso, tutte le chiavi del Registro di sistema del componente possono essere eliminate prima di eseguire la migrazione delle chiavi del Registro di sistema di origine. L'eliminazione di tutte le chiavi del Registro di sistema del componente garantisce che, se nel computer di origine manca una chiave, tale chiave non sarà presente nel computer di destinazione.

  • Numero di occorrenze: Illimitato

  • Elementi padre:<regole>

  • Elementi figlio:<objectSet> (il computer di destinazione elimina tutti gli elementi figlio).

Sintassi:

<destinationCleanup filter=ScriptInvocation>
</destinationCleanup>
Impostazione Obbligatorio? Value
filter Script seguito da un numero qualsiasi 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 di inclusione. Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene 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>

<rilevare>

Anche se l'elemento <detect> è ancora supportato, Microsoft consiglia di non usare più l'elemento <detect> perché potrebbe essere deprecato nelle versioni future di USMT. Se l'elemento <detect> è deprecato, richiederebbe una riscrittura di tutti gli script che usano l'elemento <detect> . Microsoft consiglia invece di usare l'elemento <di rilevamento> . L'elemento <di rilevamento> consente istruzioni booleane complesse più chiaramente formulate

L'elemento <detect> può essere usato per determinare se il componente è presente in un sistema. Se tutti gli elementi di rilevamento> figlio< all'interno di un <elemento di rilevamento> vengono risolti in TRUE, l'elemento <detect> viene risolto in TRUE. Se gli elementi di rilevamento> figlio< vengono risolti in FALSE, l'elemento di rilevamento> padre< viene risolto in FALSE. Se non è presente alcuna <sezione di rilevamento> degli elementi, USMT presuppone che il componente sia presente.

Per ogni <elemento di rilevamento> possono essere presenti più elementi di condizione> figlio< o <objectSet>, che vengono aggiunti logicamente da un operatore OR. Se almeno una condizione> o<un elementoobjectSet> restituisce TRUE, l'elemento detect restituisce TRUE.<<>

Sintassi:

<detect name="ID" context="User|System|UserAndSystem">
</detect>
Impostazione Obbligatorio? Value
name Sì, quando <il rilevamento> è figlio di <namedElements>
No, quando <il rilevamento> è un elemento figlio da <rilevare>
Quando viene specificato l'ID , gli elementi figlio non vengono elaborati. Vengono invece elaborati tutti gli altri <elementi di rilevamento> con lo stesso nome dichiarati all'interno dell'elemento <namedElements> .
contesto No
(default = UserAndSystem)
Definisce l'ambito di questo parametro, ovvero se elaborare questo componente nel contesto dell'utente specifico, nell'intero sistema operativo o in entrambi.
L'ambito più grande possibile viene impostato dall'elemento componente. Ad esempio, se un <elemento componente> ha un contesto User e un <elemento rules> ha un contesto UserAndSystem, l'elemento <rules> si comporta come se avesse un contesto user. Se l'elemento <rules> avesse un contesto di System, funzionerebbe come se l'elemento <rules> non fosse presente.
  • Utente: valuta le variabili per ogni utente.
  • Sistema: valuta le variabili una sola volta per il sistema.
  • UserAndSystem: valuta le variabili per l'intero sistema operativo e ogni utente.

Per esempi, vedere gli esempi per <il rilevamento>.

<Rileva>

Sebbene l'elemento <detects> sia ancora supportato, Microsoft consiglia di non usare più l'elemento <detects> perché potrebbe essere deprecato nelle versioni future di USMT. Se l'elemento <detects> è deprecato, richiederebbe una riscrittura di tutti gli script che usano l'elemento <detects> . Microsoft consiglia invece di usare l'elemento <di rilevamento> se l'elemento padre è <role> o <namedElements> oppure usare l'elemento <conditions> se l'elemento padre è <regole>. L'elemento <di rilevamento> consente istruzioni booleane complesse più chiaramente formulate e l'elemento <conditions> consente la formulazione di istruzioni booleane complesse.

L'elemento <detects> è un contenitore per uno o più <elementi di rilevamento> . Se tutti gli elementi figlio <rilevano> che all'interno di un oggetto rileva> che< l'elemento viene risolto in TRUE, <il> rilevamento viene risolto in TRUE. Se uno degli elementi di rilevamento> figlio< viene risolto in FALSE, <il> rilevamento viene risolto in FALSE. Per evitare che l'elemento <rileva> l'elemento da scrivere all'interno di un componente, creare l'elemento <detects> sotto l'elemento <namedElements> e quindi farvi riferimento. Se non è presente alcuna <sezione dell'elemento> di rilevamento, USMT presuppone che il componente sia presente. I risultati di ogni <elemento rileva> vengono uniti dall'operatore OR per formare la regola usata per rilevare l'elemento padre.

Sintassi:

<detects name="ID" context="User|System|UserAndSystem">
</detects>
Impostazione Obbligatorio? Value
name Sì, quando <rileva> è un elemento figlio di <namedElements>
No, quando <rileva> è figlio di <un ruolo> o <di regole>
Quando viene specificato l'ID, non vengono elaborati elementi di rilevamento> figlio<. Vengono invece elaborati tutti gli> altri< elementi con lo stesso nome dichiarati all'interno dell'elemento <namedElements>.
contesto No
(default = UserAndSystem)
Definisce l'ambito di questo parametro: se elaborare questo componente nel contesto dell'utente specifico, nell'intero sistema operativo o in entrambi.
L'ambito più grande possibile viene impostato dall'elemento> componente<. Ad esempio, se un <elemento componente> ha un contesto User e un <elemento rules> ha un contesto UserAndSystem, l'elemento <rules> agirebbe come se avesse un contesto user. Se l'elemento <rules> avesse un contesto di System, funzionerebbe come se l'elemento <rules> non fosse presente.
  • Utente: valuta le variabili per ogni utente.
  • Sistema: valuta le variabili una sola volta per il sistema.
  • UserAndSystem: valuta le variabili per l'intero sistema operativo e ogni utente.

Il parametro di contesto viene ignorato per <rilevare gli> elementi che si trovano all'interno <degli elementi delle regole> .

L'esempio seguente proviene dal MigApp.xml file .

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

<scoperta>

L'elemento <di rilevamento> è un contenitore per un <elemento conditions> . Il risultato degli elementi della condizione> figlio<, che si trovano sotto l'elemento <conditions>, determina il risultato di questo elemento. Ad esempio, se tutti gli elementi delle condizioni> figlio< all'interno dell'elemento <di rilevamento> vengono risolti in TRUE, l'elemento <di rilevamento> viene risolto in TRUE. Se uno degli elementi delle condizioni> figlio< viene risolto in FALSE, l'elemento <di rilevamento> viene risolto in FALSE.

Inoltre, i risultati di ogni <sezione di rilevamento> all'interno dell'elemento <ruolo> vengono uniti dall'operatore OR per formare la regola di rilevamento dell'elemento padre. Ovvero, se una delle <sezioni di rilevamento> viene risolta in TRUE, l'elemento del< ruolo> viene elaborato. In caso contrario, l'elemento <del ruolo> non viene elaborato.

Usare l'elemento <di rilevamento> sotto l'elemento <namedElements> per non scrivere all'interno di un componente. Includere quindi una sezione di rilevamento> corrispondente< sotto l'elemento <role> per controllare se viene eseguita la migrazione del componente. Se non è presente una <sezione di rilevamento> per un componente, USMT presuppone che il componente sia presente.

Sintassi:

<detection name="ID" context="User|System|UserAndSystem">
</detection>
Impostazione Obbligatorio? Value
name
  • Sì, quando <il rilevamento> viene dichiarato in <namedElements>
  • Facoltativo, se dichiarato nel <ruolo>
Se dichiarato, il contenuto dell'elemento <di rilevamento> viene ignorato e viene valutato il contenuto dell'elemento <di rilevamento> con lo stesso nome dichiarato nell'elemento <namedElements> .
contesto No, default = UserAndSystem Definisce l'ambito di questo parametro: se elaborare questo componente nel contesto dell'utente specifico, nell'intero sistema operativo o in entrambi.
  • Utente: valuta il componente per ogni utente.
  • Sistema: 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 all'interno di ogni <elemento del componente> .

  • Numero di occorrenze: una volta per ogni componente

  • Elementi padre:<componente>

  • Elementi figlio: nessuno

Sintassi:

<displayName _locID="ID">ComponentName</displayName>
Impostazione Obbligatorio? Value
locID No Questo parametro è destinato all'uso interno di USMT. Non usare questo parametro.
ComponentName Nome del componente.

Ad esempio:

<displayName>Command Prompt settings</displayName>

<ambiente>

L'elemento< environment> è un contenitore per <gli elementi di variabile> in cui è possibile definire le variabili per l'uso in un file .xml. Tutte le variabili di ambiente definite in questo modo sono private. Ovvero, sono disponibili solo per i componenti figlio e il componente in cui sono stati definiti. Per due scenari di esempio, vedere Esempi.

Sintassi:

<environment name="ID" context="User|System|UserAndSystem">
</environment>
Impostazione Obbligatorio? Value
name Sì, quando <l'ambiente> è figlio di <namedElements>
No, quando <l'ambiente> è figlio di un ruolo> o<<di un componente>
Quando viene dichiarato come figlio del ruolo> o<<degli elementi del componente>, se viene dichiarato ID, USMT ignora il contenuto dell'elemento< di ambiente> e il contenuto dell'elemento di< ambiente> con lo stesso nome dichiarato nell'elemento <namedElements> viene elaborato.
contesto No
(default = UserAndSystem)
Definisce l'ambito di questo parametro: se elaborare questo componente nel contesto dell'utente specifico, nell'intero sistema operativo o in entrambi.
L'ambito più grande possibile viene impostato dall'elemento componente<>. Ad esempio, se un <elemento componente> ha un contesto User e un <elemento rules> ha un contesto UserAndSystem, l'elemento <rules> agirebbe come se avesse un contesto user. Se l'elemento <rules> avesse un contesto di System, funzionerebbe come se <le regole> non fossero presenti.
  • Utente: valuta le variabili per ogni utente.
  • Sistema: valuta le variabili una sola volta per il sistema.
  • UserAndSystem: valuta le variabili per l'intero sistema operativo e ogni utente.

Esempi

Scenario di esempio 1

In questo scenario, generare la posizione degli oggetti in fase di esecuzione a seconda della configurazione del computer di destinazione. Ad esempio, se un'applicazione scrive dati nella directory in cui è installata l'applicazione e gli utenti possono installare l'applicazione in qualsiasi punto del computer. Se l'applicazione scrive un valore hklm\software\companyname\install [path\] del Registro di sistema e quindi aggiorna questo valore con il percorso in cui è installata l'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>

È quindi possibile usare una regola di inclusione come indicato di seguito. Qualsiasi funzione script <> può essere usata per eseguire attività simili.

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

In secondo luogo, i valori del Registro di sistema possono essere filtrati in modo da contenere i dati necessari. Nell'esempio seguente viene estratta 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 è necessario eseguire la migrazione di cinque file denominati File1.txt, File2.txte così via da %SYSTEMDRIVE%\data\userdata\dir1\dir2\. Per eseguire la migrazione di questi file, la regola di inclusione> seguente< deve trovarsi 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, creare una variabile per la posizione come indicato di seguito:

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

Specificare quindi la variabile in una <regola di inclusione> come indicato di seguito:

<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 di cui non viene eseguita la migrazione, a meno che non sia presente un elemento di inclusione> più specifico< che esegue la migrazione di un oggetto. Se è presente un <elemento di inclusione> ed <esclusione> per lo stesso oggetto, l'oggetto viene incluso. Per ogni <elemento di esclusione>, possono essere presenti più elementi objectSet> figlio<.

Sintassi:

<exclude filter="ScriptInvocation">
</exclude>
Impostazione Obbligatorio? Value
filter No
(impostazione predefinita = No)
Script seguito da un numero qualsiasi 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 di inclusione. Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione.

Ad esempio, dal MigUser.xml file:

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

<excludeAttributes>

L'elemento <excludeAttributes> può essere usato per determinare quali parametri associati a un oggetto non vengono migrati. Se sono presenti conflitti tra gli <elementi includeAttributes> ed <excludeAttributes> , il modello più specifico determina i modelli di cui non viene eseguita la migrazione. Se un oggetto non dispone di un <elemento includeAttributes> o <excludeAttributes> , viene eseguita la migrazione di tutti i relativi parametri.

Sintassi:

<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">
</excludeAttributes>
Impostazione Obbligatorio? Value
Attributi Specifica gli attributi da escludere. È possibile specificare uno dei valori seguenti o entrambi. Se si specificano entrambi, devono essere separati da virgolette. Ad esempio, "Security","TimeFields":
  • La sicurezza può essere proprietaria, gruppo, dacl o sacl.
  • TimeFields può essere costituito da CreationTime, LastAccessTime e LastWrittenTime

Esempio:

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

<Estensioni>

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

Sintassi:

<extensions>
</extensions>

<estensione>

L'elemento <di estensione> può essere usato per specificare i documenti di un'estensione specifica.

  • Numero di occorrenze: illimitato

  • Elementi padre:<estensioni>

  • Elementi figlio: nessuno

Sintassi:

<extension>FilenameExtension</extension>
Impostazione Obbligatorio? Value
FilenameExtension Estensione del nome file.

Ad esempio, per eseguire la migrazione di tutti i file *.doc dal computer di origine, specificando il codice seguente nell'elemento componente<>:

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

equivale a specificare il codice seguente sotto l'elemento <rules> :

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

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

<externalProcess>

L'elemento <externalProcess> può essere usato per eseguire una riga di comando durante il processo di migrazione. Ad esempio, potrebbe essere necessario eseguire un comando dopo il completamento del processo LoadState .

Sintassi:

<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</externalProcess>
Impostazione Obbligatorio? Value
quando Indica quando deve essere eseguita la riga di comando. Questo valore può essere uno dei valori seguenti:
  • prima dell'avvio del processo di analisi.
  • scan-success dopo il completamento del processo di analisi.
  • dopo l'analisi al termine del processo di analisi, indipendentemente dal fatto che abbia avuto esito positivo o meno.
  • pre-applicare prima dell'inizio del processo di applicazione.
  • apply-success al termine del processo di applicazione.
  • dopo l'applicazione al termine del processo di applicazione, indipendentemente dal fatto che abbia avuto esito positivo o meno.

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

<icon>

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

<include>

L'elemento <include> determina cosa eseguire la migrazione, a meno che non sia presente una regola di esclusione> più specifica<. È possibile specificare uno script per essere più specifico per estendere la definizione di ciò che deve essere raccolto. Per ogni <elemento di inclusione> , possono essere presenti più <elementi objectSet> .

Sintassi:

<include filter="ScriptInvocation">
</include>
Impostazione Obbligatorio? Value
filter No.
Se questo parametro non viene specificato, vengono elaborati tutti i modelli all'interno dell'elemento objectSet> figlio<.
Script seguito da un numero qualsiasi 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 di inclusione> . Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione.

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

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

<includere> ed <escludere> funzioni di filtro

Le funzioni seguenti restituiscono un valore booleano. Possono essere usati per eseguire la migrazione di determinati oggetti in base a quando vengono soddisfatte determinate condizioni.

  • AnswerNo

    Questo filtro restituisce sempre FALSE.

    Sintassi: AnswerNo ()

  • CompareStringContent

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

    Impostazione Obbligatorio? Value
    StringContent Stringa su cui eseguire il controllo.
    CompareType Stringa. Usare uno dei valori seguenti:
    • Uguale (senza distinzione tra maiuscole e minuscole). La funzione restituisce TRUE se la rappresentazione di stringa dell'oggetto corrente elaborato dal motore di migrazione è identica a StringContent.
    • NULLo qualsiasi altro valore. La funzione restituisce TRUE se la rappresentazione di stringa dell'oggetto corrente elaborato dal motore di migrazione non corrisponde StringContenta .
  • IgnoreIrrelevantLinks

    Questo filtro consente di escludere i file .lnk che puntano a un oggetto non valido nel computer di destinazione. Lo screening avviene nel computer di destinazione, quindi tutti i file .lnk vengono salvati nell'archivio durante ScanState. Vengono quindi schermati quando viene eseguito lo strumento LoadState .

    Sintassi: IgnoreIrrelevantLinks ()

    Ad esempio:

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

    Questa funzione può essere usata per raccogliere gli oggetti specificati dal computer di origine, ma non per eseguire la migrazione degli oggetti al computer di destinazione. Quando viene eseguita con lo strumento ScanState , questa funzione restituisce TRUE. Quando viene eseguita con lo strumento LoadState , questa funzione restituisce FALSE. Questa funzione può essere usata per controllare il valore di un oggetto nel computer di destinazione, ma non c'è alcuna intenzione di eseguire la migrazione dell'oggetto alla destinazione.

    Sintassi: NeverRestore()

    Nell'esempio seguente, HKCU\Control Panel\International [Locale] è incluso nell'archivio, ma non viene migrato nel computer di destinazione:

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

<includeAttributes>

L'elemento <includeAttributes> può essere usato per determinare se alcuni parametri associati a un oggetto vengono migrati insieme all'oggetto stesso. In caso di conflitti tra gli <elementi includeAttributes> ed <excludeAttributes> , il modello più specifico determina quali parametri vengono migrati. Se un oggetto non dispone di un <elemento includeAttributes> o <excludeAttributes> , viene eseguita la migrazione di tutti i relativi parametri.

Sintassi:

<includeAttributes attributes="Security|TimeFields|Security,TimeFields">
</includeAttributes>
Impostazione Obbligatorio? Value
Attributi Specifica gli attributi da includere in un oggetto migrato. È possibile specificare uno dei valori seguenti o entrambi. Se si specificano entrambi, devono essere separati da virgolette. Ad esempio, "Security","TimeFields":
  • La sicurezza può essere uno dei valori seguenti:
    • Proprietario: proprietario dell'oggetto (SID).
    • Gruppo: gruppo primario per l'oggetto (SID).
    • DACL (elenco di controllo di accesso discrezionale): elenco di controllo di accesso controllato dal proprietario di un oggetto e che specifica l'accesso che determinati utenti o gruppi possono avere all'oggetto.
    • SACL (elenco di controllo di accesso di sistema): ACL 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 è controllata da un privilegio in genere gestito solo dagli amministratori di sistema.
  • TimeFields può essere uno dei valori seguenti:
    • CreationTime: specifica quando è stato creato il file o la directory.
    • LastAccessTime: specifica quando viene eseguita l'ultima lettura, scrittura o esecuzione del file eseguibile.
    • LastWrittenTime: specifica quando il file viene scritto, troncato o sovrascritto per l'ultima volta.

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

<biblioteca>

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

<ubicazione>

L'elemento <location> definisce la posizione dell'elemento <oggetto> .

  • Numero di occorrenze: una volta per ogni <oggetto>

  • Elementi padre:<oggetto>

  • Elementi figlio:<script>

Sintassi:

<location type="typeID">ObjectLocation</location>
Impostazione Obbligatorio? Valore
tipo typeID può essere Registro di sistema o File.
ObjectLocation Posizione dell'oggetto.

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

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

<locationModify>

L'elemento <locationModify> può essere usato per modificare la posizione e il nome di un oggetto prima della migrazione dell'oggetto al computer di destinazione. L'elemento< locationModify> viene elaborato solo quando lo strumento LoadState viene eseguito nel computer di destinazione. In altre parole, questo elemento viene ignorato dallo strumento ScanState . L'elemento< locationModify> crea la cartella appropriata nel computer di destinazione, se non esiste già.

Numero di occorrenze: Illimitato

Sintassi:

<locationModify script="ScriptInvocation">
</locationModify>
Impostazione Obbligatorio? Value
copione Script seguito da un numero qualsiasi 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 di inclusione. Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione.

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

<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 la posizione degli oggetti durante la migrazione quando si usa l'elemento <locationModify> . Queste funzioni vengono chiamate per ogni oggetto che l'elemento objectSet> padre< enumera. L'elemento< locationModify> crea la cartella appropriata nel computer di destinazione, se non esiste già.

  • ExactMove

    La funzione ExactMove sposta tutti gli oggetti corrispondenti dall'elemento objectSet> padre< nell'oggetto ObjectEncodedLocation specificato. Questa funzione può essere usata per 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 vengono scritti nel nodo senza sottodirectory. Se il percorso di destinazione è un foglia, il motore di migrazione esegue la migrazione di tutti gli oggetti di origine corrispondenti nella stessa posizione. Se si verifica una collisione, si applicano gli algoritmi di collisione normali.

    Sintassi: ExactMove(ObjectEncodedLocation)

    Impostazione Obbligatorio? Value
    ObjectEncodedLocation 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>
    
  • Sposta

    La funzione Move sposta gli oggetti in una posizione diversa nel computer di destinazione. Questa funzione crea inoltre sottodirectory superiori al CSIDL più lungo nel nome dell'oggetto di origine.

    Sintassi: Move(DestinationRoot)

    Impostazione Obbligatorio? Value
    DestinationRoot Posizione in cui vengono spostati gli oggetti di origine. Se necessario, questa funzione crea tutte le sottodirectory superiori al CSIDL più lungo nel nome dell'oggetto di origine.
  • RelativeMove

    La funzione RelativeMove può essere usata per raccogliere e spostare dati. Le variabili di ambiente possono essere usate nelle radici di origine e di destinazione, ma possono essere definite in modo diverso nei computer di origine e di destinazione.

    Sintassi: RelativeMove(SourceRoot,DestinationRoot)

    Impostazione Obbligatorio? Value
    SourceRoot Posizione da cui vengono spostati gli oggetti. Gli oggetti di origine enumerati dall'elemento objectSet> padre< che non si trovano in questa posizione non vengono spostati.
    DestinationRoot Posizione in cui vengono spostati gli oggetti di origine nel computer di destinazione. Se necessario, questa funzione crea tutte le sottodirectory precedenti 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 elemento è un elemento USMT interno. Non usare questo elemento.

<fabbricante>

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

  • Numero di occorrenze: zero o uno

  • Elementi padre:<componente>

  • Elementi figlio: nessuno

Sintassi:

<manufacturer>Name</manufacturer>
Impostazione Obbligatorio? Value
Nome Nome del produttore per il componente.

<fondersi>

L'elemento <merge> determina cosa accade quando si verifica una collisione. Una collisione si verifica quando un oggetto di cui viene eseguita la migrazione è già presente nel computer di destinazione. Se questo elemento non viene specificato, il comportamento predefinito per il Registro di sistema è che l'oggetto di origine sovrascriva l'oggetto di destinazione. Il comportamento predefinito per i file consiste nel rinominare il file di origine in OriginalFileName(1).OriginalExtension. Questo elemento specifica solo le operazioni da eseguire quando si verifica una collisione. Non include oggetti. Pertanto, per la migrazione degli oggetti, <è necessario specificare regole di inclusione> insieme all'elemento <di merge> . Quando un oggetto viene elaborato e viene rilevata una collisione, USMT seleziona la regola di unione più specifica. Applica quindi la regola per risolvere il conflitto. Ad esempio, se una <regola di merge> è impostata su <sourcePriority> e una <regola di merge> è impostata su <destinationPriority>, USMT userà la <regola destinationPriority> perché è la più specifica.C:\subfolder\* [*]C:\* [*]

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

  • Numero di occorrenze: Illimitato

  • Elementi padre:<regole>

  • Elemento figlio obbligatorio:<objectSet>

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

Sintassi:

<merge script="ScriptInvocation">
</merge>
Impostazione Obbligatorio? Value
copione Script seguito da un numero qualsiasi 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 di inclusione> . Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione.

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

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

Queste funzioni controllano il modo in cui vengono risolte le collisioni.

  • DestinationPriority

    Specifica di mantenere l'oggetto presente 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\16.0\PhotoDraw\ [MyPictures]</pattern>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [PicturesPath]</pattern>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [AdditionalPlugInPath]</pattern>
         </objectSet>
    </merge>
    
  • FindFilePlaceByPattern

    La funzione FindFilePlaceByPattern salva i file con un contatore di incremento quando si verifica una collisione. Si tratta di una stringa che contiene uno di ogni costrutto: <F>, <E>, <N> in qualsiasi ordine.

    Sintassi: FindFilePlaceByPattern(FilePattern)

    Impostazione Obbligatorio? Value
    FilePattern
    • <F> viene sostituito dal nome del file originale.
    • <N> viene sostituito da un contatore di incremento fino a quando non si verifica alcuna collisione con gli oggetti nel computer di destinazione.
    • <E> viene sostituito dall'estensione del nome file originale.

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

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

    Sintassi: NewestVersion(VersionTag)

    Impostazione Obbligatorio? Value
    VersionTag Campo della versione selezionato. Questo campo può essere FileVersion o ProductVersion. Il file con la versione versionTag più recente determina quali conflitti vengono 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, il file nella destinazione rimane.
  • HigherValue()

    Questa funzione può essere usata per unire i valori del Registro di sistema. I valori del Registro di sistema vengono valutati come valori numerici e quello con il valore superiore determina quali valori del Registro di sistema vengono uniti.

  • LowerValue()

    Questa funzione può essere usata per unire i valori del Registro di sistema. I valori del Registro di sistema vengono valutati come valori numerici e quello con il valore inferiore determina quali valori del Registro di sistema vengono uniti.

  • SourcePriority

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

    Ad esempio:

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

<migrazione>

L'elemento <di migrazione> è il singolo elemento radice di un file di.xml di migrazione ed è obbligatorio. Ogni file.xml deve avere un URL di migrazione univoco. L'urlid di ogni file specificato nella riga di comando deve essere univoco. Gli urlid devono essere univoci perché USMT usa l'urlid per definire i componenti all'interno del file.

Sintassi:

<migration urlid="*UrlID/*Name">
</migration>
Impostazione Obbligatorio? Value
urlid UrlID è un identificatore di stringa che identifica in modo univoco questo file .xml . Questo parametro deve essere un nome senza due punti, come definito dalla specifica degli spazi dei nomi XML. Ogni file.xml di migrazione deve avere un urlid univoco. Se due file .xml migrazione hanno lo stesso urlid, il secondo file.xml specificato nella riga di comando non viene elaborato. Per altre informazioni sugli spazi dei nomi XML, vedere Usare spazi dei nomi XML.
Nome No Sebbene non sia obbligatorio, è consigliabile usare il nome del file .xml .

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

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

MigXMLHelper.FileProperties

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

Funzione helper MigXMLHelper.FileProperties (proprietà, operatore, valueToCompare)
Proprietà filesize, dateCreated, dateModified, dateAccessed
Operatore range, neq, lte, lt, eq, gte, gte
valueToCompare Valore confrontato. Ad esempio:
Data: "2023/05/15-2020/05/17", "2023/05/15"
Dimensioni: numero con B, KB, MB o GB alla fine. "5 GB", "1 KB-1 MB"
<component context="System"  type="Application">
<displayName>File_size</displayName>
<role role="Data">

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

<namedElements>

L'elemento <namedElements> può essere usato per definire elementi denominati. Questi elementi possono essere usati in qualsiasi componente nel file .xml . Per un esempio di come usare questo elemento, vedere il MigApp.xml file .

Sintassi:

<namedElements>
</namedElements>

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

<oggetto>

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

Sintassi:

<object>
</object>

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

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

<objectSet>

L'elemento <objectSet> contiene un elenco di modelli di oggetto, ad esempio percorsi di file, percorsi del Registro di sistema e così via. Tutti gli elementi delle condizioni> figlio< vengono valutati per primi. Se tutti gli elementi delle condizioni> figlio< restituiscono FALSE, l'elemento <objectSet> restituisce un set vuoto. Per ogni elemento padre, possono essere presenti solo più <elementi objectSet> .

Sintassi:

<objectSet>
</objectSet>

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

<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 elemento è un elemento USMT interno. Non usare questo elemento.

<Percorsi>

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

<motivo>

Questo elemento può essere usato per specificare più oggetti. È possibile usare più <elementi pattern> per ogni <elemento objectSet> e vengono combinati. Se si specificano i file, Microsoft consiglia di usare GenerateDrivePatterns invece con <lo script> . GenerateDrivePatterns è fondamentalmente uguale a una <regola di modello> , senza la specifica della lettera di unità. Ad esempio, le due righe di codice seguenti sono simili:

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

  • Elementi padre:<objectSet>

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

Sintassi:

<pattern type="typeID">Path [object]</pattern>
Impostazione Obbligatorio? Valore
tipo typeID può essere Registry, File o Ini. Se typeId è Ini, non è consentito uno spazio tra Path e l'oggetto . Ad esempio, il formato seguente è corretto quando type="Ini":
<pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern>
Percorso [oggetto] Modello di percorso file o registro valido, seguito da almeno uno spazio, seguito da parentesi quadre [] che contengono l'oggetto di cui eseguire la migrazione.
  • Il percorso può contenere l'asterisco (*) carattere jolly o può essere una variabile di ambiente riconosciuta. Il punto interrogativo non può essere usato come carattere jolly. HKCU e HKLM può essere usato per fare riferimento rispettivamente a HKEY_CURRENT_USER e HKEY_LOCAL_MACHINE .
  • L'oggetto può contenere il carattere jolly asterisco (*). Tuttavia, il punto interrogativo non può essere usato come carattere jolly. Ad esempio:
    C:\Folder\ [*] enumera tutti i file in C:\Folder ma non le sottocartelle di C:\Folder.
    C:\Folder* [*] enumera tutti i file e le sottocartelle di C:\Folder.
    C:\Folder\ [*.mp3] enumera tutti i .mp3 file in C:\Folder.
    C:\Folder\ [Sample.doc] enumera solo il Sample.doc file che si trova in C:\Folder.
    Nota
    Se si esegue la migrazione di un file con un carattere di parentesi quadre ([ o ]) nel nome del file, è necessario inserire un carattere carota (^) direttamente prima che la parentesi quadre sia valida. Ad esempio, se è presente un file denominato "file].txt", <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> è necessario specificare anziché <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 C:\EngineeringDrafts cartella e di tutte le sottocartelle dall'unità C:

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

    Reindirizzare file e impostazioni

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

    <pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
    
  • Per eseguire la migrazione del Sample.doc file da dove esiste nel modello di utilizzo dell'unità C: nel modo seguente. Se nell'unità C: sono presenti più file con lo stesso nome, viene eseguita la migrazione di tutti questi file.

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

<elaborazione>

Questo elemento può essere usato per eseguire uno script durante un punto specifico all'interno del processo di migrazione. I valori restituiti non sono previsti dagli script specificati. Se sono presenti valori restituiti, vengono ignorati.

  • Numero di occorrenze: illimitato

  • Elementi padre:<regole>

  • Elemento figlio obbligatorio:<script>

Sintassi:

<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</processing>
Impostazione Obbligatorio? Value
quando Indica quando eseguire lo script. Questo valore può essere uno dei valori seguenti:
  • pre-analisi significa prima dell'inizio del processo di analisi.
  • scan-success significa al termine del processo di analisi.
  • post-analisi significa al termine del processo di analisi, indipendentemente dal fatto che abbia avuto esito positivo o meno.
  • pre-applicare significa prima dell'inizio del processo di applicazione.
  • apply-success significa al termine del processo di applicazione.
  • post-apply significa al termine del processo di applicazione, indipendentemente dal fatto che abbia avuto esito positivo o meno.

<plug-in>

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

<ruolo>

L'elemento <role> è obbligatorio in un file di.xml personalizzato. Quando si specifica l'elemento <del ruolo> , è possibile creare un componente concreto. Il componente è definito dai parametri specificati a livello di <componente> e con il ruolo specificato qui.

Sintassi:

<role role="Container|Binaries|Settings|Data">
</role>
Impostazione Obbligatorio? Value
ruolo Definisce il ruolo per il componente. Il ruolo può essere uno dei seguenti:
  • Contenitore
  • File binari
  • Impostazioni
  • Dati
È possibile specificare uno degli elementi seguenti:
  1. Fino a tre <elementi ruolo> all'interno di un <componente> : un elemento ruolo "Binaries", un elemento ruolo "Settings" e un elemento ruolo "Data". Questi parametri non modificano il comportamento di migrazione. L'unico scopo è quello di classificare le impostazioni di cui viene eseguita la migrazione. Questi <elementi del ruolo> possono essere annidati, ma ogni elemento annidato deve essere dello stesso parametro del ruolo.
  2. Un elemento ruolo> "Container"< all'interno di un <elemento componente>. In questo caso, non è possibile specificare gli elementi delle regole> figlio<, ma solo gli altri <elementi del componente>. Ogni elemento componente> figlio< deve avere lo stesso tipo di quello dell'elemento componente> padre<. Ad esempio:
              
              
              <component context="UserAndSystem" type="Application">
<displayName _locID="migapp.msoffice2016">Microsoft Office 2016</displayName>
<environment name="GlobalEnv" />
<role role="Container">
<detection name="AnyOffice2016Version" />
<detection name="Word2016" />
<!--
Impostazioni comuni di Office 2016
-->
<component context="UserAndSystem" type="Application">

L'esempio seguente proviene dal MigUser.xml file . Per altri esempi, vedere il MigApp.xml file:

<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 di.xml personalizzato. Questo elemento contiene regole eseguite durante la migrazione se l'elemento del componente> padre< è selezionato, a meno che l'elemento condizione> figlio<, se presente, restituisca FALSE. Per ogni <elemento di regole>, possono essere presenti più elementi di regole> figlio<.

Sintassi:

<rules name="ID" context="User|System|UserAndSystem">
</rules>
Impostazione Obbligatorio? Value
name Sì, quando <le regole> sono figlio di <namedElements>
No, quando <le regole> sono figlio di qualsiasi altro elemento
Quando viene specificato l'ID , gli elementi figlio non vengono elaborati. Vengono invece elaborati tutti gli altri <elementi delle regole> con lo stesso nome dichiarati all'interno <di namedElements> .
contesto No
(default = UserAndSystem)
Definisce l'ambito di questo parametro: se elaborare questo componente nel contesto dell'utente specifico, nell'intero sistema operativo o in entrambi.
L'ambito più grande possibile viene impostato dall'elemento componente. Ad esempio, se un <elemento componente> ha un contesto User e un <elemento rules> ha un contesto UserAndSystem, l'elemento <rules> agirebbe come se avesse un contesto user. Se <le regole> avessero un contesto di sistema, funzionerebbero come se <le regole> non fossero presenti.
  • Utente: valuta le variabili per ogni utente.
  • Sistema: valuta le variabili una sola volta per il sistema.
  • UserAndSystem: valuta le variabili per l'intero sistema operativo e ogni utente.

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

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

<copione>

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

Numero di occorrenze: Una volta per <variabile>, illimitata per <objectSet> ed <elaborazione>

Elementi padre:<objectSet>, <variabile>, <elaborazione>

Elementi figlio: nessuno

Sintassi e funzioni helper:

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

  • GetStringContent può essere usato quando <lo script> si trova all'interno di <una variabile>.

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

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

  • È possibile usare GenerateUserPatterns quando <lo script> si trova all'interno di< objectSet>.

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

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

  • GenerateDrivePatterns può essere usato quando <lo script> si trova all'interno di< objectSet>.

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

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

  • Gli script simple executing possono essere usati con <elementi script> inclusi negli <elementi di elaborazione> : AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM.

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

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

Impostazione Obbligatorio? Value
ScriptWithArguments Script seguito da un numero qualsiasi 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 di inclusione> . Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione.
Il valore restituito richiesto dallo <script> dipende dall'elemento padre.
  • Se usato all'interno <di una variabile>, il valore restituito deve essere una stringa.
  • Se usato all'interno <di objectSet>, il valore restituito deve essere una matrice bidimensionale di stringhe.
  • Se usato all'interno <della posizione>, il valore restituito deve essere una posizione valida allineata all'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 si esegue la migrazione di un file con un carattere parentesi quadre ([ o ]) nel nome del file, inserire il carattere carota (^) direttamente prima della parentesi graffa affinché sia valido. Ad esempio, se è presente un file denominato "file].txt", 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, usare <lo script> come indicato di seguito. Se esistono più file con lo stesso nome, viene eseguita la migrazione di tutti questi file.

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

Per altri esempi su come usare questo elemento, vedere Escludere file e impostazioni, reindirizzare file e impostazioni ed esempi XML personalizzati.

<Funzioni script>

Le funzioni seguenti possono essere usate con l'elemento <script>

Funzioni di generazione di stringhe e modelli

Queste funzioni restituiscono una stringa o un modello.

  • GetStringContent

    GetStringContent può essere usato con <elementi script> all'interno <di elementi variabili> . Se possibile, questa funzione restituisce la rappresentazione di stringa dell'oggetto specificato. In caso contrario, restituisce NULL. Per gli oggetti file questa funzione restituisce sempre NULL.

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

    Impostazione Obbligatorio? Value
    ObjectType Tipo di oggetto. Può essere Registry o Ini (per un file .ini ).
    EncodedLocationPattern
    • Se il tipo di oggetto è Registry, EncodedLocationPattern deve essere un percorso del Registro di sistema valido. Ad esempio: HKLM\SOFTWARE\MyKey[].
    • Se il tipo di oggetto è Ini, EncodedLocationPattern deve essere nel formato seguente:
      IniFilePath|SectionName[SettingName]
    ExpandContent No (default=TRUE) Può essere TRUE o FALSE. Se FALSE, la posizione specificata non viene espansa prima della restituzione.

    Ad esempio:

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

    La GenerateDrivePatterns funzione esegue l'iterazione di tutte le unità disponibili e seleziona quelle che corrispondono al tipo di unità richiesto. Quindi concatena le unità selezionate con la parte finale di PatternSegment per formare un modello di file con codifica completa. Ad esempio, se PatternSegment è Path [file.txt] e DriveType è Fixed, la funzione genera C:\Path [file.txt]e altri modelli se sono presenti unità fisse diverse da C:. Non è possibile specificare variabili di ambiente con questa funzione. GenerateDrivePatterns può essere usato con <gli elementi script> che si trovano all'interno <di objectSet> che si trovano all'interno <di include>/<exclude>.

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

    Impostazione Obbligatorio? Value
    PatternSegment Suffisso di un modello codificato. Il valore viene concatenato con una specifica di unità, ad esempio "c:", per formare un modello di file codificato completo. Ad esempio, "* [*.doc]". PatternSegment non può essere una variabile di ambiente.
    DriveType Tipo di unità per cui devono essere generati i modelli. È possibile specificare uno degli elementi seguenti:
    • Risolto
    • CDROM
    • Rimovibile
    • Remoto

    Vedere l'ultimo componente nel MigUser.xml file per un esempio di questo elemento.

  • GenerateUserPatterns

    La GenerateUserPatterns funzione scorre tutti gli utenti di cui viene eseguita la migrazione, escludendo l'utente attualmente elaborato se <ProcessCurrentUser> è FALSE ed espande il modello specificato nel contesto di ogni utente. Ad esempio, se gli utenti A, B e C hanno profili in C:\Users, chiamando GenerateUserPattens('File','%userprofile% [*.doc]','TRUE'), la funzione helper genera i tre modelli seguenti:

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

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

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

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

    Impostazione Obbligatorio? Value
    ObjectType Definisce il tipo di oggetto. Può essere File o Registro di sistema.
    EncodedLocationPattern Modello di posizione. Le variabili di ambiente sono consentite.
    ProcessCurrentUser Può essere TRUE o FALSE. Indica se i modelli devono essere generati per l'utente corrente.

Esempio:

Se GenerateUserPattens('File','%userprofile% [*.doc]','FALSE') viene chiamato mentre USMT elabora l'utente A, questa funzione genera solo modelli per gli utenti B e C. Questa funzione helper può essere usata per compilare regole complesse. Ad esempio, per eseguire la migrazione di tutti i .doc file dal computer di origine, ma se l'utente X non viene migrato, non eseguire la .doc migrazione di alcun file dal profilo dell'utente X.

L'esempio seguente è il codice di esempio per questo scenario. Il primo <elemento rules> esegue la migrazione di tutti i .doc file nel computer di origine, ad eccezione di quelli all'interno C:\Usersdi . I secondi <elementi delle regole> eseguono la migrazione di tutti i .doc file, C:\Users ad eccezione dei .doc file nei profili degli altri utenti. Poiché il secondo <elemento regole> viene elaborato in ogni contesto utente migrato, il risultato finale è il 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

La MigXmlHelper.GenerateDocPatterns funzione helper richiama il finder di documenti per analizzare il sistema alla ricerca di tutti i file di cui è possibile eseguire la migrazione. Può essere richiamato nel contesto di sistema o utente per mettere a fuoco l'analisi.

Impostazione Obbligatorio? Value
ScanProgramFiles No (impostazione predefinita = FALSE) Può essere TRUE o FALSE. Il parametro ScanProgramFiles determina se il finder documenti analizza o meno la directory Programmi per raccogliere estensioni di file registrate per applicazioni note. Ad esempio, se impostato su TRUE , individua ed esegue la migrazione di.jpg file nella directory Photoshop, se .jpg è un'estensione di file registrata in Photoshop.
IncludePatterns No (impostazione predefinita = TRUE) Può essere TRUE o FALSE. TRUE genera modelli di inclusione e può essere aggiunto sotto l'elemento <di inclusione> . FALSE genera modelli di esclusione e può essere aggiunto sotto l'elemento <exclude> .
SystemDrive No (impostazione predefinita = FALSE) Può essere TRUE o FALSE. Se TRUE, limita tutti i modelli 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>

Esecuzione semplice di script

Gli script seguenti non hanno alcun valore restituito. Gli errori seguenti possono essere usati con <gli elementi script> inclusi negli <elementi di elaborazione>

  • 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 converte il file nel nome del file breve e quindi aggiorna il valore del Registro di sistema.

  • KillExplorer(). Arresta Explorer.exe per il contesto utente corrente. L'arresto Explorer.exe consente l'accesso a determinate chiavi e file che vengono mantenuti aperti quando è in esecuzione Explorer.exe. Ad esempio:

    <processing when="pre-apply">
      <script>MigXmlHelper.KillExplorer()</script>
    </processing>
    
  • RegisterFonts(FileEncodedLocation). Registra il tipo di carattere specificato o 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 tutte le directory vuote che corrispondono 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 presenti, vengono passati all'API StartService. Per altre informazioni, vedere l'articolo Funzione StartServiceA (winsvc.h).

  • 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 Start dal Registro di sistema (HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) dopo che il valore è stato modificato dal motore di migrazione e quindi sincronizza Service Control Manager (SCM) con il nuovo valore.

<Testo>

L'elemento <di testo> può essere usato per impostare un valore per qualsiasi variabile di ambiente all'interno di uno dei file di.xml di migrazione.

Sintassi:

<text>NormalText</text>
Impostazione Valore
NormalText Questo testo viene 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 dalle altre regole di inclusione in qualsiasi file di.xml di migrazione o nel Config.xml file. Gli oggetti dichiarati qui non vengono migrati perché questo elemento ha la precedenza su tutte le altre regole. Ad esempio, anche se sono presenti regole di inclusione> esplicite< per includere .mp3 i file, se sono esclusi con questa opzione, non viene eseguita la migrazione.

Usare questo elemento per escludere tutti i .mp3 file dal computer di origine. In alternativa, se si esegue C:\UserData il backup usando un altro metodo, l'intera cartella può essere esclusa dalla migrazione. Usare questo elemento con cautela. Se un'applicazione necessita di un file escluso, l'applicazione potrebbe non funzionare correttamente nel computer di destinazione.

Sintassi:

<unconditionalExclude></unconditionalExclude>

Il file .xml seguente esclude tutti i .mp3 file dalla migrazione. Per altri esempi su come usare questo elemento, vedere Exclude Files and Settings (Escludi file e impostazioni).

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

<variabile>

L'elemento <variabile> è obbligatorio in un elemento di <ambiente> . Per ogni <elemento variabile> deve essere presente un <oggettoSet>, <uno script> o <un elemento di testo> . Il contenuto dell'elemento <variabile> assegna un valore di testo alla variabile di ambiente. Questo elemento dispone delle tre opzioni seguenti:

  1. Se l'elemento <variabile> contiene un <elemento di testo> , il valore dell'elemento variabile è il valore dell'elemento <di testo> .

  2. Se l'elemento <variabile> contiene un <elemento script> e la chiamata dello script produce una stringa non Null, il valore dell'elemento <variabile> è il risultato della chiamata allo script.

  3. Se l'elemento <variabile> contiene un <elemento objectSet> e la valutazione dell'elemento <objectSet> produce almeno un modello di oggetto, il valore del primo oggetto che corrisponde al modello di oggetto risultante è il valore dell'elemento variabile.

Sintassi:

<variable name="ID" remap=TRUE|FALSE>
</variable>
Impostazione Obbligatorio? Value
name ID è un valore stringa che corrisponde al nome utilizzato per fare riferimento alla variabile di ambiente. Microsoft consiglia di iniziare l'ID con il nome del componente per evitare conflitti con lo spazio dei nomi. Ad esempio, se il nome del componente è MyComponent e si desidera specificare una variabile che sia il percorso di installazione del componente. MyComponent.InstallPath
rimappare No, default = FALSE Specifica se valutare questa variabile di ambiente come variabile di ambiente di nuovo mapping. Gli oggetti che si trovano in un percorso sottostante al valore di questa variabile di ambiente vengono spostati automaticamente nel punto in cui la variabile di ambiente punta nel computer di destinazione.

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

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

  • Elementi padre:<componente>

  • Elementi figlio: nessuno

Sintassi:

<version>ComponentVersion</version>
Impostazione Obbligatorio? Value
ComponentVersion Versione del componente, che può contenere modelli.

Ad esempio:

<version>4.*</version>

<windowsObjects>

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

Appendice

Specifica delle posizioni

  • Specifica di percorsi codificati. Il percorso codificato usato in tutte le funzioni helper è una rappresentazione di stringa non ambigua per il nome di un oggetto. La posizione codificata è composta dalla parte del nodo, facoltativamente seguita dalla foglia racchiusa tra parentesi quadre. Questo formato distingue chiaramente tra nodi e foglie.

    Ad esempio, specificare il file C:\Windows\Notepad.exe come segue: c:\Windows[Notepad.exe]. Analogamente, specificare la directory C:\Windows\System32 come segue: c:\Windows\System32. Si noti l'assenza del [] costrutto.

    La rappresentazione del Registro di sistema è simile. Il valore predefinito di una chiave del Registro di sistema è rappresentato come costrutto vuoto [] . Ad esempio, il valore predefinito per la chiave del HKLM\SOFTWARE\MyKey Registro di sistema è HKLM\SOFTWARE\MyKey[].

  • Specifica dei modelli di posizione. La specifica di un modello di posizione è simile a quella di una posizione effettiva. L'eccezione è che sia il nodo che la parte foglia accettano modelli. Tuttavia, un modello dal nodo non si estende alla foglia.

    Ad esempio, il modello c:\Windows\* corrisponde alla directory di Windows e a tutte le sottodirectory, ma non corrisponde a nessuno dei file in tali directory. Per trovare una corrispondenza anche con i file, c:\Windows\*[*] è necessario specificare.

Funzioni USMT interne

Le funzioni seguenti sono destinate solo all'uso interno di USMT. Non usarli in un file .xml .

  • AntiAlias

  • ConvertScreenSaver

  • ConvertShowIEOnDesktop

  • ConvertToOfficeLangID

  • MigrateActiveDesktop

  • MigrateAppearanceUPM

  • MigrateDisplayCS

  • MigrateDisplaySS

  • MigrateIEAutoSearch

  • MigrateMouseUPM

  • MigrateSoundSysTray

  • MigrateTaskBarss

  • SetPstPathInMapiStruc

Tag di versione validi

I tag di versione seguenti possono essere usati con varie funzioni helper:

  • "CompanyName"

  • "FileDescription"

  • "FileVersion"

  • "InternalName"

  • "LegalCopyright"

  • "OriginalFilename"

  • "ProductName"

  • "ProductVersion"

I tag di versione seguenti contengono valori che possono essere confrontati:

  • "FileVersion"

  • "ProductVersion"