#suppression d'une entrée VHD dans BCD

$lecteur="d:"
$fin="`nAppuyer sur Entrée pour terminer ... "

[String[]]$tabguid=@()
[String[]]$tabdescription=@()
[String[]]$tabdisque=@()

$rx = [regex] "\{\w{8}-\w{4}-\w{4}-\w{4}-\w{12}\}"
$i=0
$rep=bcdedit
foreach ($ligne in $rep){
    if ($ligne.Contains("description")){ 
        $description=$ligne.Substring(24)
    }
    $m = $rx.match($ligne)
    if ($m.success) {
        $guid = $m.value
    }
    if ($ligne.Contains("osdevice") -and $ligne.Contains("vhd")){
        $i++
        Write-Host "entrée: $i"
        Write-Host $description
        $disque=($ligne.Substring(36)).Insert(0,$lecteur)
        Write-Host $disque
        Write-Host "-------------------------------------"
        $tabdescription+=$description
        $tabguid+=$guid
        $tabdisque+=$disque     
    }
}

If ($i -eq 0) {
    Read-host "Pas d'entrée à supprimer, $fin" 
}
else {

    $rep=Read-Host -Prompt "Numéro de l'entrée à supprimer "
    if (($rep -ne "") -and ($rep -le $i) -and ($rep -ne 0)) {
        $description=$tabdescription[$rep-1]
        $disque=$tabdisque[$rep-1]
        $sup=Read-Host -Prompt "$description : confirmer la suppression (o/n) "
        if ($sup -eq "o"){
            $guid=$tabguid[$rep-1]
            $ret=bcdedit /delete $guid
            if ($ret -ne "L'opération a réussi."){
                 Read-host "$ret, $fin"
                 break
            }
            if (Test-Path $disque){
                Remove-Item -Path $disque      
            }
            Read-host "$description VHD Boot supprimé, $fin"        
        }
    }
    else {
        Read-host "L'entrée $rep n'existe pas, $fin"  
    }
}
