查找具有现有路径的分区

时间:2019-04-15 00:15:47

标签: powershell

我需要找到包含特定文件夹的外部磁盘的分区号。

我尝试使用Get-Disk | Where-Object并使用友好名称“ MSFT虚拟磁盘”进行过滤,但是在使用虚拟环境时,此方法不起作用。

我相信我要寻找的东西需要多个变量串在一起,但是鉴于我是Powershell的新手,所以我想请教一下。

  • 我以前的尝试是使用硬编码方法,找到一个虚拟磁盘并附加它,然后调用预期的分区。
$Foldername = Get-ChildItem E:\Media$\windowsimagebackup\$PCN\backup*
$Foldername = "E:\Media$\windowsimagebackup\$PCN\" + $Foldername.Name
$VHDName = Get-ChildItem $Foldername *.vhdx | Where-Object {$_.Length -GT 1000000000}
$VHDName = $VHDName.Name
$path = $Foldername + "\" + $VHDName

Mount-DiskImage -ImagePath $path

$DiskNumber = Get-Disk | Where-Object {$_.FriendlyName -Eq "Msft Virtual Disk"}
$DiskNumber = $DiskNumber.Number

Set-Partition -PartitionNumber 2 -DiskNumber $DiskNumber -NewDriveLetter M
  • 我希望做的是
  • 列出所有活动驱动器
$Disks = Get-Disk | ##Filter the Results to display active drive letters## 
  • 测试每个驱动器以查看是否存在路径
$Test = Test-Path $Disk.Driveletter\$Path
  • 为磁盘和分区设置一个包含所需路径的变量

  • 某种形式的错误捕获,以防脚本找到与路径匹配的2个磁盘

2 个答案:

答案 0 :(得分:0)

也许您正在寻找Get-Volume卷:

DriveLetter FriendlyName FileSystemType DriveType HealthStatus OperationalStatus SizeRemaining      Size
----------- ------------ -------------- --------- ------------ ----------------- -------------      ----
C                        NTFS           Fixed     Healthy      OK                    106.67 GB 465.21 GB
L                        Unknown        CD-ROM    Healthy      Unknown                     0 B       0 B
F                        Unknown        Removable Healthy      Unknown                     0 B       0 B
G                        Unknown        Removable Healthy      Unknown                     0 B       0 B
H                        Unknown        Removable Healthy      Unknown                     0 B       0 B
K                        Unknown        Removable Healthy      Unknown                     0 B       0 B
D           Nouveau nom  NTFS           Fixed     Healthy      OK                      1.81 TB   3.46 TB
E           Nouveau nom  NTFS           Fixed     Healthy      OK                    745.83 GB   2.59 TB
J                        NTFS           Fixed     Healthy      OK                     45.45 MB    450 MB

它允许您查找可用卷。

另一种面向PowerShell的方法是对Get-PSDrive使用FileSystem过滤。

您可以找到有关用:挂载的音量的更多详细信息。

Get-WmiObject Win32_Volume
Get-WmiObject Win32_Volume | Format-Table Name, Label, FreeSpace, Capacity

答案 1 :(得分:0)

您正在寻找的东西吗?

$dirToFind = 'directory' 
Get-Partition | 
Where-Object -FilterScript { [char]::IsLetter($_.DriveLetter) -and [bool](Get-ChildItem -Path "$($_.DriveLetter):\" -Filter "$dirToFind" -Directory -Recurse -ErrorAction SilentlyContinue) } |
Select-Object -Property DriveLetter

请注意,Get-Partition是从Windows 10和Windows Server 2016上可用的存储模块中提取的cmdlet。(详细信息https://docs.microsoft.com/en-us/powershell/module/storage/get-partition?view=win10-ps