---
title: "Réenregistrer des VM dans un nouveau PCC"
description: "Découvrez comment réenregistrer des VM sur un nouveau service depuis d'anciens datastores"
url: https://docs.ovhcloud.com/fr/guides/hosted-private-cloud/powered-by-vmware/vmware-register-vmx
lang: fr
lastUpdated: 2021-03-24
---
# Réenregistrer des VM dans un nouveau PCC

## Objectif

Suite à un incident, des machines virtuelles n'apparaissent plus dans votre inventaire vSphere mais l'ensemble des fichiers est toujours présent sur les datastores.

**Découvrez comment réinscrire des VM d'un datastore dans votre inventaire vSphere**

## Prérequis

- Être contact administrateur de l'infrastructure [Hosted Private Cloud](https://www.ovhcloud.com/fr/enterprise/products/hosted-private-cloud/), afin de recevoir les identifiants de connexion.
- Avoir un identifiant utilisateur actif (créé dans l'<ManagerLink to="/">espace client OVHcloud</ManagerLink>)

## En pratique

Dans votre [interface vSphere](/fr/guides/hosted-private-cloud/powered-by-vmware/vsphere-interface-connexion.md)
, placez-vous dans la vue `Stockage
`.
![vue stockage](/images/hosted-private-cloud/powered-by-vmware/vmware-register-vmx/register-vmx-01.png)
Sélectionnez un datastore dans la liste.

![sélectionner datastore](/images/hosted-private-cloud/powered-by-vmware/vmware-register-vmx/register-vmx-02.png)
Dans les dossiers de ce datastore, sélectionnez le fichier `.vmx`
 et cliquez sur `Enregistrer la VM
`.
![enregistrer VM](/images/hosted-private-cloud/powered-by-vmware/vmware-register-vmx/register-vmx-03.png)
Complétez les informations requises puis cliquez sur `Terminer
`.
![enregistrer VM](/images/hosted-private-cloud/powered-by-vmware/vmware-register-vmx/register-vmx-04.png)
Ces mêmes opérations sont à répéter sur chaque datastore et pour chaque VM à re-enregister.

Vérifiez les paramètres de vos VM (nom, [portgroup](/fr/guides/hosted-private-cloud/powered-by-vmware/create-vlan.md)
, etc...) en faisant un clic droit sur chacune d'elles puis en sélectionnant `Edit Settings
`.
![modifier paramètres](/images/hosted-private-cloud/powered-by-vmware/vmware-register-vmx/register-vmx-06.png)
En cas d'erreur de paramétrage, un message d'erreur vous sera affiché lorsque vous rallumerez la VM.

Vous pourrez rallumer une VM en faisant un clic droit sur celle-ci puis en cliquant sur `Power On
`
![enregistrer VM](/images/hosted-private-cloud/powered-by-vmware/vmware-register-vmx/register-vmx-05.png)
### Automatisation

Dans le cas où vous auriez plusieurs dizaines de VM et/ou datastores, il est possible d'utiliser des scripts pour effectuer le parcours des datastores et l'enregistrement des VM s'y trouvant.

#### Avec PowerCLI

VMware fournit les PowerCLI pour les administrateurs VMware utilisant PowerShell : [Installez PowerCLI](https://docs.vmware.com/fr/VMware-vSphere/6.5/com.vmware.vsphere.install.doc/GUID-F02D0C2D-B226-4908-9E5C-2E783D41FE2D.html).

Vous pouvez ensuite utiliser le script ci-dessous, adapté de celui écrit par [LucD](https://www.lucd.info/2009/12/02/raiders-of-the-lost-vmx/).

```powershell
function register-vmxX {
    param($entityName = $null,$dsNames = $null,$template = $false,$ignore = $null,$checkNFS = $true,$whatif=$false)

    function Get-Usage{
        Write-Host "Parameters incorrect" -ForegroundColor red
        Write-Host "register-vmxX -entityName  -dsNames [,...]"
        Write-Host "entityName   : a cluster-, datacenter or ESX hostname (not together with -dsNames)"
        Write-Host "dsNames      : one or more datastorename names (not together with -entityName)"
        Write-Host "ignore       : names of folders that shouldn't be checked"
        Write-Host "template     : register guests ($false)or templates ($true) - default : $false"
        Write-Host "checkNFS     : include NFS datastores - default : $true"
        Write-Host "whatif       : when $true will only list and not execute - default : $false"
    }

    if(($entityName -ne $null -and $dsNames -ne $null) -or ($entityName -eq $null -and $dsNames -eq $null)){
        Get-Usage
        break
    }

    if($dsNames -eq $null){
        switch((Get-Inventory -Name $entityName).GetType().Name.Replace("Wrapper","")){
            "Cluster"{
                $dsNames = Get-Cluster -Name $entityName | Get-VMHost | Get-Datastore | where {$_.Type -eq "VMFS" -or $checkNFS} | % {$_.Name}
            }
            "Datacenter"{
                $dsNames = Get-Datacenter -Name $entityName | Get-Datastore | where {$_.Type -eq "VMFS" -or $checkNFS} | % {$_.Name}
            }
            "VMHost"{
                $dsNames = Get-VMHost -Name $entityName | Get-Datastore | where {$_.Type -eq "VMFS" -or $checkNFS} | % {$_.Name}
            }
            Default{
                Get-Usage
                exit
            }
        }
    }
    else{
        $dsNames = Get-Datastore -Name $dsNames | where {$_.Type -eq "VMFS" -or $checkNFS} | Select -Unique | % {$_.Name}
    }

    $dsNames = $dsNames | Sort-Object
    $pattern = "*.vmx"
    if($template){
        $pattern = "*.vmtx"
    }

    foreach($dsName in $dsNames){
        Write-Host "Checking " -NoNewline; Write-Host -ForegroundColor red -BackgroundColor yellow $dsName
        $ds = Get-Datastore $dsName | Select -Unique | Get-View
        $dsBrowser = Get-View $ds.Browser
        $dc = Get-View $ds.Parent
        while($dc.MoRef.Type -ne "Datacenter"){
            $dc = Get-View $dc.Parent
        }
        $tgtfolder = Get-View $dc.VmFolder
        $esx = Get-View $ds.Host[0].Key
        $pool = Get-View (Get-View $esx.Parent).ResourcePool

        $vms = @()
        foreach($vmImpl in $ds.Vm){
            $vm = Get-View $vmImpl
            $vms += $vm.Config.Files.VmPathName
        }
        $datastorepath = "[" + $ds.Name + "]"

        $searchspec = New-Object VMware.Vim.HostDatastoreBrowserSearchSpec
        $searchspec.MatchPattern = $pattern

        $taskMoRef = $dsBrowser.SearchDatastoreSubFolders_Task($datastorePath, $searchSpec)

        $task = Get-View $taskMoRef
        while ("running","queued" -contains $task.Info.State){
            $task.UpdateViewData("Info.State")
        }
        $task.UpdateViewData("Info.Result")
        foreach ($folder in $task.Info.Result){
            if(!($ignore -and (&{$res = $false; $folder.FolderPath.Split("]")[1].Trim(" /").Split("/") | %{$res = $res -or ($ignore -contains $_)}; $res}))){
                $found = $FALSE
                if($folder.file -ne $null){
                    foreach($vmx in $vms){
                        if(($folder.FolderPath + $folder.File[0].Path) -eq $vmx){
                            $found = $TRUE
                        }
                    }
                    if (-not $found){
                        if($folder.FolderPath[-1] -ne "/"){$folder.FolderPath += "/"}
                        $vmx = $folder.FolderPath + $folder.File[0].Path
                        if($template){
                            $params = @($vmx,$null,$true,$null,$esx.MoRef)
                        }
                        else{
                            $params = @($vmx,$null,$false,$pool.MoRef,$null)
                        }
                        if(!$whatif){
                            $taskMoRef = $tgtfolder.GetType().GetMethod("RegisterVM_Task").Invoke($tgtfolder, $params)
                            Write-Host "`t" $vmx "registered"
                        }
                        else{
                            Write-Host "`t" $vmx "registered" -NoNewline; Write-Host -ForegroundColor blue -BackgroundColor white " ==> What If"
                        }
                    }
                }
            }
        }
        Write-Host "Done"
        }
    }
```

:::info
Le script ci-dessous à été adapté pour l'environnement VMware OVHcloud.
Le parcours des datastores NFS est activé par défaut.

:::

Après avoir déclaré le script dans votre environnement, vous pouvez l'utiliser de la façon suivante :

```powershell
register-vmxX -entityName "pcc-192-0-2-1_datacenter1337"
register-vmxX -dsNames "ssd-012345","pcc-012345"
register-vmxX -dsNames "ssd-012345","pcc-012345" -template:$true
register-vmxX -entityName "pcc-192-0-2-1_datacenter1337" -ignore "upload-vpn"
register-vmxX -dsNames "ssd-012345","pcc-012345" -ignore "upload-vpn" -checkNFS:$true
register-vmxX -entityName "pcc-192-0-2-1_datacenter1337" -whatif:$true
```

## Aller plus loin

Échangez avec notre [communauté d’utilisateurs](https://community.ovhcloud.com/).
