【问题标题】:Cannot validate argument on parameter无法验证参数的参数
【发布时间】: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


【解决方案1】:

你可以试试这个:

$idFilter = '3b34bfc1', '3b34bfc3', '3b34bfc7', '3b34bfcb'
Get-PhysicalDisk -CanPool $true -HealthStatus 'Healthy' | 
     Where-Object { $idFilter -contains (($_.UniqueId).Substring(1, 8)) } | 
     Select -First 4

使用您的示例,这将返回:

UniqueId                               FriendlyName  SerialNumber CanPool OperationalStatus HealthStatus Usage       Size
--------                               ------------  ------------ ------- ----------------- ------------ -----       ----
{3b34bfc1-1022-11e9-9df0-806e6f6e6963} VBOX HARDDISK              True    OK                Healthy      Auto-Select 5 GB
{3b34bfc3-1022-11e9-9df0-806e6f6e6963} VBOX HARDDISK              True    OK                Healthy      Auto-Select 5 GB
{3b34bfc7-1022-11e9-9df0-806e6f6e6963} VBOX HARDDISK              True    OK                Healthy      Auto-Select 5 GB
{3b34bfcb-1022-11e9-9df0-806e6f6e6963} VBOX HARDDISK              True    OK                Healthy      Auto-Select 5 GB

【讨论】:

  • 不幸的是它返回空 PS C:\Users\Administrator> Get-PhysicalDisk | Where-Object {($_.CanPool) -and $_.HealthStatus -eq 'Healthy'} | Where-Object { $idFilter -contains (($_.UniqueId).Substring(1, 8)) } |选择 -First 4 |格式表-AutoSize
  • @CanBuyukburc 我已经编辑了代码并更改了CanPool 属性语法的过滤。你可以试试这个吗?
  • 不幸的是,它又空了。我也尝试了一些版本,但都是空的。
【解决方案2】:

我能够解决它:

    PS C:\Users\Administrator> Get-PhysicalDisk|? Canpool|ft UniqueId

    UniqueId
    --------
    {78f3d471-15cb-11e9-9df3-806e6f6e6963}
    {78f3d472-15cb-11e9-9df3-806e6f6e6963}
    {78f3d473-15cb-11e9-9df3-806e6f6e6963}
    {78f3d474-15cb-11e9-9df3-806e6f6e6963}
    {78f3d475-15cb-11e9-9df3-806e6f6e6963}
    {78f3d476-15cb-11e9-9df3-806e6f6e6963}


    PS C:\Users\Administrator> Get-PhysicalDisk|? Canpool|? {"{78f3d471-15cb-11e9-        9df3-806e6f6e6963};{78f3d472-15cb-11e9-9df
    3-806e6f6e6963}".Contains($_.UniqueId)}

    FriendlyName  SerialNumber CanPool OperationalStatus HealthStatus Usage       Size
    ------------  ------------ ------- ----------------- ------------ -----       ----
    VBOX HARDDISK              True    OK                Healthy      Auto-Select 5 GB
    VBOX HARDDISK              True    OK                Healthy      Auto-Select 5 GB

【讨论】:

    猜你喜欢
    • 2023-02-23
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多