S’applique à
Windows 10, version 1607, all editions Win 10 Ent LTSB 2016 Win 10 IoT Ent LTSB 2016 Windows 10, version 1809, all editions Win 10 Ent LTSC 2019 Win 10 IoT Ent LTSC 2019 Windows 10 ESU Windows 10 Enterprise LTSC 2021 Windows 10 IoT Enterprise LTSC 2021 Windows 11 version 23H2, all editions Windows 11 version 24H2, all editions Windows 11 version 25H2, all editions Windows 11 version 26H1, all editions Windows Server 2016 Windows Server 2019 Windows Server 2022 Windows Server, version 23H2 Windows Server 2025

Date de publication d’origine : 16 mars 2026

ID de la base de connaissances : 5084567

Dans cet article

Vue d'ensemble

Ce guide décrit le système de déploiement automatisé pour les mises à jour de certificat de base de données de démarrage sécurisé Windows à l’aide de stratégie de groupe et de vagues de déploiement progressif.

L’automatisation du déploiement de certificat de démarrage sécurisé est un système PowerShell qui déploie les mises à jour de certificat de base de données de démarrage sécurisé Windows sur des machines jointes à un domaine de manière contrôlée et graduée.

Retour au début

Fonctionnalités clés

Fonctionnalité

Description

Déploiement gradué

1 > 2 > 4 > 8... appareils par compartiment

Blocage automatique

Les compartiments avec des appareils inaccessibles sont exclus

Déploiement automatisé d’objets de stratégie de groupe

Un script d’orchestrateur unique gère tout

Exécution planifiée des tâches

Aucune invite interactive requise

Surveillance en temps réel

Visionneuse d’état avec barre de progression

Retour au début 

Informations de référence sur les paramètres de Mises à jour de certificat

Contenu de cette section

Stratégie de groupe AvailableUpdatesPolicy

Emplacement du Registre

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot

Nom

AvailableUpdatesPolicy

Valeur

0x5944 (DWORD)

Il s’agit de la clé contrôlée par l’objet de stratégie de groupe/ADMX qui :

  • Persistance entre les redémarrages

  • Est défini par stratégie de groupe/GPM

  • Ne provoque pas de boucles de nouvelle tentative (effacée via ClearRolloutFlags)

  • Clé correcte pour le déploiement piloté par une stratégie

Référence : méthode stratégie de groupe Objects (GPO) de démarrage sécurisé pour les appareils Windows avec des mises à jour gérées par le service informatique

Revenir à « Informations de référence sur les paramètres de Mises à jour de certificat » 

WinCSFlags - Indicateurs système de configuration Windows

Les administrateurs de domaine peuvent également utiliser le système de configuration Windows (WinCS) publié avec les mises à jour du système d’exploitation Windows pour déployer les mises à jour de démarrage sécurisé sur des clients et serveurs Windows joints à un domaine. Il se compose d’un utilitaire d’interface de ligne de commande (CLI) pour interroger et appliquer des configurations de démarrage sécurisé localement à un ordinateur.

Nom de fonctionnalité

Clé WinCS

Description

Feature_AllKeysAndBootMgrByWinCS

F33E0C8E002

L’activation de cette clé permet l’installation des nouveaux certificats de démarrage sécurisé fournis par Microsoft suivants sur votre appareil.

  • Microsoft Corporation KEK 2K CA 2023

  • Windows UEFI CA 2023

  • Microsoft UEFI CA 2023

  • Microsoft Option UEFI ROM CA 2023

Référence : API Windows Configuration System (WinCS) pour le démarrage sécurisé

Revenir à « Informations de référence sur les paramètres de Mises à jour de certificat »

Retour au début

Architecture

Workflow d’architecture

Retour au début 

Phase 1 : Détection et surveillance de l’état au niveau de l’entreprise

Contenu de cette section

Scripts nécessaires pour la phase 1

Exemples de scripts de collecte de données d’inventaire de démarrage sécurisé

Exemple de nom de script

Fonction 

S’exécute sur 

Exemple de script Detect-SecureBootCertUpdateStatus.ps1 

