1

マウントされていないボリュームを物理ディスクにリンクするにはどうすればよいですか?

DiskpartWMIC、または PowerShell WMIによって番号付けされたディスク 3 で、マウントされていないボリュームを見つけてマウントする必要があるとします。スクリプトを使用して、ディスク 3 のどのボリュームがマウントされていないかを調べるにはどうすればよいですか? または、別の方法として、特定のマウントされていないボリューム (DriveLetter を持たない) が存在する物理ディスクはどれですか?

ボリュームがアンマウントされると、そのボリュームの論理ディスクまたはマウント ポイントは存在しません。関連はメソッドで見つけられると思いますが、GetRelatedそのようなタスクに適したコード例が見つかりません。

4

2 に答える 2

2

これを試してみてください。

  • $targetDiskWMI を使用して、特定のドライブ インデックスのマウントされていないすべてのパーティションを取得する
  • diskpart スクリプトを使用して、ターゲット ディスクで検出されたパーティションを次に使用可能なドライブ文字にマウントします。

メソッドを使用するGetRelatedことは、何を関連付ける必要があるかを知ることです。探しているものを表す WMI クラスを知っておくと役立ちますWin32_DiskPartitionWin32_DiskPartitionあなたの場合、論理ディスクに関連付けられていない(マウントされていない)パーティションを見つけたいので、関連付けられていないインスタンスを探しますWin32_LogicalDisk

特定の物理ディスク上のアンマウントされたボリュームのみが必要なため、さらにクラスを関連付ける必要があります。これを行うには、Win32_DiskPartitionの関連付けられWin32_DiskDriveたインスタンスを取得する必要があります。

$targetDisk = 3

$unmounted = gwmi -class win32_DiskPartition | ? {
    ($_.GetRelated('Win32_LogicalDisk')).Count -eq 0 
}

if ($unmounted) {
    $commands = @()
    $unmounted | ? { $_.GetRelated('Win32_DiskDrive') | ? { $_.Index -eq $targetDisk} } | % {
        $commands += "select disk {0}" -f $_.DiskIndex
        $commands += "select partition {0}" -f ($_.Index + 1)
        $commands += "assign"
    }

    $tempFile = [io.path]::GetTempFileName()
    $commands | out-file $tempFile -Encoding ASCII

    $output = & diskpart.exe /s $tempFile 2>&1
    if ($LASTEXITCODE -ne 0) {
        Write-Error $output
    }
}
于 2012-01-22T03:50:55.490 に答える