【发布时间】:2019-06-01 18:47:14
【问题描述】:
为了创建一个池,我尝试从 6 个磁盘中选择 4 个。
我可以得到如下 UniqueIds 列表:
PS C:\> 获取物理磁盘|? Canpool|ft UniqueId 唯一身份 -------- {3b34bfc1-1022-11e9-9df0-806e6f6e6963} {3b34bfc3-1022-11e9-9df0-806e6f6e6963} {3b34bfc5-1022-11e9-9df0-806e6f6e6963} {3b34bfc7-1022-11e9-9df0-806e6f6e6963} {3b34bfc9-1022-11e9-9df0-806e6f6e6963} {3b34bfcb-1022-11e9-9df0-806e6f6e6963}我也可以选择前四个:
PS C:\> Get-PhysicalDisk |?罐头池|?健康状况|选择 -first 4 FriendlyName SerialNumber CanPool OperationalStatus HealthStatus Usage Size ------------ ------------ ------- ----- -- ---------- ----- ---- VBOX 硬盘 True OK 健康 自动选择 5 GB VBOX 硬盘 True OK 健康 自动选择 5 GB VBOX 硬盘 True OK 健康 自动选择 5 GB VBOX 硬盘 True OK 健康 自动选择 5 GB我想要实现的是选择我想要的磁盘,而不是前 4 个或全部,但假设磁盘编号 1、2、4、6 或 UnıqueId 以 3b34bfc1、3b34bfc3、3b34bfc7、3b34bfcb 开头。
【问题讨论】:
-
如果你将它存储在一个变量中,你应该能够像使用数组一样选择它们:
$test = (Get-PhysicalDisk|? Canpool|ft UniqueId); $test[1,2,4,6]; -
或者你可以使用
(Get-PhysicalDisk|? Canpool|ft UniqueId)[1,2,4,6] -
您是否正在寻找特定的房产?例如只有SSD?或者您真的只是在单个系统上寻找各种特定磁盘?如果您真的只是基于 UniqueId,那么您将无法比简单地将 UniqueId 复制并粘贴到
Where-Object {($_.UniqueId -eq "3b34bfc1") -or ($_.UniqueId -eq "3b34bfc3") -or ...}中做得更好,这对您的自动化方式没有多大帮助。 -
@Owain Esau 不幸在这里遇到错误 PS C:\Users\Administrator> (Get-PhysicalDisk|?CanPool|ft UniqueId)[1,2,4,6] out-lineoutput : Object reference未设置为对象的实例。 + CategoryInfo : NotSpecified: (:) [out-lineoutput], NullReferenceException + FullyQualifiedErrorId : System.NullReferenceException,Microsoft.PowerShell.Commands.OutLineOutputCommand
-
@OwainEsau PS C:\Users\Administrator> $test=(Get-PhysicalDisk|?CanPool|ft UniqueId) PS C:\Users\Administrator> $test[1,2,4,6 ] out-lineoutput : 对象引用未设置为对象的实例。 + CategoryInfo : NotSpecified: (:) [out-lineoutput], NullReferenceException + FullyQualifiedErrorId : System.NullReferenceException,Microsoft.PowerShell.Commands.OutLineOutputCommand
标签: powershell properties