Collecte les données de status de l’appareil 

Chaque point de terminaison (via un objet de stratégie de groupe) 

Exemple de script Aggregate-SecureBootData.ps1 

Génère des rapports et des tableaux de bord 

station de travail Administration 

Exemple de script Deploy-GPO-SecureBootCollection.ps1

Automatise la création d’objets de stratégie de groupe pour la collecte de données 

Contrôleur de domaine 

Tableau de bord de l’état du certificat de démarrage sécurisé

Retour à « Phase 1 : Détection et surveillance de l’état au niveau de l’entreprise »

Test local

Avant de déployer via un objet de stratégie de groupe, testez le script de collecte sur un seul ordinateur pour vérifier les fonctionnalités. 

  • Exécuter le script de collection localement Ouvrez une invite PowerShell avec élévation de privilèges et exécutez :

    & .\Detect-SecureBootCertUpdateStatus.ps1 -OutputPath « C :\Temp\SecureBootTest » 

  • Vérifier la sortie JSON

    # View the collected data  Get-Content « C :\Temp\SecureBootTest\*_latest.json » | ConvertFrom-Json | Format-List

    Champs clés à vérifier SecureBootEnabled : doit avoir la valeur True ou False OverallStatus : Complete, ReadyForUpdate, NeedsData ou Error BucketHash : compartiment d’appareils pour la correspondance des données de confiance • SecureBootTaskEnabled : affiche status de la tâche de mise à jour de démarrage sécurisé.  

  • Script d’agrégation de test

    # Generate reports from collected data  & .\Aggregate-SecureBootCertStatus.ps1" '     -InputPath « C :\Temp\SecureBootTest » '     -OutputPath « C :\Temp\SecureBootReports » # Ouvrir le tableau de bord HTML   

    Start-Process "C:\Temp\SecureBootReports\SecureBoot_Dashboard_*.html"

Retour à « Phase 1 : Détection et surveillance de l’état au niveau de l’entreprise » 

Configuration du partage réseau

  • Créer le partage réseau Sur votre serveur de fichiers, créez un partage dédié pour les données de collecte :

    # Run on file server as Administrator  $SharePath = « D :\SecureBootCollection » $ShareName = « SecureBootData$ » # Créer un dossier New-Item -ItemType Directory -Path $SharePath -Force # Créer un partage masqué (le suffixe $ masque dans la liste de navigation) New-SmbShare -Name $ShareName -Path $SharePath '     -Description « Collection d’état de certificat de démarrage sécurisé » '     -FullAccess « Domain Admins » '     -ChangeAccess « Utilisateurs authentifiés »    

  • Configurer des autorisations NTFS

    # Get current ACL  $Acl = Get-Acl $SharePath # Autoriser les utilisateurs authentifiés à écrire des fichiers $WriteRule = New-Object System.Security.AccessControl.FileSystemAccessRule(     « Utilisateurs authentifiés »,     « CreateFiles,AppendData,WriteAttributes,WriteExtendedAttributes »,     « ContainerInherit,ObjectInherit »,     « None »,     « Autoriser » ) $Acl.AddAccessRule($WriteRule) # Autoriser le contrôle total des administrateurs de domaine (pour l’agrégation) $AdminRule = New-Object System.Security.AccessControl.FileSystemAccessRule(     « Administrateurs de domaine »,     « FullControl »,     « ContainerInherit,ObjectInherit »,     « None »,     « Autoriser » ) $Acl.AddAccessRule($AdminRule) # Appliquer des autorisations Set-Acl -Chemin $SharePath -AclObject $Acl       

  • Vérifier l’accès au partage

    # Test from a domain-joined workstation  Test-Path « \\fileserver\SecureBootData$ » # Doit retourner : True

Retour à « Phase 1 : Détection et surveillance de l’état au niveau de l’entreprise » 

Déploiement d’objets de stratégie de groupe

Utilisez le script d’automatisation fourni à partir d’un contrôleur de domaine :

