---
title: "Reregistar VM num novo PCC"
description: "Saiba como voltar a registar VM num novo serviço a partir de datastores antigos"
url: https://docs.ovhcloud.com/pt/guides/hosted-private-cloud/powered-by-vmware/vmware-register-vmx
lang: pt
lastUpdated: 2021-03-24
---
# Reregistar VM num novo PCC

:::info
Esta tradução foi automaticamente gerada pelo nosso parceiro SYSTRAN. Em certos casos, poderão ocorrer formulações imprecisas, como por exemplo nomes de botões ou detalhes técnicos. Recomendamos que consulte a versão inglesa ou francesa do manual, caso tenha alguma dúvida. Se nos quiser ajudar a melhorar esta tradução, clique em "Contribuir" nesta página.

:::

## Objetivo

No seguimento de um incidente, máquinas virtuais já não aparecem no seu inventário vSphere, mas o conjunto dos ficheiros ainda está presente nos datastores.

**Saiba como reinscrever as VMs de um datastore no seu inventário vSphere**

## Requisitos

- Ter contacto com o administrador da infraestrutura [Hosted Private Cloud](https://www.ovhcloud.com/pt/enterprise/products/hosted-private-cloud/), a fim de receber os identificadores de ligação.
- Ter um identificador de utilizador ativo (criado na <ManagerLink to="/">Área de Cliente OVHcloud</ManagerLink>)

## Instruções

Na sua [interface vSphere](/pt/guides/hosted-private-cloud/powered-by-vmware/vsphere-interface-connexion.md)
, coloque-se na vista `Storage
`.
![para armazenamento](/images/hosted-private-cloud/powered-by-vmware/vmware-register-vmx/register-vmx-01.png)
Selecione um datastore da lista.

![selecionar datastore](/images/hosted-private-cloud/powered-by-vmware/vmware-register-vmx/register-vmx-02.png)
Nos ficheiros deste datastore, selecione o ficheiro `.vmx`
 e clique em `Register VM
`.
![registar VM](/images/hosted-private-cloud/powered-by-vmware/vmware-register-vmx/register-vmx-03.png)
Introduza as informações necessárias e clique em `Finish
`.
![registar VM](/images/hosted-private-cloud/powered-by-vmware/vmware-register-vmx/register-vmx-04.png)
Estas operações devem ser repetidas em cada datastore e em cada VM a re-registar.

Verifique os parâmetros das suas VM (nome, [portgroup](/pt/guides/hosted-private-cloud/powered-by-vmware/create-vlan.md)
, etc...) ao clicar com o botão direito do rato sobre cada uma delas e ao selecionar o `Edit Settings
`.
![modificar parâmetros](/images/hosted-private-cloud/powered-by-vmware/vmware-register-vmx/register-vmx-06.png)
Em caso de erro de configuração, ser-lhe-á apresentada uma mensagem de erro quando voltar a ligar a VM.

Pode reacender uma VM ao clicar com o botão direito do rato e clicar em `Power On
`
![registar VM](/images/hosted-private-cloud/powered-by-vmware/vmware-register-vmx/register-vmx-05.png)
### Automatização

Caso tenha várias dezenas de VMs e/ou datastores, é possível utilizar scripts para efetuar o percurso dos datastores e o registo das VMs que neles se encontram.

#### Com PowerCLI

A VMware fornece PowerCLI para os administradores VMware que utilizam PowerShell: [Installez PowerCLI](https://docs.vmware.com/fr/VMware-vSphere/6.5/com.vmware.vsphere.install.doc/GUID-F02D0C2D-B226-4908-9E5C-2E783D41FE2D.html).

De seguida, pode utilizar o script abaixo, adaptado ao escrito pelo [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
O script abaixo foi adaptado ao ambiente VMware OVHcloud.
O percurso dos datastores NFS está ativado por predefinição.

:::

Depois de declarar o script no seu ambiente, pode utilizá-lo da seguinte forma:

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

## Saiba mais

Fale com a nossa comunidade de utilizadores em [https://community.ovh.com/en/](https://community.ovh.com/en/).
