Отключить VHDX-файл, смонтированный в папке?

на USB-накопителе у меня есть файл VHDx (который заблокирован).

Я хочу создать два сценария для быстрого монтирования и отключения файла VHDx в системе Windows 8.

Я хочу подключить диск в подпапке на моем USB-диске.

мне удалось написать скрипт монтирования:

$scriptDir = Split-Path($MyInvocation.MyCommand.Definition)

$vhdPath = Join-Path $scriptDir "_privatecrypted.vhdx"
$mountPath = Join-Path $scriptDir "Data"

if(-not (Get-ChildItem $mountPath -Force)) # check if not already mounted
{
    Mount-VHD -NoDriveLetter -Path $mountPath
}
else{
    Write-Warning "Already mounted"
}

однако скрипт dismount не работает:

$scriptDir = Split-Path($MyInvocation.MyCommand.Definition)

$vhdPath = Join-Path $scriptDir "_privatecrypted.vhdx"
$mountPath = Join-Path $scriptDir "Data"

if(Get-ChildItem $mountPath) # check if not already mounted
{
    Dismount-VHD -Path $vhdPath
}
else{
    Write-Warning "Not mounted"
}

на Dismount-VHD -Path $vhdPath ошибка :

отключить-виртуальный жесткий диск : Élémentбыл N:_privatecrypted.VHDX и introuvable.

(можно перевести как item N:_privatecrypted.vhdx introuvable cannot be found)

я тоже попробую с Dismount-VHD -Path $mountPath, но я получаю еще одно исключение:

Dismount-VHD: Le paramètre n'est pas valide. "N:Data" n'est па ООН компьютеризованная де-диске дурь virtuel существует.

(перевод: недопустимый параметр: n:Data не является дисковым файлом)

Как правильно отключить VHD-файл?

11
задан Steve B
31.03.2023 17:42 Количество просмотров материала 2878
Распечатать страницу

1 ответ

С помощью поток technet, наконец-то мои скрипты заработали:

последние рабочие скрипты следующие:

Гора.пс1 :

$scriptDir = Split-Path($MyInvocation.MyCommand.Definition)

$vhdPath = Join-Path $scriptDir "\_private\crypted.vhdx"
$mountPath = Join-Path $scriptDir "\Data"

if(-not (Get-ChildItem $mountPath -ea SilentlyContinue)) # check if not already mounted
{
    $diskPartScriptContent = @( 
        "select vdisk file=$vhdPath", 
        "attach vdisk"
        )
    $diskPartScriptFile = Join-Path $scriptDir "_diskpart.tmp"
    Set-Content  -Path $diskPartScriptFile -Value $diskPartScriptContent
    $result = (& diskpart.exe /s $diskPartScriptFile)

    & mountvol n:\data "\?\Volume{820c8453-f504-11e2-bedd-9e2cd2a4b688}"

}
else{
    Write-Warning "Already mounted"
}

спешиться.ps1:

$scriptDir = Split-Path($MyInvocation.MyCommand.Definition)

$vhdPath = Join-Path $scriptDir "\_private\crypted.vhdx"
$mountPath = Join-Path $scriptDir "\Data"

if(Get-ChildItem $mountPath -ea SilentlyContinue) # check if not already mounted
{
    $diskPartScriptContent = @( 
        "select vdisk file=$vhdPath", 
        "detach vdisk"
        )
    $diskPartScriptFile = Join-Path $scriptDir "_diskpart.tmp"
    Set-Content  -Path $diskPartScriptFile -Value $diskPartScriptContent
    & diskpart.exe /s $diskPartScriptFile
    & mountvol $mountPath /d

}
else{
    Write-Warning "Not mounted"
}

Я жестко закодировал идентификатор Тома в сценарии монтирования. Если кто-то знает способ получить это автоматически, я был бы признателен.

но я могу жить с этим, потому что мой объем всегда одинаков.

0
отвечен Steve B 2023-04-02 01:30

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх