

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Modules d'action pris en charge par le gestionnaire de AWSTOE composants
<a name="toe-action-modules"></a>

Les services de création d'images, tels que EC2 Image Builder, AWSTOE utilisent des modules d'action pour configurer les instances EC2 utilisées pour créer et tester des images de machine personnalisées. Cette section décrit les fonctionnalités des modules d' AWSTOE action couramment utilisés et explique comment les configurer, y compris des exemples.

Les composants sont créés à partir de documents YAML en texte brut. Pour plus d'informations sur la syntaxe des documents, consultez[Utiliser le cadre de documentation des AWSTOE composants pour les composants personnalisés](toe-use-documents.md).

**Note**  
Tous les modules d'action utilisent le même compte que l'agent Systems Manager lorsqu'ils s'exécutent, sous Linux et `NT Authority\SYSTEM` sous Windows. `root`

La référence croisée suivante classe les modules d'action en fonction du type d'actions qu'ils exécutent.

 

**Exécution générale**
+ [Assert (Linux, Windows, macOS)](#action-modules-assertion)
+ [ExecuteBash (Linux, macOS)](#action-modules-executebash)
+ [ExecuteBinary (Linux, Windows, macOS)](#action-modules-executebinary)
+ [ExecuteDocument (Linux, Windows, macOS)](#action-modules-executedocument)
+ [ExecutePowerShell (Fenêtres)](#action-modules-executepowershell)

 

**Téléchargement et envoi de fichiers**
+ [Téléchargement de S3 (Linux, Windows, macOS)](#action-modules-s3download)
+ [Téléchargement en mode S3 (Linux, Windows, macOS)](#action-modules-s3upload)
+ [WebDownload (Linux, Windows, macOS)](#action-modules-webdownload)

 

**Opérations du système de fichiers**
+ [AppendFile (Linux, Windows, macOS)](#action-modules-appendfile)
+ [CopyFile (Linux, Windows, macOS)](#action-modules-copyfile)
+ [CopyFolder (Linux, Windows, macOS)](#action-modules-copyfolder)
+ [CreateFile (Linux, Windows, macOS)](#action-modules-createfile)
+ [CreateFolder (Linux, Windows, macOS)](#action-modules-createfolder)
+ [CreateSymlink (Linux, Windows, macOS)](#action-modules-createsymlink)
+ [DeleteFile (Linux, Windows, macOS)](#action-modules-deletefile)
+ [DeleteFolder (Linux, Windows, macOS)](#action-modules-deletefolder)
+ [ListFiles (Linux, Windows, macOS)](#action-modules-listfiles)
+ [MoveFile (Linux, Windows, macOS)](#action-modules-movefile)
+ [MoveFolder (Linux, Windows, macOS)](#action-modules-movefolder)
+ [ReadFile (Linux, Windows, macOS)](#action-modules-readfile)
+ [SetFileEncoding (Linux, Windows, macOS)](#action-modules-setfileencoding)
+ [SetFileOwner (Linux, Windows, macOS)](#action-modules-setfileowner)
+ [SetFolderOwner (Linux, Windows, macOS)](#action-modules-setfolderowner)
+ [SetFilePermissions (Linux, Windows, macOS)](#action-modules-setfilepermissions)
+ [SetFolderPermissions (Linux, Windows, macOS)](#action-modules-setfolderpermissions)

 

**Actions d'installation du logiciel**
+ [Installez MSI (Windows)](#action-modules-install-msi)
+ [Désinstallez MSI (Windows)](#action-modules-uninstall-msi)

 

**Actions du système**
+ [Redémarrer (Linux, Windows)](#action-modules-reboot)
+ [SetRegistry (Fenêtres)](#action-modules-setregistry)
+ [Mettre à jour le système d'exploitation (Linux, Windows)](#action-modules-updateos)

## Modules d'exécution généraux
<a name="action-modules-general-execution"></a>

La section suivante contient des détails sur les modules d'action qui exécutent des commandes et contrôlent le flux de travail d'exécution.

**Topics**
+ [Assert (Linux, Windows, macOS)](#action-modules-assertion)
+ [ExecuteBash (Linux, macOS)](#action-modules-executebash)
+ [ExecuteBinary (Linux, Windows, macOS)](#action-modules-executebinary)
+ [ExecuteDocument (Linux, Windows, macOS)](#action-modules-executedocument)
+ [ExecutePowerShell (Fenêtres)](#action-modules-executepowershell)

### Assert (Linux, Windows, macOS)
<a name="action-modules-assertion"></a>

Le module **d'action Assert** effectue des comparaisons de valeurs en utilisant [Opérateurs de comparaison](toe-comparison-operators.md) ou en [Opérateurs logiques](toe-logical-operators.md) tant qu'entrée. Le résultat de l'expression de l'opérateur (vrai ou faux) indique le statut global de réussite ou d'échec de l'étape.

Si la comparaison ou l'expression de l'opérateur logique est évaluée à`true`, l'étape est marquée comme`Success`. Dans le cas contraire, l'étape est marquée comme`Failed`. Si l'étape échoue, le `onFailure` paramètre détermine le résultat de l'étape.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | 
| --- | --- | --- | --- | 
| input | Contient une comparaison ou un opérateur logique unique. Notez que les opérateurs logiques peuvent contenir plusieurs opérateurs de comparaison. | Ceci est variable en fonction de l'opérateur | Oui | 

**Exemple de saisie : comparaison simple à l'aide de l'opérateur de `stringEquals` comparaison**

Cet exemple évalue à. `true`

```
- name: StringComparison
  action: Assert
  inputs:
    stringEquals: '2.1.1'
    value: '{{ validate.ApplicationVersion.outputs.stdout }}'
```

**Exemple de saisie : comparaisons Regex à l'aide de l'opérateur de `patternMatches` comparaison**

Ces exemples sont tous évalués à`true`.

```
- name: Letters only
  action: Assert
  inputs:
    patternMatches: '^[a-zA-Z]+$'
    value: 'ThisIsOnlyLetters'

- name: Letters and spaces only
  action: Assert
  inputs:
    patternMatches: '^[a-zA-Z\s]+$'
    value: 'This text contains spaces'
  
- name: Numbers only
  action: Assert
  inputs:
    patternMatches: '^[0-9]+$'
    value: '1234567890'
```

**Exemple d'entrée : comparaisons imbriquées avec des opérateurs logiques et des variables chaînées**

L'exemple suivant illustre des comparaisons imbriquées avec des opérateurs logiques qui utilisent des comparaisons avec des variables chaînées. `Assert`Évalue `true` si l'une des conditions suivantes est vraie :
+ Le `ApplicationVersion` est supérieur à `2.0` et `CPUArchitecture` égal`arm64`.
+ Les `CPUArchitecture` égaux`x86_64`.

```
- name: NestedComparisons
  action: Assert
  inputs:
    or: # <- first level deep
      - and: # <- second level deep
          - numberGreaterThan: 2.0 # <- third level deep
            value: '{{ validate.ApplicationVersion.outputs.stdout }}'
          - stringEquals: 'arm64'
            value: '{{ validate.CPUArchitecture.outputs.stdout }}'
      - stringEquals: 'x86_64'
        value: '{{ validate.CPUArchitecture.outputs.stdout }}'
```

**Sortie** :

Le résultat d'une `Assert` est le succès ou l'échec de l'étape.

### ExecuteBash (Linux, macOS)
<a name="action-modules-executebash"></a>

Le module **ExecuteBash**d'action vous permet d'exécuter des scripts bash avec du code/des commandes shell intégrés. Ce module est compatible avec Linux. 

Toutes les commandes et instructions que vous spécifiez dans le bloc de commandes sont converties dans un fichier (par exemple`input.sh`) et exécutées avec le shell bash. Le résultat de l'exécution du fichier shell est le code de sortie de l'étape. 

Le **ExecuteBash**module gère les redémarrages du système si le script se termine avec un code de sortie de. `194` Lorsqu'elle est lancée, l'application exécute l'une des actions suivantes :
+ L'application transmet le code de sortie à l'appelant s'il est exécuté par l'agent Systems Manager. L'agent Systems Manager gère le redémarrage du système et exécute la même étape que celle à l'origine du redémarrage, comme décrit dans la section [Redémarrage d'une instance gérée à partir de scripts](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).
+ L'application enregistre le courant`executionstate`, configure un déclencheur de redémarrage pour réexécuter l'application et redémarre le système.

Après le redémarrage du système, l'application exécute la même étape que celle à l'origine du redémarrage. Si vous avez besoin de cette fonctionnalité, vous devez écrire des scripts idempotents capables de gérer plusieurs invocations de la même commande shell.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | 
| --- | --- | --- | --- | 
| commands | Contient une liste d'instructions ou de commandes à exécuter conformément à la syntaxe bash. Le YAML multiligne est autorisé. | List | Oui | 

**Exemple de saisie : avant et après un redémarrage**

```
name: ExitCode194Example
description: This shows how the exit code can be used to restart a system with ExecuteBash
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: RestartTrigger
        action: ExecuteBash
        inputs:
          commands:
            - |
              REBOOT_INDICATOR=/var/tmp/reboot-indicator
              if [ -f "${REBOOT_INDICATOR}" ]; then
                echo 'The reboot file exists. Deleting it and exiting with success.'
                rm "${REBOOT_INDICATOR}"
                exit 0
              fi
              echo 'The reboot file does not exist. Creating it and triggering a restart.'
              touch "${REBOOT_INDICATOR}"
              exit 194
```


**Output**  

| Champ | Description | Type | 
| --- | --- | --- | 
| stdout | Sortie standard de l'exécution des commandes. | chaîne | 

Si vous lancez un redémarrage et que vous renvoyez le code de sortie dans le `194` cadre du module d'action, la compilation reprendra à l'étape du module d'action qui a initié le redémarrage. Si vous démarrez un redémarrage sans le code de sortie, le processus de génération risque d'échouer.

**Exemple de sortie : avant le redémarrage (première fois via le document)**

```
{
	“stdout”: “The reboot file does not exist. Creating it and triggering a restart."
}
```

**Exemple de sortie : après le redémarrage, (deuxième fois dans le document)**

```
{
	“stdout”: “The reboot file exists. Deleting it and exiting with success."
}
```

### ExecuteBinary (Linux, Windows, macOS)
<a name="action-modules-executebinary"></a>

Le module **ExecuteBinary**d'action vous permet d'exécuter des fichiers binaires avec une liste d'arguments de ligne de commande.

Le **ExecuteBinary**module gère les redémarrages du système si le fichier binaire se termine avec un code de sortie `194` (Linux) ou `3010` (Windows). Dans ce cas, l'application exécute l'une des actions suivantes :
+ L'application transmet le code de sortie à l'appelant s'il est exécuté par l'agent Systems Manager. L'agent Systems Manager gère le redémarrage du système et exécute la même étape que celle qui a initié le redémarrage, comme décrit dans [Redémarrage d'une instance gérée à partir](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html) de scripts.
+ L'application enregistre le courant`executionstate`, configure un déclencheur de redémarrage pour réexécuter l'application et redémarre le système.

Après le redémarrage du système, l'application exécute la même étape que celle à l'origine du redémarrage. Si vous avez besoin de cette fonctionnalité, vous devez écrire des scripts idempotents capables de gérer plusieurs invocations de la même commande shell.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | 
| --- | --- | --- | --- | 
| path | Le chemin d'accès au fichier binaire à exécuter. | String | Oui | 
| arguments | Contient une liste d'arguments de ligne de commande à utiliser lors de l'exécution du binaire. | Liste de chaînes | Non | 

**Exemple de saisie : installer .NET**

```
  - name: "InstallDotnet"
    action: ExecuteBinary
    inputs:
      path: C:\PathTo\dotnet_installer.exe
      arguments:
        - /qb
        - /norestart
```


**Output**  

| Champ | Description | Type | 
| --- | --- | --- | 
| stdout | Sortie standard de l'exécution des commandes. | chaîne | 

**Exemple de sortie**

```
{
	"stdout": "success"
}
```

### ExecuteDocument (Linux, Windows, macOS)
<a name="action-modules-executedocument"></a>

Le module **ExecuteDocument**d'action ajoute la prise en charge des documents de composants imbriqués, en exécutant plusieurs documents de composants à partir d'un seul document. AWSTOE valide le document transmis dans le paramètre d'entrée lors de l'exécution.

**Restrictions**
+ Ce module d'action ne s'exécute qu'une seule fois, sans qu'aucune nouvelle tentative ne soit autorisée et qu'aucune option ne permet de définir des limites de délai d'expiration. **ExecuteDocument**définit les valeurs par défaut suivantes et renvoie une erreur si vous essayez de les modifier.
  + `timeoutSeconds`: -1
  + `maxAttempts` : 1
**Note**  
Vous pouvez laisser ces valeurs vides et AWSTOE utiliser les valeurs par défaut.
+ L'imbrication de documents est autorisée, jusqu'à trois niveaux de profondeur, mais pas plus. Trois niveaux d'imbrication se traduisent par quatre niveaux de document, le niveau supérieur n'étant pas imbriqué. Dans ce scénario, le document de niveau le plus bas ne doit appeler aucun autre document.
+ L'exécution cyclique des documents des composants n'est pas autorisée. Tout document qui s'appelle lui-même en dehors d'une construction en boucle, ou qui appelle un autre document situé plus haut dans la chaîne d'exécution actuelle, lance un cycle qui peut entraîner une boucle sans fin. Lorsqu'il AWSTOE détecte une exécution cyclique, il arrête l'exécution et enregistre l'échec.

![\[Restrictions de niveau d'imbrication pour le module ExecuteDocument d'action.\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/images/toe-component-document-nesting.png)


Si un document de composant essaie de s'exécuter lui-même ou d'exécuter l'un des documents de composant situés plus haut dans la chaîne d'exécution en cours, l'exécution échoue.

**Entrée**


| Nom de la touche | Description | Type | Obligatoire | 
| --- | --- | --- | --- | 
| document |  Chemin du document du composant. Les options valides sont les suivantes : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/toe-action-modules.html)  | String | Oui | 
| document-s3-bucket-owner |  L'ID de compte du propriétaire du compartiment S3 pour le compartiment S3 dans lequel les documents des composants sont stockés. *(Recommandé si vous utilisez S3 URIs dans le document de votre composant.)*  | String | Non | 
| phases |  Phases à exécuter dans le document du composant, exprimées sous forme de liste séparée par des virgules. Si aucune phase n'est spécifiée, toutes les phases sont exécutées.  | String | Non | 
| parameters |  Paramètres d'entrée transmis au document du composant lors de l'exécution sous forme de paires clé-valeur.  | Liste des cartes de paramètres | Non | 

**Entrée de mappage de paramètres**


| Nom de la touche | Description | Type | Obligatoire | 
| --- | --- | --- | --- | 
| name |  Nom du paramètre d'entrée à transmettre au document du composant que le module **ExecuteDocument**d'action exécute.  | String | Oui | 
| value |  La valeur du paramètre d'entrée.  | String | Oui | 

**Exemples de saisie**  
Les exemples suivants montrent des variantes des entrées pour le document de votre composant, en fonction de votre chemin d'installation.

**Exemple de saisie : chemin du document local**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        inputs:
          document: Sample-1.yaml
          phases: build
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Exemple de saisie : URI S3 en tant que chemin de document**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        inputs:
          document: s3://my-bucket/Sample-1.yaml
          document-s3-bucket-owner: 123456789012
          phases: build,validate
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Exemple de saisie : ARN du composant EC2 Image Builder en tant que chemin de document**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        inputs:
          document: arn:aws:imagebuilder:us-west-2:aws:component/Sample-Test/1.0.0
          phases: test
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Utilisation d'une ForEach boucle pour exécuter des documents**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        loop:
          name: 'myForEachLoop'
          forEach:
            - Sample-1.yaml
            - Sample-2.yaml
        inputs:
          document: "{{myForEachLoop.value}}"
          phases: test
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Utilisation d'une boucle For pour exécuter des documents**

```
# main.yaml
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: ExecuteNestedDocument
        action: ExecuteDocument
        loop:
          name: 'myForLoop'
          for:
            start: 1
            end: 2
            updateBy: 1
        inputs:
          document: "Sample-{{myForLoop.value}}.yaml"
          phases: test
          parameters:
            - name: parameter-1
              value: value-1
            - name: parameter-2
              value: value-2
```

**Output**  
AWSTOE crée un fichier de sortie appelé à `detailedoutput.json` chaque fois qu'il s'exécute. Le fichier contient des détails sur chaque phase et étape de chaque document composant invoqué pendant son exécution. Pour le module **ExecuteDocument**d'action, vous trouverez un bref résumé de l'exécution dans le `outputs` champ, ainsi que des détails sur les phases, les étapes et les documents qu'il exécute dans le`detailedOutput`.

```
{
	\"executedStepCount\":1,\"executionId\":\"97054e22-06cc-11ec-9b14-acde48001122\",\"failedStepCount\":0,\"failureMessage\":\"\",\"ignoredFailedStepCount\":0,\"logUrl\":\"\",\"status\":\"success\"
}",
```

L'objet récapitulatif de sortie de chaque document de composant contient les détails suivants, comme indiqué ici, avec des exemples de valeurs :
+ executedStepCount« :1
+ « ID d'exécution » « 12345a67-89bc-01de-2f34-abcd56789012 »
+ failedStepCount« 0 : 0
+ « Message d'échec » : « »
+ « ignoredFailedStep Compter » : 0
+ « URL du journal » : « »
+ « statut » « succès »

**Exemple de sortie**  
L'exemple suivant montre la sortie du module **ExecuteDocument**d'action lorsqu'une exécution imbriquée se produit. Dans cet exemple, le document du `main.yaml` composant exécute correctement le document du `Sample-1.yaml` composant.

```
{
    "executionId": "12345a67-89bc-01de-2f34-abcd56789012",
    "status": "success",
    "startTime": "2021-08-26T17:20:31-07:00",
    "endTime": "2021-08-26T17:20:31-07:00",
    "failureMessage": "",
    "documents": [
        {
            "name": "",
            "filePath": "main.yaml",
            "status": "success",
            "description": "",
            "startTime": "2021-08-26T17:20:31-07:00",
            "endTime": "2021-08-26T17:20:31-07:00",
            "failureMessage": "",
            "phases": [
                {
                    "name": "build",
                    "status": "success",
                    "startTime": "2021-08-26T17:20:31-07:00",
                    "endTime": "2021-08-26T17:20:31-07:00",
                    "failureMessage": "",
                    "steps": [
                        {
                            "name": "ExecuteNestedDocument",
                            "status": "success",
                            "failureMessage": "",
                            "timeoutSeconds": -1,
                            "onFailure": "Abort",
                            "maxAttempts": 1,
                            "action": "ExecuteDocument",
                            "startTime": "2021-08-26T17:20:31-07:00",
                            "endTime": "2021-08-26T17:20:31-07:00",
                            "inputs": "[{\"document\":\"Sample-1.yaml\",\"document-s3-bucket-owner\":\"\",\"phases\":\"\",\"parameters\":null}]",
                            "outputs": "[{\"executedStepCount\":1,\"executionId\":\"98765f43-21ed-09cb-8a76-fedc54321098\",\"failedStepCount\":0,\"failureMessage\":\"\",\"ignoredFailedStepCount\":0,\"logUrl\":\"\",\"status\":\"success\"}]",
                            "loop": null,
                            "detailedOutput": [
                                {
                                    "executionId": "98765f43-21ed-09cb-8a76-fedc54321098",
                                    "status": "success",
                                    "startTime": "2021-08-26T17:20:31-07:00",
                                    "endTime": "2021-08-26T17:20:31-07:00",
                                    "failureMessage": "",
                                    "documents": [
                                        {
                                            "name": "",
                                            "filePath": "Sample-1.yaml",
                                            "status": "success",
                                            "description": "",
                                            "startTime": "2021-08-26T17:20:31-07:00",
                                            "endTime": "2021-08-26T17:20:31-07:00",
                                            "failureMessage": "",
                                            "phases": [
                                                {
                                                    "name": "build",
                                                    "status": "success",
                                                    "startTime": "2021-08-26T17:20:31-07:00",
                                                    "endTime": "2021-08-26T17:20:31-07:00",
                                                    "failureMessage": "",
                                                    "steps": [
                                                        {
                                                            "name": "ExecuteBashStep",
                                                            "status": "success",
                                                            "failureMessage": "",
                                                            "timeoutSeconds": 7200,
                                                            "onFailure": "Abort",
                                                            "maxAttempts": 1,
                                                            "action": "ExecuteBash",
                                                            "startTime": "2021-08-26T17:20:31-07:00",
                                                            "endTime": "2021-08-26T17:20:31-07:00",
                                                            "inputs": "[{\"commands\":[\"echo \\\"Hello World!\\\"\"]}]",
                                                            "outputs": "[{\"stdout\":\"Hello World!\"}]",
                                                            "loop": null,
                                                            "detailedOutput": null
                                                        }]
                                                }]
                                        }]
                                }]
                        }]
                
                }]
        }]
}
```

### ExecutePowerShell (Fenêtres)
<a name="action-modules-executepowershell"></a>

Le module **ExecutePowerShell**d'action vous permet d'exécuter des PowerShell scripts avec du code/des commandes shell intégrés. Ce module prend en charge la plate-forme Windows et Windows PowerShell.

Tous les éléments commands/instructions spécifiés dans le bloc de commandes sont convertis en un fichier de script (par exemple,`input.ps1`) et exécutés sous WindowsPowerShell. Le résultat de l'exécution du fichier shell est le code de sortie.

Le **ExecutePowerShell**module gère les redémarrages du système si la commande shell se termine avec un code de sortie de. `3010` Lorsqu'elle est lancée, l'application exécute l'une des actions suivantes : 
+ Transmet le code de sortie à l'appelant s'il est exécuté par l'agent Systems Manager. L'agent Systems Manager gère le redémarrage du système et exécute la même étape que celle à l'origine du redémarrage, comme décrit dans la section [Redémarrage d'une instance gérée à partir de scripts](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).
+ Enregistre le courant`executionstate`, configure un déclencheur de redémarrage pour réexécuter l'application et redémarre le système.

Après le redémarrage du système, l'application exécute la même étape que celle à l'origine du redémarrage. Si vous avez besoin de cette fonctionnalité, vous devez écrire des scripts idempotents capables de gérer plusieurs invocations de la même commande shell.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | 
| --- | --- | --- | --- | 
| commands | Contient une liste d'instructions ou de commandes à exécuter conformément à PowerShell la syntaxe. Le YAML multiligne est autorisé. | Liste de chaînes | Oui. Doit spécifier`file`, `commands` ou pas les deux.  | 
| file | Contient le chemin d'accès à un fichier de PowerShell script. PowerShell sera exécuté sur ce fichier en utilisant l'argument de ligne de -file commande. Le chemin doit pointer vers un .ps1 fichier. | String | Oui. Doit spécifier`file`, `commands` ou pas les deux.  | 

**Exemple de saisie : avant et après un redémarrage**

```
name: ExitCode3010Example
description: This shows how the exit code can be used to restart a system with ExecutePowerShell
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: RestartTrigger
        action: ExecutePowerShell
        inputs:
          commands:
            - |
              $rebootIndicator = Join-Path -Path $env:SystemDrive -ChildPath 'reboot-indicator'
              if (Test-Path -Path $rebootIndicator) {
                Write-Host 'The reboot file exists. Deleting it and exiting with success.'
                Remove-Item -Path $rebootIndicator -Force | Out-Null
                [System.Environment]::Exit(0)
              }
              Write-Host 'The reboot file does not exist. Creating it and triggering a restart.'
              New-Item -Path $rebootIndicator -ItemType File | Out-Null
              [System.Environment]::Exit(3010)
```


**Output**  

| Champ | Description | Type | 
| --- | --- | --- | 
| stdout | Sortie standard de l'exécution des commandes. | chaîne | 

Si vous exécutez un redémarrage et que vous renvoyez le code de sortie dans le `3010` cadre du module d'action, la compilation reprendra à l'étape du module d'action qui a initié le redémarrage. Si vous redémarrez sans le code de sortie, le processus de génération risque d'échouer.

**Exemple de sortie : avant le redémarrage (première fois via le document)**

```
{
	“stdout”: “The reboot file does not exist. Creating it and triggering a restart."
}
```

**Exemple de sortie : après le redémarrage, (deuxième fois dans le document)**

```
{
	“stdout”: “The reboot file exists. Deleting it and exiting with success."
}
```

## Modules de téléchargement et de téléversement de fichiers
<a name="action-modules-download-upload"></a>

La section suivante contient des détails sur les modules d'action qui chargent ou téléchargent des fichiers.

**Topics**
+ [Téléchargement de S3 (Linux, Windows, macOS)](#action-modules-s3download)
+ [Téléchargement en mode S3 (Linux, Windows, macOS)](#action-modules-s3upload)
+ [WebDownload (Linux, Windows, macOS)](#action-modules-webdownload)

### Téléchargement de S3 (Linux, Windows, macOS)
<a name="action-modules-s3download"></a>

Avec le module `S3Download` d'action, vous pouvez télécharger un objet Amazon S3, ou un ensemble d'objets, dans un fichier ou un dossier local que vous spécifiez avec le `destination` chemin. Si un fichier existe déjà à l'emplacement spécifié et que l'`overwrite`indicateur est défini sur true, le fichier `S3Download` est remplacé.

Votre `source` position peut pointer vers un objet spécifique dans Amazon S3, ou vous pouvez utiliser un préfixe de clé avec un astérisque (`*`) pour télécharger un ensemble d'objets correspondant au chemin du préfixe clé. Lorsque vous spécifiez un préfixe clé dans votre `source` position, le module `S3Download` d'action télécharge tout ce qui correspond au préfixe (fichiers et dossiers inclus). Assurez-vous que le préfixe clé se termine par une barre oblique, suivie d'un astérisque (`/*`), afin de télécharger tout ce qui correspond au préfixe. Par exemple : `s3://my-bucket/my-folder/*`.

Si l'`S3Download`action pour un préfixe de clé spécifié échoue lors d'un téléchargement, le contenu du dossier n'est pas rétabli dans son état antérieur à l'échec. Le dossier de destination reste tel qu'il était au moment de l'échec.

**Cas d’utilisation pris en charge**  
Le module `S3Download` d'action prend en charge les cas d'utilisation suivants :
+ L'objet Amazon S3 est téléchargé dans un dossier local, comme indiqué dans le chemin de téléchargement.
+ Les objets Amazon S3 (avec un préfixe clé dans le chemin du fichier Amazon S3) sont téléchargés dans le dossier local spécifié, qui copie de manière récursive tous les objets Amazon S3 correspondant au préfixe clé dans le dossier local.

**Exigences relatives à l'IAM**  
Le rôle IAM que vous associez à votre profil d'instance doit être autorisé à exécuter le module `S3Download` d'action. Les politiques IAM suivantes doivent être associées au rôle IAM associé au profil d'instance :
+ **Fichier unique** : `s3:GetObject` contre le bucket/object (par exemple,`arn:aws:s3:::BucketName/*`).
+ **Plusieurs fichiers** : `s3:ListBucket` contre le bucket/object (par exemple,`arn:aws:s3:::BucketName`) et `s3:GetObject` contre le bucket/object (par exemple,`arn:aws:s3:::BucketName/*`).


**Input**  

|  Clé  |  Description  |  Type  |  Obligatoire  |  Par défaut  | 
| --- | --- | --- | --- | --- | 
|  `source`  |  Le compartiment Amazon S3 qui est la source de votre téléchargement. Vous pouvez spécifier le chemin d'accès à un objet spécifique ou utiliser un préfixe de clé se terminant par une barre oblique suivie d'un astérisque (`/*`) pour télécharger un ensemble d'objets correspondant au préfixe de clé.  |  String  |  Oui  |  N/A  | 
|  `destination`  |  Le chemin local où les objets Amazon S3 sont téléchargés. Pour télécharger un seul fichier, vous devez spécifier le nom du fichier dans le chemin. Par exemple, `/myfolder/package.zip`.  |  String  |  Oui  |  N/A  | 
|  `expectedBucketOwner`  |  ID de compte propriétaire attendu du bucket indiqué dans le `source` chemin. Nous vous recommandons de vérifier la propriété du compartiment Amazon S3 spécifié dans la source.  |  String  |  Non  |  N/A  | 
|  `overwrite`  |  Lorsqu'il est défini sur true, si un fichier du même nom existe déjà dans le dossier de destination pour le chemin local spécifié, le fichier de téléchargement remplace le fichier local. Lorsqu'il est défini sur false, le fichier existant sur le système local est protégé contre le remplacement et le module d'action échoue en raison d'une erreur de téléchargement. Par exemple, `Error: S3Download: File already exists and "overwrite" property for "destination" file is set to false. Cannot download.`  |  Booléen  |  Non  |  true  | 

**Note**  
Dans les exemples suivants, le chemin du dossier Windows peut être remplacé par un chemin Linux. Par exemple, `C:\myfolder\package.zip` peut être remplacé par`/myfolder/package.zip`.

**Exemple de saisie : copier un objet Amazon S3 dans un fichier local**  
L'exemple suivant montre comment copier un objet Amazon S3 dans un fichier local.

```
  - name: DownloadMyFile
    action: S3Download
    inputs:
      - source: s3://amzn-s3-demo-source-bucket/path/to/package.zip
        destination: C:\myfolder\package.zip
        expectedBucketOwner: 123456789022
        overwrite: false
      - source: s3://amzn-s3-demo-source-bucket/path/to/package.zip
        destination: C:\myfolder\package.zip
        expectedBucketOwner: 123456789022
        overwrite: true
      - source: s3://amzn-s3-demo-source-bucket/path/to/package.zip
        destination: C:\myfolder\package.zip
        expectedBucketOwner: 123456789022
```

**Exemple de saisie : copier tous les objets Amazon S3 dans un compartiment Amazon S3 avec un préfixe de clé dans un dossier local**  
L'exemple suivant montre comment copier tous les objets Amazon S3 d'un compartiment Amazon S3 avec le préfixe key dans un dossier local. Amazon S3 n'a aucune notion de dossier. Par conséquent, tous les objets correspondant au préfixe de clé sont copiés. Le nombre maximum d'objets pouvant être téléchargés est de 1 000.

```
  - name: MyS3DownloadKeyprefix
    action: S3Download
    maxAttempts: 3
    inputs:
      - source: s3://amzn-s3-demo-source-bucket/path/to/*
        destination: C:\myfolder\
        expectedBucketOwner: 123456789022
        overwrite: false
      - source: s3://amzn-s3-demo-source-bucket/path/to/*
        destination: C:\myfolder\
        expectedBucketOwner: 123456789022
        overwrite: true
      - source: s3://amzn-s3-demo-source-bucket/path/to/*
        destination: C:\myfolder\
        expectedBucketOwner: 123456789022
```

**Output**  
Aucune.

### Téléchargement en mode S3 (Linux, Windows, macOS)
<a name="action-modules-s3upload"></a>

Avec le module d'action **S3Upload**, vous pouvez télécharger un fichier depuis un fichier ou un dossier source vers un emplacement Amazon S3. Vous pouvez utiliser un caractère générique (`*`) dans le chemin indiqué pour votre emplacement source afin de télécharger tous les fichiers dont le chemin correspond au modèle générique.

Si l'action récursive **S3Upload** échoue, tous les fichiers déjà chargés resteront dans le compartiment Amazon S3 de destination.

**Cas d’utilisation pris en charge**
+ Fichier local vers un objet Amazon S3.
+ Fichiers locaux dans un dossier (avec caractère générique) avec le préfixe de clé Amazon S3.
+ Copiez le dossier local (doit avoir été `recurse` défini sur`true`) dans le préfixe de clé Amazon S3.

**Exigences relatives à l'IAM**  
Le rôle IAM que vous associez à votre profil d'instance doit être autorisé à exécuter le module `S3Upload` d'action. La politique IAM suivante doit être attachée au rôle IAM associé au profil d'instance. La politique doit accorder `s3:PutObject` des autorisations au compartiment Amazon S3 cible. Par exemple, `arn:aws:s3:::BucketName/*`).


**Input**  

|  Clé  |  Description  |  Type  |  Obligatoire  |  Par défaut  | 
| --- | --- | --- | --- | --- | 
|  `source`  |  Le chemin local d'où files/folders provient la source. `source`Supporte un caractère générique astérisque ()`*`.  |  String  |  Oui  |  N/A  | 
|  `destination`  |  Le chemin du compartiment Amazon S3 de destination où les fichiers/dossiers source sont chargés.  |  String  |  Oui  |  N/A  | 
|  `recurse`  |  Lorsqu'il est défini sur`true`, exécute **S3Upload** de manière récursive.  |  String  |  Non  |  `false`  | 
|  `expectedBucketOwner`  |  L'ID de compte propriétaire attendu pour le compartiment Amazon S3 spécifié dans le chemin de destination. Nous vous recommandons de vérifier la propriété du compartiment Amazon S3 spécifié dans la destination.  |  String  |  Non  |  N/A  | 

**Exemple de saisie : copie d'un fichier local dans un objet Amazon S3**  
L'exemple suivant montre comment copier un fichier local dans un objet Amazon S3.

```
  - name: MyS3UploadFile
    action: S3Upload
    onFailure: Abort
    maxAttempts: 3
    inputs:
      - source: C:\myfolder\package.zip
        destination: s3://amzn-s3-demo-destination-bucket/path/to/package.zip
        expectedBucketOwner: 123456789022
```

**Exemple de saisie : copier tous les fichiers d'un dossier local dans un compartiment Amazon S3 avec le préfixe key**  
L'exemple suivant montre comment copier tous les fichiers du dossier local dans un compartiment Amazon S3 avec le préfixe key. Cet exemple ne copie pas les sous-dossiers ni leur contenu car cela n'`recurse`est pas spécifié, et sa valeur par défaut est. `false`

```
  - name: MyS3UploadMultipleFiles
    action: S3Upload
    onFailure: Abort
    maxAttempts: 3
    inputs:
      - source: C:\myfolder\*
        destination: s3://amzn-s3-demo-destination-bucket/path/to/
        expectedBucketOwner: 123456789022
```

**Exemple de saisie : copie récursive de tous les fichiers et dossiers d'un dossier local vers un compartiment Amazon S3**  
L'exemple suivant montre comment copier tous les fichiers et dossiers de manière récursive d'un dossier local vers un compartiment Amazon S3 avec le préfixe key.

```
  - name: MyS3UploadFolder
    action: S3Upload
    onFailure: Abort
    maxAttempts: 3
    inputs:
      - source: C:\myfolder\*
        destination: s3://amzn-s3-demo-destination-bucket/path/to/
        recurse: true
        expectedBucketOwner: 123456789022
```

**Output**  
Aucune.

### WebDownload (Linux, Windows, macOS)
<a name="action-modules-webdownload"></a>

Le module **WebDownload**d'action vous permet de télécharger des fichiers et des ressources depuis un emplacement distant via le HTTP/HTTPS protocole (le protocole *HTTPS est recommandé*). Il n'y a aucune limite quant au nombre ou à la taille des téléchargements. Ce module gère la logique des nouvelles tentatives et des retards exponentiels. 

Chaque opération de téléchargement dispose d'un maximum de 5 tentatives pour réussir en fonction des entrées de l'utilisateur. Ces tentatives sont différentes de celles spécifiées dans le `maxAttempts` champ du document`steps`, qui sont liées à des défaillances du module d'action.

Ce module d'action gère implicitement les redirections. Tous les codes d'état HTTP, à l'exception de`200`, génèrent une erreur.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Par défaut | 
| --- | --- | --- | --- | --- | 
| source |  HTTP/HTTPS URL valide (HTTPS est recommandé), conforme à la norme RFC 3986. Les expressions de chaînage sont autorisées. | String |  Oui  | N/A | 
| destination | Un chemin de fichier ou de dossier absolu ou relatif sur le système local. Les chemins de dossier doivent se terminer par/. S'ils ne se terminent pas par/, ils seront traités comme des chemins de fichiers. Le module crée tout fichier ou dossier requis pour des téléchargements réussis. Les expressions de chaînage sont autorisées. | String | Oui | N/A | 
| overwrite | Lorsque cette option est activée, elle remplace tous les fichiers existants sur le système local par le fichier ou la ressource téléchargé. Lorsque cette option n'est pas activée, aucun fichier existant sur le système local n'est remplacé et le module d'action échoue avec une erreur. Lorsque le remplacement est activé et que la somme de contrôle et l'algorithme sont spécifiés, le module d'action télécharge le fichier uniquement si la somme de contrôle et le hachage des fichiers préexistants ne correspondent pas.  | Booléen | Non | true | 
| checksum | Lorsque vous spécifiez la somme de contrôle, elle est comparée au hachage du fichier téléchargé généré avec l'algorithme fourni. Pour que la vérification des fichiers soit activée, la somme de contrôle et l'algorithme doivent être fournis. Les expressions de chaînage sont autorisées.  | String | Non | N/A | 
| algorithm | Algorithme utilisé pour calculer le checksum. Les options sont MD5 SHA1, SHA256, et SHA512. Pour que la vérification des fichiers soit activée, la somme de contrôle et l'algorithme doivent être fournis. Les expressions de chaînage sont autorisées.  | String | Non | N/A | 
| ignoreCertificateErrors | La validation du certificat SSL est ignorée lorsqu'elle est activée. | Booléen | Non | false | 


**Output**  

| Nom de la touche | Description | Type | 
| --- | --- | --- | 
| destination | Chaîne de nouvelle ligne délimitée par des caractères qui indique le chemin de destination où sont stockés les fichiers ou les ressources téléchargés. | String | 

**Exemple de saisie : téléchargement d'un fichier distant vers une destination locale**

```
  - name: DownloadRemoteFile
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://testdomain/path/to/java14.zip
        destination: C:\testfolder\package.zip
```

**Sortie** :

```
{
	"destination": "C:\\testfolder\\package.zip"
}
```

**Exemple de saisie : téléchargement de plusieurs fichiers distants vers plusieurs destinations locales**

```
  - name: DownloadRemoteFiles
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://testdomain/path/to/java14.zip
        destination: /tmp/java14_renamed.zip
      - source: https://testdomain/path/to/java14.zip
        destination: /tmp/create_new_folder_and_add_java14_as_zip/
```

**Sortie** :

```
{
	"destination": "/tmp/create_new_folder/java14_renamed.zip\n/tmp/create_new_folder_and_add_java14_as_zip/java14.zip"
}
```

**Exemple de saisie : téléchargement d'un fichier distant sans remplacer la destination locale et téléchargement d'un autre fichier distant avec vérification du fichier**

```
  - name: DownloadRemoteMultipleProperties
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://testdomain/path/to/java14.zip
        destination: C:\create_new_folder\java14_renamed.zip
        overwrite: false
      - source: https://testdomain/path/to/java14.zip
        destination: C:\create_new_folder_and_add_java14_as_zip\
        checksum: ac68bbf921d953d1cfab916cb6120864
        algorithm: MD5
        overwrite: true
```

**Sortie** :

```
{
	"destination": "C:\\create_new_folder\\java14_renamed.zip\nC:\\create_new_folder_and_add_java14_as_zip\\java14.zip"
}
```

**Exemple de saisie : télécharger un fichier distant et ignorer la validation de la certification SSL**

```
  - name: DownloadRemoteIgnoreValidation
    action: WebDownload
    maxAttempts: 3
    inputs:
      - source: https://www.bad-ssl.com/resource
        destination: /tmp/downloads/
        ignoreCertificateErrors: true
```

**Sortie** :

```
{
	"destination": "/tmp/downloads/resource"
}
```

## Modules d'opérations du système de fichiers
<a name="action-modules-file-system-operations"></a>

La section suivante contient des informations détaillées sur les modules d'action qui exécutent des opérations sur le système de fichiers.

**Topics**
+ [AppendFile (Linux, Windows, macOS)](#action-modules-appendfile)
+ [CopyFile (Linux, Windows, macOS)](#action-modules-copyfile)
+ [CopyFolder (Linux, Windows, macOS)](#action-modules-copyfolder)
+ [CreateFile (Linux, Windows, macOS)](#action-modules-createfile)
+ [CreateFolder (Linux, Windows, macOS)](#action-modules-createfolder)
+ [CreateSymlink (Linux, Windows, macOS)](#action-modules-createsymlink)
+ [DeleteFile (Linux, Windows, macOS)](#action-modules-deletefile)
+ [DeleteFolder (Linux, Windows, macOS)](#action-modules-deletefolder)
+ [ListFiles (Linux, Windows, macOS)](#action-modules-listfiles)
+ [MoveFile (Linux, Windows, macOS)](#action-modules-movefile)
+ [MoveFolder (Linux, Windows, macOS)](#action-modules-movefolder)
+ [ReadFile (Linux, Windows, macOS)](#action-modules-readfile)
+ [SetFileEncoding (Linux, Windows, macOS)](#action-modules-setfileencoding)
+ [SetFileOwner (Linux, Windows, macOS)](#action-modules-setfileowner)
+ [SetFolderOwner (Linux, Windows, macOS)](#action-modules-setfolderowner)
+ [SetFilePermissions (Linux, Windows, macOS)](#action-modules-setfilepermissions)
+ [SetFolderPermissions (Linux, Windows, macOS)](#action-modules-setfolderpermissions)

### AppendFile (Linux, Windows, macOS)
<a name="action-modules-appendfile"></a>

Le module **AppendFile**d'action ajoute le contenu spécifié au contenu préexistant d'un fichier.

Si la valeur de codage de fichier est différente de la valeur d'encodage (`utf-8`) par défaut, vous pouvez spécifier la valeur de codage de fichier à l'aide de l'`encoding`option. Par défaut, `utf-16` et `utf-32` sont supposés utiliser le codage little-endian. 

Le module d'action renvoie une erreur dans les cas suivants :
+ Le fichier spécifié n'existe pas au moment de l'exécution.
+ Vous n'êtes pas autorisé à écrire pour modifier le contenu du fichier.
+ Le module rencontre une erreur lors de l'opération sur le fichier.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Le chemin du fichier. | String | Oui | N/A | N/A | Oui | 
| content | Le contenu à ajouter au fichier. | String | Non | Chaîne vide | N/A | Oui | 
| encoding | La norme d'encodage. | String | Non | utf8 | utf8,utf-8,utf16,utf-16,utf16-LE, utf-16-LE utf16-BEutf-16-BE,utf32,utf-32,utf32-LE,utf-32-LE,utf32-BE, et utf-32-BE. La valeur de l'option de codage ne distingue pas les majuscules et minuscules. | Oui | 

**Exemple de saisie : ajout d'un fichier sans encodage (Linux)**

```
  - name: AppendingFileWithOutEncodingLinux
    action: AppendFile
    inputs:
      - path: ./Sample.txt
        content: "The string to be appended to the file"
```

**Exemple de saisie : ajout d'un fichier sans encodage (Windows)**

```
  - name: AppendingFileWithOutEncodingWindows
    action: AppendFile
    inputs:
      - path: C:\MyFolder\MyFile.txt
        content: "The string to be appended to the file"
```

**Exemple de saisie : ajout d'un fichier avec encodage (Linux)**

```
  - name: AppendingFileWithEncodingLinux
    action: AppendFile
    inputs:
      - path: /FolderName/SampleFile.txt
        content: "The string to be appended to the file"
        encoding: UTF-32
```

**Exemple de saisie : ajout d'un fichier avec encodage (Windows)**

```
  - name: AppendingFileWithEncodingWindows
    action: AppendFile
    inputs:
      - path: C:\MyFolderName\SampleFile.txt
        content: "The string to be appended to the file"
        encoding: UTF-32
```

**Exemple de saisie : ajouter un fichier avec une chaîne vide (Linux)**

```
  - name: AppendingEmptyStringLinux
    action: AppendFile
    inputs:
      - path: /FolderName/SampleFile.txt
```

**Exemple de saisie : ajouter un fichier avec une chaîne vide (Windows)**

```
  - name: AppendingEmptyStringWindows
    action: AppendFile
    inputs:
      - path: C:\MyFolderName\SampleFile.txt
```

**Output**  
Aucune.

### CopyFile (Linux, Windows, macOS)
<a name="action-modules-copyfile"></a>

Le module **CopyFile**d'action copie les fichiers de la source spécifiée vers la destination spécifiée. Par défaut, le module crée de manière récursive le dossier de destination s'il n'existe pas au moment de l'exécution.

Si un fichier portant le nom spécifié existe déjà dans le dossier spécifié, le module d'action remplace par défaut le fichier existant. Vous pouvez annuler ce comportement par défaut en définissant l'option de remplacement sur. `false` Lorsque l'option de remplacement est définie sur et qu'il existe déjà un fichier portant le nom spécifié à l'emplacement spécifié, le module d'action renvoie une erreur. `false` Cette option fonctionne de la même manière que la `cp` commande sous Linux, qui remplace par défaut.

Le nom du fichier source peut inclure un caractère générique (`*`). Les caractères génériques ne sont acceptés qu'après le dernier séparateur de chemin de fichier (`/`ou`\`). Si des caractères génériques sont inclus dans le nom du fichier source, tous les fichiers correspondant au caractère générique sont copiés dans le dossier de destination. Si vous souhaitez déplacer plusieurs fichiers à l'aide d'un caractère générique, la saisie de l'`destination`option doit se terminer par un séparateur de chemin de fichier (`/`ou`\`), ce qui indique que l'entrée de destination est un dossier.

Si le nom du fichier de destination est différent du nom du fichier source, vous pouvez spécifier le nom du fichier de destination à l'aide de l'`destination`option. Si vous ne spécifiez pas de nom de fichier de destination, le nom du fichier source est utilisé pour créer le fichier de destination. Tout texte qui suit le dernier séparateur de chemin de fichier (`/`ou`\`) est traité comme le nom du fichier. Si vous souhaitez utiliser le même nom de fichier que le fichier source, l'entrée de l'`destination`option doit se terminer par un séparateur de chemin de fichier (`/`ou`\`). 

Le module d'action renvoie une erreur dans les cas suivants :
+ Vous n'êtes pas autorisé à créer un fichier dans le dossier indiqué.
+ Les fichiers source n'existent pas au moment de l'exécution.
+ Il existe déjà un dossier portant le nom de fichier spécifié et l'`overwrite`option est définie sur`false`.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | Le chemin du fichier source. | String | Oui | N/A | N/A | Oui | 
| destination | Le chemin du fichier de destination. | String | Oui | N/A | N/A | Oui | 
| overwrite | Lorsqu'il est défini sur false, les fichiers de destination ne seront pas remplacés s'il existe déjà un fichier portant le nom spécifié à l'emplacement spécifié. | Booléen | Non | true | N/A | Oui | 

**Exemple de saisie : copier un fichier (Linux)**

```
  - name: CopyingAFileLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
```

**Exemple de saisie : copier un fichier (Windows)**

```
  - name: CopyingAFileWindows
    action: CopyFile
    inputs:
      - source: C:\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
```

**Exemple de saisie : copier un fichier en utilisant le nom du fichier source (Linux)**

```
  - name: CopyingFileWithSourceFileNameLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/
```

**Exemple de saisie : copier un fichier en utilisant le nom du fichier source (Windows)**

```
  - name: CopyingFileWithSourceFileNameWindows
    action: CopyFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\
```

**Exemple de saisie : copie d'un fichier à l'aide du caractère générique (Linux)**

```
  - name: CopyingFilesWithWildCardLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**Exemple de saisie : copie d'un fichier à l'aide du caractère générique (Windows)**

```
  - name: CopyingFilesWithWildCardWindows
    action: CopyFile
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder\
```

**Exemple de saisie : copier un fichier sans le remplacer (Linux)**

```
  - name: CopyingFilesWithoutOverwriteLinux
    action: CopyFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
        overwrite: false
```

**Exemple de saisie : copier un fichier sans le remplacer (Windows)**

```
  - name: CopyingFilesWithoutOverwriteWindows
    action: CopyFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
        overwrite: false
```

**Output**  
Aucune.

### CopyFolder (Linux, Windows, macOS)
<a name="action-modules-copyfolder"></a>

Le module **CopyFolder**d'action copie un dossier de la source spécifiée vers la destination spécifiée. L'entrée de l'`source`option est le dossier à copier, et l'entrée de l'`destination`option est le dossier dans lequel le contenu du dossier source est copié. Par défaut, le module crée de manière récursive le dossier de destination s'il n'existe pas au moment de l'exécution.

Si un dossier portant le nom spécifié existe déjà dans le dossier spécifié, le module d'action remplace par défaut le dossier existant. Vous pouvez annuler ce comportement par défaut en définissant l'option de remplacement sur. `false` Lorsque l'option de remplacement est définie sur et qu'il existe déjà un dossier portant le nom spécifié à l'emplacement spécifié, le module d'action renvoie une erreur. `false`

Le nom du dossier source peut inclure un caractère générique (`*`). Les caractères génériques ne sont acceptés qu'après le dernier séparateur de chemin de fichier (`/`ou`\`). Si des caractères génériques sont inclus dans le nom du dossier source, tous les dossiers correspondant au caractère générique sont copiés dans le dossier de destination. Si vous souhaitez copier plusieurs dossiers à l'aide d'un caractère générique, l'entrée de l'`destination`option doit se terminer par un séparateur de chemin de fichier (`/`ou`\`), ce qui indique que l'entrée de destination est un dossier.

Si le nom du dossier de destination est différent du nom du dossier source, vous pouvez spécifier le nom du dossier de destination à l'aide de l'`destination`option. Si vous ne spécifiez pas de nom de dossier de destination, le nom du dossier source est utilisé pour créer le dossier de destination. Tout texte qui suit le dernier séparateur de chemin de fichier (`/`ou`\`) est traité comme le nom du dossier. Si vous souhaitez utiliser le même nom de dossier que le dossier source, l'entrée de l'`destination`option doit se terminer par un séparateur de chemin de fichier (`/`ou`\`). 

Le module d'action renvoie une erreur dans les cas suivants :
+ Vous n'êtes pas autorisé à créer un dossier dans le dossier spécifié.
+ Les dossiers source n'existent pas au moment de l'exécution.
+ Il existe déjà un dossier portant le nom de dossier spécifié et l'`overwrite`option est définie sur`false`.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | Le chemin du dossier source. | String | Oui | N/A | N/A | Oui | 
| destination | Le chemin du dossier de destination. | String | Oui | N/A | N/A | Oui | 
| overwrite | Lorsqu'il est défini sur false, les dossiers de destination ne seront pas remplacés s'il existe déjà un dossier portant le nom spécifié à l'emplacement spécifié. | Booléen | Non | true | N/A | Oui | 

**Exemple de saisie : copier un dossier (Linux)**

```
  - name: CopyingAFolderLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/SampleFolder
        destination: /MyFolder/destinationFolder
```

**Exemple de saisie : copier un dossier (Windows)**

```
  - name: CopyingAFolderWindows
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\destinationFolder
```

**Exemple de saisie : copier un dossier en utilisant le nom du dossier source (Linux)**

```
  - name: CopyingFolderSourceFolderNameLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/SourceFolder
        destination: /MyFolder/
```

**Exemple de saisie : copier un dossier en utilisant le nom du dossier source (Windows)**

```
  - name: CopyingFolderSourceFolderNameWindows
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\
```

**Exemple de saisie : copier un dossier à l'aide du caractère générique (Linux)**

```
  - name: CopyingFoldersWithWildCardLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**Exemple de saisie : copier un dossier à l'aide du caractère générique (Windows)**

```
  - name: CopyingFoldersWithWildCardWindows
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder\
```

**Exemple de saisie : copier un dossier sans le remplacer (Linux)**

```
  - name: CopyingFoldersWithoutOverwriteLinux
    action: CopyFolder
    inputs:
      - source: /Sample/MyFolder/SourceFolder
        destination: /MyFolder/destinationFolder
        overwrite: false
```

**Exemple de saisie : copier un dossier sans le remplacer (Windows)**

```
  - name: CopyingFoldersWithoutOverwrite
    action: CopyFolder
    inputs:
      - source: C:\Sample\MyFolder\SourceFolder
        destination: C:\MyFolder\destinationFolder
        overwrite: false
```

**Output**  
Aucune.

### CreateFile (Linux, Windows, macOS)
<a name="action-modules-createfile"></a>

Le module **CreateFile**d'action crée un fichier dans un emplacement spécifié. Par défaut, si nécessaire, le module crée également les dossiers parents de manière récursive.

Si le fichier existe déjà dans le dossier spécifié, le module d'action tronque ou remplace par défaut le fichier existant. Vous pouvez annuler ce comportement par défaut en définissant l'option de remplacement sur. `false` Lorsque l'option de remplacement est définie sur et qu'il existe déjà un fichier portant le nom spécifié à l'emplacement spécifié, le module d'action renvoie une erreur. `false`

Si la valeur de codage de fichier est différente de la valeur d'encodage (`utf-8`) par défaut, vous pouvez spécifier la valeur de codage de fichier à l'aide de l'`encoding`option. Par défaut, `utf-16` et `utf-32` sont supposés utiliser le codage little-endian. 

`owner``group`, et `permissions` sont des entrées facultatives. L'entrée pour `permissions` doit être une valeur de chaîne. Les fichiers sont créés avec des valeurs par défaut lorsqu'elles ne sont pas fournies. Ces options ne sont pas prises en charge sur les plateformes Windows. Ce module d'action valide et renvoie une erreur si les `permissions` options `owner``group`, et sont utilisées sur les plateformes Windows.

Ce module d'action peut créer un fichier dont les autorisations sont définies par la `umask` valeur par défaut du système d'exploitation. Vous devez définir la `umask` valeur si vous souhaitez remplacer la valeur par défaut.

Le module d'action renvoie une erreur dans les cas suivants :
+ Vous n'êtes pas autorisé à créer un fichier ou un dossier dans le dossier parent spécifié.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Le chemin du fichier. | String | Oui | N/A | N/A | Oui | 
| content | Le contenu textuel du fichier. | String | Non | N/A | N/A | Oui | 
| encoding | La norme d'encodage. | String | Non | utf8 | utf8,utf-8,utf16,utf-16,utf16-LE, utf-16-LE utf16-BEutf-16-BE,utf32,utf-32,utf32-LE,utf-32-LE,utf32-BE, et utf-32-BE. La valeur de l'option de codage ne distingue pas les majuscules et minuscules. | Oui | 
| owner | Le nom d'utilisateur ou l'ID. | String | Non | N/A | N/A | Non pris en charge sous Windows. | 
| group | Le nom ou l'identifiant du groupe. | String | Non | L'utilisateur actuel. | N/A | Non pris en charge sous Windows. | 
| permissions | Les autorisations du fichier. | String | Non | 0666 | N/A | Non pris en charge sous Windows. | 
| overwrite | Si le nom du fichier spécifié existe déjà, définissez cette valeur pour false empêcher le fichier d'être tronqué ou remplacé par défaut. | Booléen | Non | true | N/A | Oui | 

**Exemple de saisie : créer un fichier sans le remplacer (Linux)**

```
  - name: CreatingFileWithoutOverwriteLinux
    action: CreateFile
    inputs:
      - path: /home/UserName/Sample.txt
        content: The text content of the sample file.
        overwrite: false
```

**Exemple de saisie : créer un fichier sans le remplacer (Windows)**

```
  - name: CreatingFileWithoutOverwriteWindows
    action: CreateFile
    inputs:
      - path: C:\Temp\Sample.txt
        content: The text content of the sample file.
        overwrite: false
```

**Exemple de saisie : création d'un fichier avec des propriétés de fichier**

```
  - name: CreatingFileWithFileProperties
    action: CreateFile
    inputs:
      - path: SampleFolder/Sample.txt
        content: The text content of the sample file.
        encoding: UTF-16
        owner: Ubuntu
        group: UbuntuGroup
        permissions: 0777
     - path: SampleFolder/SampleFile.txt
        permissions: 755
      - path: SampleFolder/TextFile.txt
        encoding: UTF-16
        owner: root
        group: rootUserGroup
```

**Exemple de saisie : création d'un fichier sans propriétés de fichier**

```
  - name: CreatingFileWithoutFileProperties
    action: CreateFile
    inputs:
      - path: ./Sample.txt
      - path: Sample1.txt
```

**Exemple de saisie : créer un fichier vide pour ignorer une section du script de nettoyage Linux**

```
  - name: CreateSkipCleanupfile
    action: CreateFile
    inputs:
      - path: <skip section file name>
```

Pour de plus amples informations, consultez [Remplacer le script de nettoyage Linux](security-best-practices.md#override-linux-cleanup-script).

**Output**  
Aucune.

### CreateFolder (Linux, Windows, macOS)
<a name="action-modules-createfolder"></a>

Le module **CreateFolder**d'action crée un dossier à un emplacement spécifié. Par défaut, si nécessaire, le module crée également les dossiers parents de manière récursive.

Si le dossier existe déjà dans le dossier spécifié, le module d'action tronque ou remplace par défaut le dossier existant. Vous pouvez annuler ce comportement par défaut en définissant l'option de remplacement sur. `false` Lorsque l'option de remplacement est définie sur et qu'il existe déjà un dossier portant le nom spécifié à l'emplacement spécifié, le module d'action renvoie une erreur. `false`

`owner``group`, et `permissions` sont des entrées facultatives. L'entrée pour `permissions` doit être une valeur de chaîne. Ces options ne sont pas prises en charge sur les plateformes Windows. Ce module d'action valide et renvoie une erreur si les `permissions` options `owner``group`, et sont utilisées sur les plateformes Windows.

Ce module d'action peut créer un dossier dont les autorisations sont définies par la `umask` valeur par défaut du système d'exploitation. Vous devez définir la `umask` valeur si vous souhaitez remplacer la valeur par défaut.

Le module d'action renvoie une erreur dans les cas suivants :
+ Vous n'êtes pas autorisé à créer un dossier à l'emplacement indiqué.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Le chemin du dossier. | String | Oui | N/A | N/A | Oui | 
| owner | Le nom d'utilisateur ou l'ID. | String | Non | L'utilisateur actuel. | N/A | Non pris en charge sous Windows. | 
| group | Le nom ou l'identifiant du groupe. | String | Non | Le groupe de l'utilisateur actuel. | N/A | Non pris en charge sous Windows. | 
| permissions | Les autorisations relatives aux dossiers. | String | Non | 0777 | N/A | Non pris en charge sous Windows. | 
| overwrite | Si le nom du fichier spécifié existe déjà, définissez cette valeur pour false empêcher le fichier d'être tronqué ou remplacé par défaut. | Booléen | Non | true | N/A | Oui | 

**Exemple de saisie : création d'un dossier (Linux)**

```
  - name: CreatingFolderLinux
    action: CreateFolder
    inputs:
      - path: /Sample/MyFolder/
```

**Exemple de saisie : création d'un dossier (Windows)**

```
  - name: CreatingFolderWindows
    action: CreateFolder
    inputs:
      - path: C:\MyFolder
```

**Exemple de saisie : création d'un dossier en spécifiant les propriétés du dossier**

```
  - name: CreatingFolderWithFolderProperties
    action: CreateFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
        owner: SampleOwnerName
        group: SampleGroupName
        permissions: 0777
      - path: /Sample/MyFolder/SampleFoler/
        permissions: 777
```

**Exemple de saisie : créer un dossier qui remplace le dossier existant, s'il y en a un.**

```
  - name: CreatingFolderWithOverwrite
    action: CreateFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
        overwrite: true
```

**Output**  
Aucune.

### CreateSymlink (Linux, Windows, macOS)
<a name="action-modules-createsymlink"></a>

Le module **CreateSymlink**d'action crée des liens symboliques ou des fichiers contenant une référence à un autre fichier. Ce module n'est pas pris en charge sur les plateformes Windows. 

L'entrée pour les `target` options `path` et peut être un chemin absolu ou relatif. Si l'entrée de l'`path`option est un chemin relatif, il est remplacé par le chemin absolu lors de la création du lien.

Par défaut, lorsqu'un lien portant le nom spécifié existe déjà dans le dossier spécifié, le module d'action renvoie une erreur. Vous pouvez annuler ce comportement par défaut en définissant l'`force`option sur. `true` Lorsque l'`force`option est définie sur`true`, le module remplace le lien existant.

Si aucun dossier parent n'existe, le module d'action crée le dossier de manière récursive, par défaut.

Le module d'action renvoie une erreur dans les cas suivants :
+ Le fichier cible n'existe pas au moment de l'exécution.
+ Un fichier de lien non symbolique portant le nom spécifié existe déjà.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Le chemin du fichier. | String | Oui | N/A | N/A | Non pris en charge sous Windows. | 
| target | Le chemin du fichier cible vers lequel pointe le lien symbolique. | String | Oui | N/A | N/A | Non pris en charge sous Windows. | 
| force | Force la création d'un lien lorsqu'un lien portant le même nom existe déjà. | Booléen | Non | false | N/A | Non pris en charge sous Windows. | 

**Exemple de saisie : créer un lien symbolique qui force la création d'un lien**

```
  - name: CreatingSymbolicLinkWithForce
    action: CreateSymlink
    inputs:
      - path: /Folder2/Symboliclink.txt
        target: /Folder/Sample.txt
        force: true
```

**Exemple de saisie : créer un lien symbolique qui ne force pas la création d'un lien**

```
  - name: CreatingSymbolicLinkWithOutForce
    action: CreateSymlink
    inputs:
      - path: Symboliclink.txt
        target: /Folder/Sample.txt
```

**Output**  
Aucune.

### DeleteFile (Linux, Windows, macOS)
<a name="action-modules-deletefile"></a>

Le module **DeleteFile**d'action supprime un ou plusieurs fichiers dans un emplacement spécifié.

L'entrée de `path` doit être un chemin de fichier valide ou un chemin de fichier avec un caractère générique (`*`) dans le nom du fichier. Lorsque des caractères génériques sont spécifiés dans le nom du fichier, tous les fichiers du même dossier qui correspondent au caractère générique sont supprimés. 

Le module d'action renvoie une erreur dans les cas suivants :
+ Vous n'êtes pas autorisé à effectuer des opérations de suppression.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Le chemin du fichier. | String | Oui | N/A | N/A | Oui | 

**Exemple de saisie : supprimer un seul fichier (Linux)**

```
  - name: DeletingSingleFileLinux
    action: DeleteFile
    inputs:
      - path: /SampleFolder/MyFolder/Sample.txt
```

**Exemple de saisie : supprimer un seul fichier (Windows)**

```
  - name: DeletingSingleFileWindows
    action: DeleteFile
    inputs:
      - path: C:\SampleFolder\MyFolder\Sample.txt
```

**Exemple de saisie : supprimer un fichier qui se termine par « log » (Linux)**

```
  - name: DeletingFileEndingWithLogLinux
    action: DeleteFile
    inputs:
      - path: /SampleFolder/MyFolder/*log
```

**Exemple de saisie : supprimer un fichier qui se termine par « log » (Windows)**

```
  - name: DeletingFileEndingWithLogWindows
    action: DeleteFile
    inputs:
      - path: C:\SampleFolder\MyFolder\*log
```

**Exemple de saisie : supprimer tous les fichiers d'un dossier spécifié (Linux)**

```
  - name: DeletingAllFilesInAFolderLinux
    action: DeleteFile
    inputs:
      - path: /SampleFolder/MyFolder/*
```

**Exemple de saisie : supprimer tous les fichiers d'un dossier spécifié (Windows)**

```
  - name: DeletingAllFilesInAFolderWindows
    action: DeleteFile
    inputs:
      - path: C:\SampleFolder\MyFolder\*
```

**Output**  
Aucune.

### DeleteFolder (Linux, Windows, macOS)
<a name="action-modules-deletefolder"></a>

Le module **DeleteFolder**d'action supprime les dossiers.

Si le dossier n'est pas vide, vous devez définir l'`force`option `true` de suppression du dossier et de son contenu. Si vous ne définissez pas l'`force`option sur `true` et que le dossier que vous essayez de supprimer n'est pas vide, le module d'action renvoie une erreur. La valeur par défaut de l'`force`option est`false`.

Le module d'action renvoie une erreur dans les cas suivants :
+ Vous n'êtes pas autorisé à effectuer des opérations de suppression.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Le chemin du dossier. | String | Oui | N/A | N/A | Oui | 
| force | Supprime le dossier, qu'il soit vide ou non. | Booléen | Non | false | N/A | Oui | 

**Exemple de saisie : supprimer un dossier qui n'est pas vide à l'aide de l'`force`option (Linux)** 

```
  - name: DeletingFolderWithForceOptionLinux
    action: DeleteFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
        force: true
```

**Exemple de saisie : supprimer un dossier qui n'est pas vide à l'aide de l'`force`option (Windows)** 

```
  - name: DeletingFolderWithForceOptionWindows
    action: DeleteFolder
    inputs:
      - path: C:\Sample\MyFolder\Sample\
        force: true
```

**Exemple de saisie : suppression d'un dossier (Linux)** 

```
  - name: DeletingFolderWithOutForceLinux
    action: DeleteFolder
    inputs:
      - path: /Sample/MyFolder/Sample/
```

**Exemple de saisie : suppression d'un dossier (Windows)** 

```
  - name: DeletingFolderWithOutForce
    action: DeleteFolder
    inputs:
      - path: C:\Sample\MyFolder\Sample\
```

**Output**  
Aucune.

### ListFiles (Linux, Windows, macOS)
<a name="action-modules-listfiles"></a>

Le module **ListFiles**d'action répertorie les fichiers d'un dossier spécifié. Lorsque l'option récursive est définie sur`true`, elle répertorie les fichiers dans des sous-dossiers. Ce module ne répertorie pas les fichiers dans les sous-dossiers par défaut.

Pour répertorier tous les fichiers dont les noms correspondent à un modèle spécifié, utilisez l'`fileNamePattern`option permettant de fournir le modèle. L'`fileNamePattern`option accepte la valeur wildcard (`*`). Lorsque le `fileNamePattern` est fourni, tous les fichiers correspondant au format de nom de fichier spécifié sont renvoyés. 

Le module d'action renvoie une erreur dans les cas suivants :
+ Le dossier spécifié n'existe pas au moment de l'exécution.
+ Vous n'êtes pas autorisé à créer un fichier ou un dossier dans le dossier parent spécifié.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Le chemin du dossier. | String | Oui | N/A | N/A | Oui | 
| fileNamePattern | Le modèle à associer pour répertorier tous les fichiers dont les noms correspondent au modèle. | String | Non | N/A | N/A | Oui | 
| recursive | Répertorie les fichiers du dossier de manière récursive. | Booléen | Non | false | N/A | Oui | 

**Exemple de saisie : liste des fichiers dans le dossier spécifié (Linux)**

```
  - name: ListingFilesInSampleFolderLinux
    action: ListFiles
    inputs:
      - path: /Sample/MyFolder/Sample
```

**Exemple de saisie : liste des fichiers dans le dossier spécifié (Windows)**

```
  - name: ListingFilesInSampleFolderWindows
    action: ListFiles
    inputs:
      - path: C:\Sample\MyFolder\Sample
```

**Exemple de saisie : liste les fichiers qui se terminent par « log » (Linux)**

```
  - name: ListingFilesWithEndingWithLogLinux
    action: ListFiles
    inputs:
      - path: /Sample/MyFolder/
        fileNamePattern: *log
```

**Exemple de saisie : liste les fichiers qui se terminent par « log » (Windows)**

```
  - name: ListingFilesWithEndingWithLogWindows
    action: ListFiles
    inputs:
      - path: C:\Sample\MyFolder\
        fileNamePattern: *log
```

**Exemple de saisie : liste des fichiers de manière récursive**

```
  - name: ListingFilesRecursively
    action: ListFiles
    inputs:
      - path: /Sample/MyFolder/
        recursive: true
```


**Output**  

| Nom de la touche | Description | Type | 
| --- | --- | --- | 
| files | La liste des fichiers. | String | 

**Exemple de sortie**

```
{
	"files": "/sample1.txt,/sample2.txt,/sample3.txt"
}
```

### MoveFile (Linux, Windows, macOS)
<a name="action-modules-movefile"></a>

Le module **MoveFile**d'action déplace les fichiers de la source spécifiée vers la destination spécifiée.

Si le fichier existe déjà dans le dossier spécifié, le module d'action remplace par défaut le fichier existant. Vous pouvez annuler ce comportement par défaut en définissant l'option de remplacement sur. `false` Lorsque l'option de remplacement est définie sur et qu'il existe déjà un fichier portant le nom spécifié à l'emplacement spécifié, le module d'action renvoie une erreur. `false` Cette option fonctionne de la même manière que la `mv` commande sous Linux, qui remplace par défaut.

Le nom du fichier source peut inclure un caractère générique (`*`). Les caractères génériques ne sont acceptés qu'après le dernier séparateur de chemin de fichier (`/`ou`\`). Si des caractères génériques sont inclus dans le nom du fichier source, tous les fichiers correspondant au caractère générique sont copiés dans le dossier de destination. Si vous souhaitez déplacer plusieurs fichiers à l'aide d'un caractère générique, la saisie de l'`destination`option doit se terminer par un séparateur de chemin de fichier (`/`ou`\`), ce qui indique que l'entrée de destination est un dossier.

Si le nom du fichier de destination est différent du nom du fichier source, vous pouvez spécifier le nom du fichier de destination à l'aide de l'`destination`option. Si vous ne spécifiez pas de nom de fichier de destination, le nom du fichier source est utilisé pour créer le fichier de destination. Tout texte qui suit le dernier séparateur de chemin de fichier (`/`ou`\`) est traité comme le nom du fichier. Si vous souhaitez utiliser le même nom de fichier que le fichier source, l'entrée de l'`destination`option doit se terminer par un séparateur de chemin de fichier (`/`ou`\`). 

Le module d'action renvoie une erreur dans les cas suivants :
+ Vous n'êtes pas autorisé à créer un fichier dans le dossier indiqué.
+ Les fichiers source n'existent pas au moment de l'exécution.
+ Il existe déjà un dossier portant le nom de fichier spécifié et l'`overwrite`option est définie sur`false`.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | Le chemin du fichier source. | String | Oui | N/A | N/A | Oui | 
| destination | Le chemin du fichier de destination. | String | Oui | N/A | N/A | Oui | 
| overwrite | Lorsqu'il est défini sur false, les fichiers de destination ne seront pas remplacés s'il existe déjà un fichier portant le nom spécifié à l'emplacement spécifié. | Booléen | Non | true | N/A | Oui | 

**Exemple de saisie : déplacer un fichier (Linux)**

```
  - name: MovingAFileLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
```

**Exemple de saisie : déplacer un fichier (Windows)**

```
  - name: MovingAFileWindows
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
```

**Exemple de saisie : déplacer un fichier en utilisant le nom du fichier source (Linux)**

```
  - name: MovingFileWithSourceFileNameLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/
```

**Exemple de saisie : déplacer un fichier en utilisant le nom du fichier source (Windows)**

```
  - name: MovingFileWithSourceFileNameWindows
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder
```

**Exemple de saisie : déplacer un fichier à l'aide d'un caractère générique (Linux)**

```
  - name: MovingFilesWithWildCardLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**Exemple de saisie : déplacer un fichier à l'aide d'un caractère générique (Windows)**

```
  - name: MovingFilesWithWildCardWindows
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder
```

**Exemple de saisie : déplacer un fichier sans le remplacer (Linux)**

```
  - name: MovingFilesWithoutOverwriteLinux
    action: MoveFile
    inputs:
      - source: /Sample/MyFolder/Sample.txt
        destination: /MyFolder/destinationFile.txt
        overwrite: false
```

**Exemple de saisie : déplacer un fichier sans le remplacer (Windows)**

```
  - name: MovingFilesWithoutOverwrite
    action: MoveFile
    inputs:
      - source: C:\Sample\MyFolder\Sample.txt
        destination: C:\MyFolder\destinationFile.txt
        overwrite: false
```

**Output**  
Aucune.

### MoveFolder (Linux, Windows, macOS)
<a name="action-modules-movefolder"></a>

Le module **MoveFolder**d'action déplace les dossiers de la source spécifiée vers la destination spécifiée. L'entrée de l'`source`option est le dossier à déplacer, et l'entrée de l'`destination`option est le dossier dans lequel le contenu des dossiers source est déplacé.

Si le dossier parent de destination ou l'entrée de l'`destination`option n'existe pas au moment de l'exécution, le comportement par défaut du module consiste à créer le dossier de manière récursive à la destination spécifiée.

Si un dossier identique au dossier source existe déjà dans le dossier de destination, le module d'action remplace par défaut le dossier existant. Vous pouvez annuler ce comportement par défaut en définissant l'option de remplacement sur. `false` Lorsque l'option de remplacement est définie sur et qu'il existe déjà un dossier portant le nom spécifié à l'emplacement spécifié, le module d'action renvoie une erreur. `false`

Le nom du dossier source peut inclure un caractère générique (`*`). Les caractères génériques ne sont acceptés qu'après le dernier séparateur de chemin de fichier (`/`ou`\`). Si des caractères génériques sont inclus dans le nom du dossier source, tous les dossiers correspondant au caractère générique sont copiés dans le dossier de destination. Si vous souhaitez déplacer plusieurs dossiers à l'aide d'un caractère générique, la saisie de l'`destination`option doit se terminer par un séparateur de chemin de fichier (`/`ou`\`), ce qui indique que l'entrée de destination est un dossier.

Si le nom du dossier de destination est différent du nom du dossier source, vous pouvez spécifier le nom du dossier de destination à l'aide de l'`destination`option. Si vous ne spécifiez pas de nom de dossier de destination, le nom du dossier source est utilisé pour créer le dossier de destination. Tout texte qui suit le dernier séparateur de chemin de fichier (`/`ou`\`) est traité comme le nom du dossier. Si vous souhaitez utiliser le même nom de dossier que le dossier source, l'entrée de l'`destination`option doit se terminer par un séparateur de chemin de fichier (`/`ou`\`). 

Le module d'action renvoie une erreur dans les cas suivants :
+ Vous n'êtes pas autorisé à créer un dossier dans le dossier de destination.
+ Les dossiers source n'existent pas au moment de l'exécution.
+ Il existe déjà un dossier portant le nom spécifié et l'`overwrite`option est définie sur`false`.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| source | Le chemin du dossier source. | String | Oui | N/A | N/A | Oui | 
| destination | Le chemin du dossier de destination. | String | Oui | N/A | N/A | Oui | 
| overwrite | Lorsqu'il est défini sur false, les dossiers de destination ne seront pas remplacés s'il existe déjà un dossier portant le nom spécifié à l'emplacement spécifié. | Booléen | Non | true | N/A | Oui | 

**Exemple de saisie : déplacer un dossier (Linux)**

```
  - name: MovingAFolderLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/SourceFolder
        destination: /MyFolder/destinationFolder
```

**Exemple de saisie : déplacer un dossier (Windows)**

```
  - name: MovingAFolderWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\SourceFolder
        destination: C:\MyFolder\destinationFolder
```

**Exemple de saisie : déplacer un dossier en utilisant le nom du dossier source (Linux)**

```
  - name: MovingFolderWithSourceFolderNameLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/SampleFolder
        destination: /MyFolder/
```

**Exemple de saisie : déplacer un dossier en utilisant le nom du dossier source (Windows)**

```
  - name: MovingFolderWithSourceFolderNameWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\
```

**Exemple de saisie : déplacer un dossier à l'aide d'un caractère générique (Linux)**

```
  - name: MovingFoldersWithWildCardLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/Sample*
        destination: /MyFolder/
```

**Exemple de saisie : déplacer un dossier à l'aide d'un caractère générique (Windows)**

```
  - name: MovingFoldersWithWildCardWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\Sample*
        destination: C:\MyFolder\
```

**Exemple de saisie : déplacer un dossier sans le remplacer (Linux)**

```
  - name: MovingFoldersWithoutOverwriteLinux
    action: MoveFolder
    inputs:
      - source: /Sample/MyFolder/SampleFolder
    destination: /MyFolder/destinationFolder
    overwrite: false
```

**Exemple de saisie : déplacer un dossier sans le remplacer (Windows)**

```
  - name: MovingFoldersWithoutOverwriteWindows
    action: MoveFolder
    inputs:
      - source: C:\Sample\MyFolder\SampleFolder
        destination: C:\MyFolder\destinationFolder
        overwrite: false
```

**Output**  
Aucune.

### ReadFile (Linux, Windows, macOS)
<a name="action-modules-readfile"></a>

Le module **ReadFile**d'action lit le contenu d'un fichier texte de type chaîne. Ce module peut être utilisé pour lire le contenu d'un fichier afin de l'utiliser dans les étapes suivantes via le chaînage ou pour lire des données dans le `console.log` fichier. Si le chemin spécifié est un lien symbolique, ce module renvoie le contenu du fichier cible. Ce module ne prend en charge que les fichiers texte.

Si la valeur de codage de fichier est différente de la valeur d'encodage (`utf-8`) par défaut, vous pouvez spécifier la valeur de codage de fichier à l'aide de l'`encoding`option. Par défaut, `utf-16` et `utf-32` sont supposés utiliser le codage little-endian. 

Par défaut, ce module ne peut pas imprimer le contenu du fichier dans le `console.log` fichier. Vous pouvez annuler ce paramètre en attribuant à `true` la `printFileContent` propriété la valeur.

Ce module ne peut renvoyer que le contenu d'un fichier. Il ne peut pas analyser les fichiers, tels que les fichiers Excel ou JSON.

Le module d'action renvoie une erreur dans les cas suivants :
+ Le fichier n'existe pas au moment de l'exécution.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Le chemin du fichier. | String | Oui | N/A | N/A | Oui | 
| encoding | La norme d'encodage. | String | Non | utf8 | utf8,utf-8,utf16,utf-16,utf16-LE, utf-16-LE utf16-BEutf-16-BE,utf32,utf-32,utf32-LE,utf-32-LE,utf32-BE, et utf-32-BE. La valeur de l'option de codage ne distingue pas les majuscules et minuscules. | Oui | 
| printFileContent | Imprime le contenu du fichier dans le console.log fichier. | Booléen | Non | false | N/A | Oui. | 

**Exemple de saisie : lecture d'un fichier (Linux)**

```
  - name: ReadingFileLinux
    action: ReadFile
    inputs:
      - path: /home/UserName/SampleFile.txt
```

**Exemple de saisie : lecture d'un fichier (Windows)**

```
  - name: ReadingFileWindows
    action: ReadFile
    inputs:
      - path: C:\Windows\WindowsUpdate.log
```

**Exemple de saisie : lecture d'un fichier et spécification de la norme de codage**

```
  - name: ReadingFileWithFileEncoding
    action: ReadFile
    inputs:
      - path: /FolderName/SampleFile.txt
        encoding: UTF-32
```

**Exemple de saisie : lecture d'un fichier et impression dans le `console.log` fichier**

```
  - name: ReadingFileToConsole
    action: ReadFile
    inputs:
      - path: /home/UserName/SampleFile.txt
        printFileContent: true
```


**Output**  

| Champ | Description | Type | 
| --- | --- | --- | 
| content | Le contenu du fichier. | chaîne | 

**Exemple de sortie**

```
{
	"content" : "The file content"
}
```

### SetFileEncoding (Linux, Windows, macOS)
<a name="action-modules-setfileencoding"></a>

Le module **SetFileEncoding**d'action modifie la propriété de codage d'un fichier existant. Ce module peut convertir le codage de fichiers `utf-8` à partir d'une norme de codage spécifiée. Par défaut, `utf-16` et `utf-32` sont supposés être des encodages little-endian.

Le module d'action renvoie une erreur dans les cas suivants :
+ Vous n'êtes pas autorisé à effectuer la modification spécifiée.
+ Le fichier n'existe pas au moment de l'exécution.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Le chemin du fichier. | String | Oui | N/A | N/A | Oui | 
| encoding | La norme d'encodage. | String | Non | utf8 | utf8,utf-8,utf16,utf-16,utf16-LE, utf-16-LE utf16-BEutf-16-BE,utf32,utf-32,utf32-LE,utf-32-LE,utf32-BE, et utf-32-BE. La valeur de l'option de codage ne distingue pas les majuscules et minuscules. | Oui | 

**Exemple de saisie : définir la propriété de codage du fichier**

```
  - name: SettingFileEncodingProperty
    action: SetFileEncoding
    inputs:
      - path: /home/UserName/SampleFile.txt
        encoding: UTF-16
```

**Output**  
Aucune.

### SetFileOwner (Linux, Windows, macOS)
<a name="action-modules-setfileowner"></a>

Le module **SetFileOwner**d'action modifie les propriétés `owner` et le `group` propriétaire d'un fichier existant. Si le fichier spécifié est un lien symbolique, le module modifie la `owner` propriété du fichier source. Ce module n'est pas pris en charge sur les plateformes Windows. 

Ce module accepte les noms d'utilisateur et de groupe en entrée. Si le nom du groupe n'est pas fourni, le module affecte le propriétaire du fichier au groupe auquel appartient l'utilisateur.

Le module d'action renvoie une erreur dans les cas suivants :
+ Vous n'êtes pas autorisé à effectuer la modification spécifiée.
+ Le nom d'utilisateur ou de groupe spécifié n'existe pas au moment de l'exécution.
+ Le fichier n'existe pas au moment de l'exécution.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Le chemin du fichier. | String | Oui | N/A | N/A | Non pris en charge sous Windows. | 
| owner | Nom de l'utilisateur. | chaîne | Oui | N/A | N/A | Non pris en charge sous Windows. | 
| group | Nom du groupe d'utilisateurs. | String | Non | Nom du groupe auquel appartient l'utilisateur. | N/A | Non pris en charge sous Windows. | 

**Exemple de saisie : définir la propriété du propriétaire du fichier sans spécifier le nom du groupe d'utilisateurs**

```
  - name: SettingFileOwnerPropertyNoGroup
    action: SetFileOwner
    inputs:
      - path: /home/UserName/SampleText.txt
        owner: LinuxUser
```

**Exemple de saisie : définir la propriété du propriétaire du fichier en spécifiant le propriétaire et le groupe d'utilisateurs**

```
  - name: SettingFileOwnerProperty
    action: SetFileOwner
    inputs:
      - path: /home/UserName/SampleText.txt
        owner: LinuxUser
        group: LinuxUserGroup
```

**Output**  
Aucune.

### SetFolderOwner (Linux, Windows, macOS)
<a name="action-modules-setfolderowner"></a>

Le module **SetFolderOwner**d'action modifie de manière récursive les propriétés `owner` et le `group` propriétaire d'un dossier existant. Par défaut, le module peut modifier la propriété de l'ensemble du contenu d'un dossier. Vous pouvez définir l'`recursive`option `false` pour annuler ce comportement. Ce module n'est pas pris en charge sur les plateformes Windows. 

Ce module accepte les noms d'utilisateur et de groupe en entrée. Si le nom du groupe n'est pas fourni, le module affecte le propriétaire du fichier au groupe auquel appartient l'utilisateur.

Le module d'action renvoie une erreur dans les cas suivants :
+ Vous n'êtes pas autorisé à effectuer la modification spécifiée.
+ Le nom d'utilisateur ou de groupe spécifié n'existe pas au moment de l'exécution.
+ Le dossier n'existe pas au moment de l'exécution.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Le chemin du dossier. | String | Oui | N/A | N/A | Non pris en charge sous Windows. | 
| owner | Nom de l'utilisateur. | chaîne | Oui | N/A | N/A | Non pris en charge sous Windows. | 
| group | Nom du groupe d'utilisateurs. | String | Non | Nom du groupe auquel appartient l'utilisateur. | N/A | Non pris en charge sous Windows. | 
| recursive | Remplace le comportement par défaut qui consiste à modifier la propriété de l'ensemble du contenu d'un dossier lorsqu'il est défini sur. false | Booléen | Non | true | N/A | Non pris en charge sous Windows. | 

**Exemple de saisie : définir la propriété du propriétaire du dossier sans spécifier le nom du groupe d'utilisateurs**

```
  - name: SettingFolderPropertyWithOutGroup
    action: SetFolderOwner
    inputs:
      - path: /SampleFolder/
        owner: LinuxUser
```

**Exemple de saisie : définir la propriété du propriétaire du dossier sans annuler la propriété de l'ensemble du contenu d'un dossier**

```
  - name: SettingFolderPropertyWithOutRecursively
    action: SetFolderOwner
    inputs:
      - path: /SampleFolder/
        owner: LinuxUser
        recursive: false
```

**Exemple de saisie : définir la propriété de propriété du fichier en spécifiant le nom du groupe d'utilisateurs**

```
  - name: SettingFolderPropertyWithGroup
    action: SetFolderOwner
    inputs:
      - path: /SampleFolder/
        owner: LinuxUser
        group: LinuxUserGroup
```

**Output**  
Aucune.

### SetFilePermissions (Linux, Windows, macOS)
<a name="action-modules-setfilepermissions"></a>

Le module **SetFilePermissions**d'action modifie `permissions` un fichier existant. Ce module n'est pas pris en charge sur les plateformes Windows. 

L'entrée pour `permissions` doit être une valeur de chaîne.

Ce module d'action peut créer un fichier dont les autorisations sont définies par la valeur umask par défaut du système d'exploitation. Vous devez définir la `umask` valeur si vous souhaitez remplacer la valeur par défaut.

Le module d'action renvoie une erreur dans les cas suivants :
+ Vous n'êtes pas autorisé à effectuer la modification spécifiée.
+ Le fichier n'existe pas au moment de l'exécution.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Le chemin du fichier. | String | Oui | N/A | N/A | Non pris en charge sous Windows. | 
| permissions | Les autorisations du fichier. | String | Oui | N/A | N/A | Non pris en charge sous Windows. | 

**Exemple de saisie : modification des autorisations de fichier**

```
  - name: ModifyingFilePermissions
    action: SetFilePermissions
    inputs:
      - path: /home/UserName/SampleFile.txt
        permissions: 766
```

**Output**  
Aucune.

### SetFolderPermissions (Linux, Windows, macOS)
<a name="action-modules-setfolderpermissions"></a>

Le module **SetFolderPermissions**d'action modifie `permissions` de manière récursive le dossier existant et tous ses sous-fichiers et sous-dossiers. Par défaut, ce module peut modifier les autorisations pour tout le contenu du dossier spécifié. Vous pouvez définir l'`recursive`option `false` pour annuler ce comportement. Ce module n'est pas pris en charge sur les plateformes Windows. 

L'entrée pour `permissions` doit être une valeur de chaîne. 

Ce module d'action peut modifier les autorisations en fonction de la valeur umask par défaut du système d'exploitation. Vous devez définir la `umask` valeur si vous souhaitez remplacer la valeur par défaut.

Le module d'action renvoie une erreur dans les cas suivants :
+ Vous n'êtes pas autorisé à effectuer la modification spécifiée.
+ Le dossier n'existe pas au moment de l'exécution.
+ Le module d'action rencontre une erreur lors de l'exécution de l'opération.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | Pris en charge sur toutes les plateformes | 
| --- | --- | --- | --- | --- | --- | --- | 
| path | Le chemin du dossier. | String | Oui | N/A | N/A | Non pris en charge sous Windows. | 
| permissions | Les autorisations relatives aux dossiers. | String | Oui | N/A | N/A | Non pris en charge sous Windows. | 
| recursive | Remplace le comportement par défaut qui consiste à modifier les autorisations pour l'ensemble du contenu d'un dossier lorsqu'il est défini sur. false | Booléen | Non | true | N/A | Non pris en charge sous Windows. | 

**Exemple de saisie : définir les autorisations des dossiers**

```
  - name: SettingFolderPermissions
    action: SetFolderPermissions
    inputs:
      - path: SampleFolder/
        permissions: 0777
```

**Exemple de saisie : définir les autorisations d'un dossier sans modifier les autorisations pour l'ensemble du contenu d'un dossier**

```
  - name: SettingFolderPermissionsNoRecursive
    action: SetFolderPermissions
    inputs:
      - path: /home/UserName/SampleFolder/
        permissions: 777
        recursive: false
```

**Output**  
Aucune.

## Actions d'installation du logiciel
<a name="action-modules-software-install-actions"></a>

La section suivante décrit les modules d'action qui installent ou désinstallent des logiciels.

**Exigences relatives à l'IAM**  
Si le chemin de téléchargement de votre installation est un URI S3, le rôle IAM que vous associez à votre profil d'instance doit être autorisé à exécuter le module `S3Download` d'action. Pour accorder l'autorisation requise, attachez la politique `S3:GetObject` IAM au rôle IAM associé à votre profil d'instance et spécifiez le chemin de votre bucket. Par exemple, `arn:aws:s3:::BucketName/*`).

**Entrées MSI complexes**  
Si vos chaînes d'entrée contiennent des guillemets (`"`), vous devez utiliser l'une des méthodes suivantes pour vous assurer qu'elles sont interprétées correctement :
+ Vous pouvez utiliser des guillemets simples (') à l'extérieur de votre chaîne pour la contenir, et des guillemets doubles («) à l'intérieur de votre chaîne, comme indiqué dans l'exemple suivant.

  ```
  properties:
    COMPANYNAME: '"Acme ""Widgets"" and ""Gizmos."""'
  ```

  Dans ce cas, si vous devez utiliser une apostrophe à l'intérieur de votre chaîne, vous devez y échapper. Cela signifie qu'il faut utiliser un autre guillemet simple (') avant l'apostrophe.
+ Vous pouvez utiliser des guillemets («) à l'extérieur de votre chaîne pour la contenir. Et vous pouvez éviter les guillemets doubles à l'intérieur de votre chaîne en utilisant la barre oblique inverse (`\`), comme indiqué dans l'exemple suivant.

  ```
  properties:
    COMPANYNAME: "\"Acme \"\"Widgets\"\" and \"\"Gizmos.\"\"\""
  ```

Ces deux méthodes transmettent la valeur `COMPANYNAME="Acme ""Widgets"" and ""Gizmos."""` à la **msiexec** commande.

**Topics**
+ [Installez MSI (Windows)](#action-modules-install-msi)
+ [Désinstallez MSI (Windows)](#action-modules-uninstall-msi)

### Installez MSI (Windows)
<a name="action-modules-install-msi"></a>

Le module `InstallMSI` d'action installe une application Windows à l'aide d'un fichier MSI. Vous pouvez spécifier le fichier MSI à l'aide d'un chemin local, d'un URI d'objet S3 ou d'une URL Web. L'option de redémarrage configure le comportement de redémarrage du système.

AWSTOE génère la **msiexec** commande en fonction des paramètres d'entrée du module d'action. Les valeurs des paramètres d'entrée `path` (emplacement du fichier MSI) et `logFile` (emplacement du fichier journal) doivent être placées entre guillemets («).

Les codes de sortie MSI suivants sont considérés comme réussis :
+ 0 (Succès)
+ 1614 (ERROR\$1PRODUCT\$1UNINSTALL)
+ 1641 (redémarrage initié)
+ 3010 (redémarrage requis)


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | 
| --- | --- | --- | --- | --- | --- | 
| path |  Spécifiez l'emplacement du fichier MSI à l'aide de l'une des méthodes suivantes : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/toe-action-modules.html) Les expressions de chaînage sont autorisées.  | String | Oui | N/A | N/A | 
| reboot |  Configurez le comportement de redémarrage du système après une exécution réussie du module d'action. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/toe-action-modules.html)  | String | Non | Allow | Allow, Force, Skip | 
| logOptions |  Spécifiez les options à utiliser pour la journalisation de l'installation MSI. Les indicateurs spécifiés sont transmis au programme d'installation MSI, avec le paramètre de ligne de `/L` commande pour activer la journalisation. Si aucun indicateur n'est spécifié, AWSTOE utilise la valeur par défaut. Pour plus d'informations sur les options de journalisation pour MSI, consultez [la section Options de ligne de commande](https://learn.microsoft.com/en-us/windows/win32/msi/command-line-options) dans la documentation du produit Microsoft *Windows Installer*.  | String | Non | \$1VX | i,w,e,a,r,u,c,m,o,p,v,x,\$1,\$1,\$1 | 
| logFile |  Un chemin absolu ou relatif vers l'emplacement du fichier journal. Si le chemin du fichier journal n'existe pas, il est créé. Si le chemin du fichier journal n'est pas fourni, AWSTOE ne stocke pas le journal d'installation MSI.  | String | Non | N/A | N/A | 
| properties |  Paires clé-valeur des propriétés de journalisation MSI, par exemple : `TARGETDIR: "C:\target\location"`   Remarque : La modification des propriétés suivantes n'est pas autorisée : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/toe-action-modules.html)  | Carte [Chaîne] Chaîne | Non | N/A | N/A | 
| ignoreAuthenticodeSignatureErrors |  Indicateur permettant d'ignorer les erreurs de validation de signature authenticode pour le programme d'installation spécifié dans le chemin. La **Get-AuthenticodeSignature** commande est utilisée pour valider les programmes d'installation. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/toe-action-modules.html)  | Booléen | Non | false | true, false | 
| allowUnsignedInstaller |  Indicateur permettant d'exécuter le programme d'installation non signé spécifié dans le chemin. La **Get-AuthenticodeSignature** commande est utilisée pour valider les programmes d'installation. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/toe-action-modules.html)  | Booléen | Non | false | true, false | 

**Exemples**  
Les exemples suivants montrent des variantes de la section de saisie de votre document de composant, en fonction de votre chemin d'installation.

**Exemple de saisie : installation du chemin de document local**

```
- name: local-path-install
  steps:
    - name: LocalPathInstaller
      action: InstallMSI
      inputs:
        path: C:\sample.msi
        logFile: C:\msilogs\local-path-install.log
        logOptions: '*VX'
        reboot: Allow
        properties:
          COMPANYNAME: '"Amazon Web Services"'
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: true
```

**Exemple de saisie : installation du chemin Amazon S3**

```
- name: s3-path-install
  steps:
    - name: S3PathInstaller
      action: InstallMSI
      inputs:
        path: s3://<bucket-name>/sample.msi
        logFile: s3-path-install.log
        reboot: Force
        ignoreAuthenticodeSignatureErrors: false
        allowUnsignedInstaller: true
```

**Exemple de saisie : installation du chemin Web**

```
- name: web-path-install
  steps:
    - name: WebPathInstaller
      action: InstallMSI
      inputs:
        path: https://<some-path>/sample.msi
        logFile: web-path-install.log
        reboot: Skip
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: false
```

**Output**  
Voici un exemple de sortie du module `InstallMSI` d'action.

```
{
	"logFile": "web-path-install.log",
	"msiExitCode": 0,
	"stdout": ""
}
```

### Désinstallez MSI (Windows)
<a name="action-modules-uninstall-msi"></a>

Le module `UninstallMSI` d'action permet de supprimer une application Windows à l'aide d'un fichier MSI. Vous pouvez spécifier l'emplacement du fichier MSI à l'aide d'un chemin de fichier local, d'un URI d'objet S3 ou d'une URL Web. L'option de redémarrage configure le comportement de redémarrage du système.

AWSTOE génère la **msiexec** commande en fonction des paramètres d'entrée du module d'action. L'emplacement du fichier MSI (`path`) et l'emplacement du fichier journal (`logFile`) sont explicitement placés entre guillemets («) lors de la génération de la **msiexec** commande.

Les codes de sortie MSI suivants sont considérés comme réussis :
+ 0 (Succès)
+ 1605 (ERROR\$1UNKNOWN\$1PRODUCT)
+ 1614 (ERROR\$1PRODUCT\$1UNINSTALL)
+ 1641 (redémarrage initié)
+ 3010 (redémarrage requis)


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Valeur par défaut | Valeurs acceptables | 
| --- | --- | --- | --- | --- | --- | 
| path |  Spécifiez l'emplacement du fichier MSI à l'aide de l'une des méthodes suivantes : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/toe-action-modules.html) Les expressions de chaînage sont autorisées.  | String | Oui | N/A | N/A | 
| reboot |  Configure le comportement de redémarrage du système après une exécution réussie du module d'action. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/toe-action-modules.html)  | String | Non | Allow | Allow, Force, Skip | 
| logOptions |  Spécifiez les options à utiliser pour la journalisation de l'installation MSI. Les indicateurs spécifiés sont transmis au programme d'installation MSI, avec le paramètre de ligne de `/L` commande pour activer la journalisation. Si aucun indicateur n'est spécifié, AWSTOE utilise la valeur par défaut. Pour plus d'informations sur les options de journalisation pour MSI, consultez [la section Options de ligne de commande](https://docs.microsoft.com/en-us/windows/win32/msi/command-line-options) dans la documentation du produit Microsoft *Windows Installer*.  | String | Non | \$1VX | i,w,e,a,r,u,c,m,o,p,v,x,\$1,\$1,\$1 | 
| logFile |  Un chemin absolu ou relatif vers l'emplacement du fichier journal. Si le chemin du fichier journal n'existe pas, il est créé. Si le chemin du fichier journal n'est pas fourni, AWSTOE ne stocke pas le journal d'installation MSI.  | String | Non | N/A | N/A | 
| properties |  Paires clé-valeur des propriétés de journalisation MSI, par exemple : `TARGETDIR: "C:\target\location"`   Remarque : La modification des propriétés suivantes n'est pas autorisée : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/toe-action-modules.html)  | Carte [Chaîne] Chaîne | Non | N/A | N/A | 
| ignoreAuthenticodeSignatureErrors |  Indicateur permettant d'ignorer les erreurs de validation de signature authenticode pour le programme d'installation spécifié dans le chemin. La **Get-AuthenticodeSignature** commande est utilisée pour valider les programmes d'installation. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/toe-action-modules.html)  | Booléen | Non | false | true, false | 
| allowUnsignedInstaller |  Indicateur permettant d'exécuter le programme d'installation non signé spécifié dans le chemin. La **Get-AuthenticodeSignature** commande est utilisée pour valider les programmes d'installation. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/toe-action-modules.html)  | Booléen | Non | false | true, false | 

**Exemples**  
Les exemples suivants montrent des variantes de la section de saisie de votre document de composant, en fonction de votre chemin d'installation.

**Exemple de saisie : installation de suppression du chemin de document local**

```
- name: local-path-uninstall
  steps:
    - name: LocalPathUninstaller
      action: UninstallMSI
      inputs:
        path: C:\sample.msi
        logFile: C:\msilogs\local-path-uninstall.log
        logOptions: '*VX'
        reboot: Allow
        properties:
          COMPANYNAME: '"Amazon Web Services"'
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: true
```

**Exemple de saisie : supprimer l'installation du chemin Amazon S3**

```
- name: s3-path-uninstall
  steps:
    - name: S3PathUninstaller
      action: UninstallMSI
      inputs:
        path: s3://<bucket-name>/sample.msi
        logFile: s3-path-uninstall.log
        reboot: Force
        ignoreAuthenticodeSignatureErrors: false
        allowUnsignedInstaller: true
```

**Exemple de saisie : installation de suppression du chemin Web**

```
- name: web-path-uninstall
  steps:
    - name: WebPathUninstaller
      action: UninstallMSI
      inputs:
        path: https://<some-path>/sample.msi
        logFile: web-path-uninstall.log
        reboot: Skip
        ignoreAuthenticodeSignatureErrors: true
        allowUnsignedInstaller: false
```

**Output**  
Voici un exemple de sortie du module `UninstallMSI` d'action.

```
{
	"logFile": "web-path-uninstall.log",
	"msiExitCode": 0,
	"stdout": ""
}
```

## Modules d'action du système
<a name="action-modules-system-actions"></a>

La section suivante décrit les modules d'action qui exécutent des actions système ou mettent à jour les paramètres système.

**Topics**
+ [Redémarrer (Linux, Windows)](#action-modules-reboot)
+ [SetRegistry (Fenêtres)](#action-modules-setregistry)
+ [Mettre à jour le système d'exploitation (Linux, Windows)](#action-modules-updateos)

### Redémarrer (Linux, Windows)
<a name="action-modules-reboot"></a>

Le module d'action **Reboot** redémarre l'instance. Il dispose d'une option configurable pour retarder le démarrage du redémarrage. Par défaut, `delaySeconds` est défini sur`0`, ce qui signifie qu'il n'y a aucun délai. Le délai d'expiration des étapes n'est pas pris en charge pour le module d'action Reboot, car il ne s'applique pas au redémarrage de l'instance.

Si l'application est appelée par l'agent Systems Manager, elle transmet le code de sortie (`3010`pour Windows, `194` pour Linux) à l'agent Systems Manager. L'agent Systems Manager gère le redémarrage du système comme décrit dans [Reboot Managed Instance from Scripts](https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-reboot.html).

Si l'application est invoquée sur l'hôte en tant que processus autonome, elle enregistre l'état d'exécution actuel, configure un déclencheur d'exécution automatique après le redémarrage pour réexécuter l'application après le redémarrage, puis redémarre le système.

**Déclencheur d'exécution automatique après le redémarrage :**
+ **Fenêtres**. AWSTOE crée une entrée du planificateur de tâches Windows avec un déclencheur qui s'exécute automatiquement sur `SystemStartup`
+ **Linux**. AWSTOE ajoute une tâche dans crontab qui s'exécute automatiquement après le redémarrage du système.

```
@reboot /download/path/awstoe run --document s3://bucket/key/doc.yaml
```

Ce déclencheur est nettoyé au démarrage de l'application.

**Nouvelles tentatives**  
Par défaut, le nombre maximum de tentatives est défini sur le Systems Manager`CommandRetryLimit`. Si le nombre de redémarrages dépasse la limite de nouvelles tentatives, l'automatisation échoue. Vous pouvez modifier la limite en modifiant le fichier de configuration de l'agent Systems Manager (`Mds.CommandRetryLimit`). Consultez la section [Configuration du runtime](https://github.com/aws/amazon-ssm-agent/blob/mainline/README.md#runtime-configuration) dans l'agent open source de Systems Manager.

Pour utiliser le module d'action **Redémarrer**, pour les étapes contenant un redémarrage `exitcode` (par exemple,`3010`), vous devez exécuter le binaire de l'application sous le nom de`sudo user`.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | Par défaut | 
| --- | --- | --- | --- | --- | 
| delaySeconds | Retarde un certain temps avant de lancer un redémarrage. | Entier |  Non  |  `0`  | 

**Exemple de saisie : étape de redémarrage**

```
  - name: RebootStep
    action: Reboot
    onFailure: Abort
    maxAttempts: 2
    inputs:
      delaySeconds: 60
```

**Sortie**

Aucune.

Lorsque le module **Reboot** est terminé, Image Builder passe à l'étape suivante de la génération.

### SetRegistry (Fenêtres)
<a name="action-modules-setregistry"></a>

Le module **SetRegistry**d'action accepte une liste d'entrées et vous permet de définir la valeur de la clé de registre spécifiée. Si aucune clé de registre n'existe, elle est créée dans le chemin défini. Cette fonctionnalité s'applique uniquement à Windows.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | 
| --- | --- | --- | --- | 
| path | Chemin de la clé de registre. | String | Oui | 
| name | Nom de la clé de registre. | String | Oui | 
| value | Valeur de la clé de registre. | String/Number/Array | Oui | 
| type | Type de valeur de la clé de registre. | String | Oui | 

**Préfixes de chemin pris en charge**
+ `HKEY_CLASSES_ROOT / HKCR:`
+ `HKEY_USERS / HKU:`
+ `HKEY_LOCAL_MACHINE / HKLM:`
+ `HKEY_CURRENT_CONFIG / HKCC:`
+ `HKEY_CURRENT_USER / HKCU:`

**Types pris en charge**
+ `BINARY`
+ `DWORD`
+ `QWORD`
+ `SZ`
+ `EXPAND_SZ`
+ `MULTI_SZ`

**Exemple de saisie : définir les valeurs des clés de registre**

```
  - name: SetRegistryKeyValues
    action: SetRegistry
    maxAttempts: 3
    inputs:
      - path: HKLM:\SOFTWARE\MySoftWare
        name: MyName
        value: FirstVersionSoftware
        type: SZ
      - path: HKEY_CURRENT_USER\Software\Test
        name: Version
        value: 1.1
        type: DWORD
```

**Sortie**

Aucune.

### Mettre à jour le système d'exploitation (Linux, Windows)
<a name="action-modules-updateos"></a>

Le module d'action **UpdateOS** ajoute la prise en charge de l'installation des mises à jour Windows et Linux. Il installe toutes les mises à jour disponibles par défaut. Vous pouvez également configurer une liste d'une ou de plusieurs mises à jour spécifiques à installer par le module d'action. Vous pouvez également spécifier les mises à jour à exclure de l'installation.

Si des listes « à inclure » et « à exclure » sont fournies, la liste des mises à jour qui en résulte ne peut inclure que celles répertoriées dans la liste « à inclure » qui ne figurent pas dans la liste « à exclure ».

**Note**  
**UpdateOS** ne prend pas en charge Amazon Linux 2023 ()AL2023. Nous vous recommandons de mettre à jour votre AMI de base vers la nouvelle version fournie avec chaque nouvelle version. Pour d'autres alternatives, consultez la section [Contrôler les mises à jour reçues à partir des versions majeures et mineures](https://docs.aws.amazon.com/linux/al2023/ug/deterministic-upgrades.html#controlling-release-updates) dans le *Guide de l'utilisateur Amazon Linux 2023*.
+ **Fenêtres**. Les mises à jour sont installées à partir de la source de mise à jour configurée sur la machine cible.
+ **Linux**. L'application recherche le gestionnaire de packages pris en charge sur la plate-forme Linux et utilise l'un ou l'autre `yum` ou le gestionnaire de `apt-get` packages. Si aucun des deux n'est pris en charge, une erreur est renvoyée. Vous devez être `sudo` autorisé à exécuter le module d'action **UpdateOS**. Si vous n'avez pas d'`sudo`autorisations, un `error.Input` est renvoyé.


**Input**  

| Nom de la touche | Description | Type | Obligatoire | 
| --- | --- | --- | --- | 
| include |  Pour Windows, vous pouvez spécifier les éléments suivants : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/toe-action-modules.html) Pour Linux, vous pouvez spécifier un ou plusieurs packages à inclure dans la liste des mises à jour à installer.  | Liste de chaînes | Non | 
| exclude |  Pour Windows, vous pouvez spécifier les éléments suivants : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/imagebuilder/latest/userguide/toe-action-modules.html) Pour Linux, vous pouvez spécifier un ou plusieurs packages à exclure de la liste des mises à jour à installer.  | Liste de chaînes | Non | 

**Exemple de saisie : ajout d'un support pour l'installation de mises à jour Linux**

```
  - name: UpdateMyLinux
    action: UpdateOS
    onFailure: Abort
    maxAttempts: 3
    inputs:
      exclude:
        - ec2-hibinit-agent
```

**Exemple de saisie : ajout d'un support pour l'installation des mises à jour Windows**

```
  - name: UpdateWindowsOperatingSystem
    action: UpdateOS
    onFailure: Abort
    maxAttempts: 3
    inputs:
      include:
        - KB1234567
        - '*Security*'
```

**Sortie**

Aucune.