Section # Exécuter sur le contrôleur de domaine en tant que domaine Administration pour l’unité d’organisation interactive – Recommandé # Remplacez « Contoso.com », « Contoso » par le nom du domaine # Remplacez FILESERVER par le nom du serveur de fichiers.  Le script affiche la liste des unités d’organisation sur laquelle déployer un objet de stratégie de groupe .\Deploy-GPO-SecureBootCollection.ps1 '     -DomainName « contoso.com » '     -AutoDetectOU '     -CollectionSharePath « \\FILESERVER\SecureBootLogs$ » '     -ScriptSourcePath .\Detect-SecureBootCertUpdateStatus.ps1" '     -Planifier « Daily » '     -ScheduleTime « 14:00 » '     -RandomDelayHours 4 

Ce script effectue les opérations suivantes :

  • Crée un objet de stratégie de groupe avec le nom spécifié

  • Copie le script de collection vers SYSVOL pour la haute disponibilité

  • Configure le script de démarrage de l’ordinateur

  • Lie l’objet de stratégie de groupe à l’unité d’organisation cible

  • Crée éventuellement une tâche planifiée pour la collecte périodique

Le tableau suivant fournit des conseils sur la durée du délai en fonction de la taille de votre flotte.

Taille de la flotte 

Plage de délai 

1 à 10 000 appareils 

4 heures 

10 000 à 50 000 appareils 

8 heures 

Plus de 50 000 appareils 

12 à 24 heures

Retour à « Phase 1 : Détection et surveillance de l’état au niveau de l’entreprise » 

Résumé des paramètres d’objet de stratégie de groupe

Setting 

Emplacement 

Valeur 

Script de démarrage 

Scripts de configuration → ordinateur 

Detect-SecureBootCertUpdateStatus.ps1 

Paramètres de script 

(identique) 

-OutputPath « \\server\share$ » 

Stratégie d’exécution 

Configuration de l’ordinateur → Administration modèles → PowerShell 

Autoriser la signature locale et distante 

Tâche planifiée 

Configuration de l’ordinateur → Préférences → Tâches planifiées 

Collection quotidienne/hebdomadaire

Retour à « Phase 1 : Détection et surveillance de l’état au niveau de l’entreprise » 

Vérification

  • Forcer la mise à jour des objets de stratégie de groupe sur Test Machine

    ## On a test workstation  gpupdate /force # Redémarrez les machines clientes au script de démarrage, sinon il se déclenchera selon la planification suivante.  Restart-Computer -Force

  • Vérifier la collecte de données

    # Vérifier si les données ont été collectées (sur un serveur de fichiers ou sur n’importe quel ordinateur) Get-ChildItem « \\fileserver\SecureBootData$ » |       Sort-Object LastWriteTime - Décroissant |       Select-Object -10   premiers # Vérifier le contenu JSON Get-Content « \\fileserver\SecureBootData$\TESTPC_latest.json » | ConvertFrom-Json 

  • Vérifier l’application d’objet de stratégie de groupe

    # Vérifier que l’objet de stratégie de groupe est appliqué à l’ordinateur gpresult /r /scope :computer | Select-String « SecureBoot » s Le script enregistre également une copie locale pour la redondance : Get-ChildItem « C :\ProgramData\SecureBootCollection\ » 

Retour à « Phase 1 : Détection et surveillance de l’état au niveau de l’entreprise »

Retour au début 

Phase 2 : Scripts d’orchestration de mise à jour du certificat de démarrage sécurisé

Important : Vérifiez que la phase 1 est terminée, y compris la collecte de données sur chaque point de terminaison vers des partages de serveur distants.

Contenu de cette section

Scripts nécessaires pour la phase 2

Exemples de scripts de collecte de données d’inventaire de démarrage sécurisé

Exemple de nom de script

Fonction 

S’exécute sur 

Exemple de script Detect-SecureBootCertUpdateStatus.ps1  

Collecte les données de status de l’appareil 

Chaque point de terminaison (via un objet de stratégie de groupe) 

Exemple de script Aggregate-SecureBootData.ps1

Génère des rapports et des tableaux de bord 

