Найти раздел с существующим путем - PullRequest
2 голосов
/ 15 апреля 2019

Мне нужно найти номер раздела внешнего диска, который содержит определенную папку.

Я попытался использовать Get-Disk | Where-Object и выполнить фильтрацию по понятному имени «MSFT Virtual Disk», однако при использовании виртуальных сред этоПодход не работает.

Я считаю, что то, что я ищу, нуждается в нескольких переменных, соединенных вместе, но, учитывая, что я достаточно новичок в 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 голосов
/ 15 апреля 2019

Это то, что вы ищете:

$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. (Подробности https://docs.microsoft.com/en-us/powershell/module/storage/get-partition?view=win10-ps)

0 голосов
/ 15 апреля 2019

Возможно, вы больше ищете объемы 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...