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 个磁盘,则会捕获某种形式的错误
解决方案
那是你正在寻找的东西:
$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?视图=win10-ps)
推荐阅读
- php - 清理 $_POST 和 $_GET 数组输入 OOP
- reactjs - 无法运行 React-Native 入门页面中给出的 AwesomeProject
- java - 设备旋转的 ImageView 可见性问题
- html - 如何关闭盒子类动画
- php - 将数据传递到要发布到 MySQL 数据库的新页面时的未定义索引,但仅用于文件名输入,并且数据不发布到数据库
- php - 如何通过 JSON DECODE 检索括号中的数据
- javascript - Vanilla Javascript 显示选项卡并隐藏其他选项卡
- ios - 处理后构建未在测试飞行中显示?
- java - 如何调用嵌套在多个子节点中的 Firebase 中的数据?
- python - 不带阴影误差条线的阴影误差条标记