station de travail Administration 

Exemple de script Deploy-GPO-SecureBootCollection.ps1

Automatise la création d’objets de stratégie de groupe pour la collecte de données 

Contrôleur de domaine 

Exemple de script Start-SecureBootRolloutOrchestrator.ps1

Orchestration continue entièrement automatisée avec déploiement automatisé d’objets de stratégie de groupe pour l’installation de certificats

station de travail Administration 

Exemple de script Deploy-OrchestratorTask.ps1

Déploie le script Orchestrator en tant que tâche planifiée pour le déploiement automatisé

Contrôleur de domaine

Exemple de script Get-SecureBootRolloutStatus.ps1

Afficher les status de déploiement du certificat de démarrage sécurisé à partir de n’importe quelle station de travail

station de travail Administration

Exemple de script Enable-SecureBootUpdateTask.ps1

 Active la tâche de mise à jour de démarrage sécurisé

Sur les points de terminaison où la tâche est désactivée (Exécuter une seule fois pour activer la tâche si désactivée)

Retour à « Phase 2 : Scripts d’orchestration de mise à jour de certificat de démarrage sécurisé » 

Start-SecureBootRolloutOrchestrator.ps1

  • But: Orchestration entièrement automatisée et continue avec déploiement automatisé d’objets de stratégie de groupe.

  • Effet

    • Appels Aggregate-SecureBootData.ps1 pour le status de l’appareil

    • Génère des vagues de déploiement à l’aide du doublement progressif

    • Crée un objet de stratégie de groupe pour le déploiement de certificats à l’aide de l’une des méthodes suivantes

      • Stratégie de groupe de démarrage sécurisé AvailableUpdatesPolicy = 0x5944 (par défaut)

      • Méthode WinCS (Parameter –UseWinCS)

    • Crée des groupes de sécurité AD pour le ciblage

    • Ajoute des comptes d’ordinateur aux groupes de sécurité

    • Configure le filtrage de sécurité des objets de stratégie de groupe

    • Lie l’objet de stratégie de groupe à l’unité d’organisation cible

    • Surveille les compartiments bloqués (appareils inaccessibles)

    • Se débloque automatiquement lorsque les appareils récupèrent

  • Utilisation

    # Interactive (testing) .\Start-SecureBootRolloutOrchestrator.ps1 '     -AggregationInputPath « \\fileserver\SecureBootData$ » '     -ReportBasePath « C :\SecureBootReports » '     -PollIntervalMinutes 30

    # Interactive (testing), leveraging WinCS method .\Start-SecureBootRolloutOrchestrator.ps1 '     -AggregationInputPath « \\fileserver\SecureBootData$ » '     -ReportBasePath « C :\SecureBootReports » '     -PollIntervalMinutes 1440 -UseWinCS

  • commandes Administration

    # List blocked buckets .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath « C :\SecureBootReports » -ListBlockedBuckets

    # Unblock specific bucket .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath « C :\SecureBootReports » -UnblockBucket « Dell|Latitude5520|BIOS1.2"

    # Unblock all .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath « C :\SecureBootReports » -UnblockAll

  • les paramètres

    Parameter

    Valeur par défaut

    Description

    AggregationInputPath

    Obligé

    Chemin d’accès UNC aux fichiers JSON du point de terminaison

    ReportBasePath

    Obligé

    Chemin d’accès local pour les rapports et l’état

    TargetOU

    Racine du domaine

    Unité d’organisation pour lier des objets de stratégie de groupe

    WavePrefix

    SecureBoot-Rollout

    Préfixe d’affectation de noms d’objet de groupe/groupe

    MaxWaitHours

    72

    Heures avant de vérifier l’accessibilité de l’appareil

    PollIntervalMinutes

    1440

    Minutes entre vérifications d’état

    DryRun

    Faux

    Afficher ce qui se passerait sans modifications

Retour à « Phase 2 : Scripts d’orchestration de mise à jour de certificat de démarrage sécurisé »  

