发布于 2016-07-19 17:11:42
将此代码集成到上面的答案中:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * From Win32_Volume Where Name = 'D:\\'")
For Each objItem in colItems
    objItem.AddMountPoint("W:\\Scripts\\")
Next它在Windows7 PowerShell中使用卷DeviceID而不是它的DriveLetter,并将卷与磁盘3相关联,如上面的答案所示。类似的方法(AddMountPoint或Mount)可以像上面那样使用,但不需要使用Diskpart。
发布于 2012-01-22 03:50:55
试试看,它会:
$targetDisk的所有未挂载分区使用GetRelated方法完全是为了了解您需要关联什么。它有助于了解WMI类代表您要寻找的Win32_DiskPartition。在您的示例中,您希望找到与逻辑磁盘(未挂载)不相关联的分区,因此我们查找没有关联Win32_LogicalDisk的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
    }
}https://stackoverflow.com/questions/8958340
复制相似问题