Deploy-OrchestratorTask.ps1

  • But: Déploie l’orchestrateur en tant que tâche planifiée Windows.

  • Avantages

    • Aucune invite de sécurité PowerShell (ExecutionPolicy Bypass)

    • S’exécute en arrière-plan en continu

    • Aucune interaction utilisateur requise

    • Survit aux redémarrages

  • Utilisation

    • Déployer avec un compte de service de domaine (recommandé)

      • Utiliser availableUpdates stratégie de groupe (méthode par défaut)

        .\Deploy-OrchestratorTask.ps1 '     -AggregationInputPath « \\server\SecureBootData$ » '     -ReportBasePath « C :\SecureBootReports » '     -ServiceAccount « DOMAINE\svc_secureboot »

      • Utiliser la méthode WinCS

        .\Deploy-OrchestratorTask.ps1 '     -AggregationInputPath « \\server\SecureBootData$ » '     -ReportBasePath « C :\SecureBootReports » '     -ServiceAccount « DOMAIN\svc_secureboot » -UseWinCS

    • Déployer avec un compte SYSTEM

      • Utiliser availableUpdates stratégie de groupe (méthode par défaut)

        .\Deploy-OrchestratorTask.ps1 '     -AggregationInputPath « \\server\SecureBootData$ » '     -ReportBasePath « C :\SecureBootReports »

      • Utiliser winCS method.\Deploy-OrchestratorTask.ps1

            -AggregationInputPath « \\server\SecureBootData$ » '     -ReportBasePath « C :\SecureBootReports » -UseWinCS

      • Conditions requises pour les comptes de service

        • Domain Administration (pour New-GPO, New-ADGroup, Add-ADGroupMember)

        • Accès en lecture au partage de fichiers JSON

        • Accès en écriture à ReportBasePath

Retour à « Phase 2 : Scripts d’orchestration de mise à jour de certificat de démarrage sécurisé »  

Get-SecureBootRolloutStatus.ps1

  • But: Affichez la progression du déploiement à partir de n’importe quelle station de travail.

  • Ce qu’il montre

    • État de la tâche planifiée (en cours d’exécution/prêt/arrêté)

    • Numéro d’onde actuel

    • Appareils ciblés ou mis à jour

    • Barre de progression du visuel

    • Résumé des compartiments bloqués

    • Lien vers le dernier tableau de bord HTML

  • Utilisation

    # Quick status check .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath « C :\SecureBootReports »

    # Continuous monitoring (refreshes every 30 seconds) .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath « C :\SecureBootReports » -Watch 30

    # View blocked buckets .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath « C :\SecureBootReports » -ShowBlocked

    # View wave history .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath « C :\SecureBootReports » -ShowWaves

    # View recent log .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath « C :\SecureBootReports » -ShowLog

    # Open dashboard in browser .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath « C :\SecureBootReports » -OpenDashboard

  • Exemple de sortie

    ==============================================================    ÉTAT DU DÉMARRAGE SÉCURISÉ    17-02-2026 19:30:00 ======================================================

    Scheduled Task: Running

    ROLLOUT PROGRESS ---------------------------------------- État : InProgress Vague actuelle : 5 Total ciblé : 1250 Mise à jour totale : 847

    Progress: [█████████████████████░░░░░░░░░░░░░░░░░░░] 67.8%

    BLOCKED BUCKETS: 2 buckets need attention   Exécuter avec -ShowBlocked pour plus d’informations

    LATEST DASHBOARD C:\SecureBootReports\Aggregation_20260217_193000\SecureBoot_Dashboard.html __________________________________________________________________________________________

Retour à « Phase 2 : Scripts d’orchestration de mise à jour de certificat de démarrage sécurisé »

Retour au début 

Étapes de déploiement E2E (Guide de référence rapide)

Contenu de cette section

Phase 1 : Infrastructure de détection

  • Étape 1 : Créer un partage de collection

    # On file server $sharePath = « D :\SecureBootData » New-Item -ItemType Directory -Path $sharePath -Force New-SmbShare -Name « SecureBootData$ » -Path $sharePath -FullAccess « Domain Admins » -ChangeAccess « Domain Computers »

    # Set NTFS permissions $acl = Get-Acl $sharePath $rule = New-Object System.Security.AccessControl.FileSystemAccessRule(« Domain Computers »,"Modify »,"Allow ») $acl. AddAccessRule($rule) Set-Acl $sharePath $acl

  • Étape 2 : Déployer l’objet de stratégie de groupe de détection

    .\Deploy-GPO-SecureBootCollection.ps1 `     -DomainName « contoso.com » '     -OUPath « OU=Workstations,DC=contoso,DC=com » '     -CollectionSharePath « \\server\SecureBootData$ »

  • Étape 3 : Attendre que les points de terminaison signalent (24 à 48 heures)

    # Vérifier la progression de la collecte (Get-ChildItem « \\server\SecureBootData$ » -Filter « *.json »). Compter

Retour à « Étapes de déploiement E2E (Guide de référence rapide) » 

Phase 2 : Déploiement orchestré

  • Étape 4 : Vérification des prérequis

    • Objet de stratégie de groupe de détection déployé (étape 2)

    • Au moins 50 points de terminaison signalant JSON

    • Compte de service avec des droits de Administration de domaine

    • Serveur d’administration avec PowerShell 5.1+

  • Étape 5 : Déployer Orchestrator en tant que tâche planifiée

    .\Deploy-OrchestratorTask.ps1 `     -AggregationInputPath « \\server\SecureBootData$ » '     -ReportBasePath « C :\SecureBootReports » '     -ServiceAccount « DOMAINE\svc_secureboot »

  • Étape 6 : Surveiller la progression

    .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports"

  • Étape 7 : Afficher le tableau de bord

    .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -OpenDashboard

  • Étape 8 : Gérer les compartiments bloqués

    # List blocked .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath « C :\SecureBootReports » -ListBlockedBuckets

    # Investigate and unblock .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath « C :\SecureBootReports » -UnblockBucket « Manufacturer|Modèle |BIOS »

  • Étape 9 : Vérifier l’achèvement

    .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" # L’état doit indiquer « Terminé »

Retour à « Étapes de déploiement E2E (Guide de référence rapide) »  

Files d’état

L’orchestrateur maintient l’état dans ReportBasePath\RolloutState\ :

Fichier

Description

RolloutState.json

Historique des vagues, appareils ciblés, status

BlockedBuckets.json

Compartiments nécessitant une investigation

DeviceHistory.json

Suivi de l’appareil par nom d’hôte

Orchestrator_YYYYMMDD.log

Journaux d’activité quotidiens

Retour à « Étapes de déploiement E2E (Guide de référence rapide) » 

Retour au début 

Résolution des problèmes

Contenu de cette section

L’orchestrateur ne progresse pas

  1. Vérifier la tâche planifiée

    Get-ScheduledTask -TaskName "SecureBoot-Rollout-Orchestrator"

  2. Vérifier les journaux

    Get-Content "C:\SecureBootReports\RolloutState\Orchestrator_*.log" -Tail 50

  3. Vérifier l’actualisation des données JSON

    (Get-ChildItem "\\server\SecureBootData$" -Filter "*.json" | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) }).Count

Revenir à « Résolution des problèmes » 

Compartiments bloqués

  1. Liste bloquée.

    .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets

  2. Examiner l’accessibilité de l’appareil.

  3. Recherchez les problèmes de microprogramme.

  4. Débloquer après enquête.

Revenir à « Résolution des problèmes »  

L’objet de stratégie de groupe ne s’applique pas

  1. Vérifiez que l’objet de stratégie de groupe existe.

    Get-GPO -Name "SecureBoot-Rollout-Wave*"

  2. Vérifiez le filtrage de sécurité.

    Get-GPPermission -Name "GPO-Name" -All

  3. Vérifiez que l’ordinateur se trouve dans le groupe de sécurité.

  4. Appliquez l’objet de stratégie de groupe sur la cible.

    gpupdate /force

Revenir à « Résolution des problèmes »

Retour au début 

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.