2015-04-16 1 views
0

Мне нравится находить все дисковые разделы, которые находятся на диске iSCSI с использованием Powershell.Powershell in Operator and Object []

Чтобы найти все устройства SCSI Disk ObjectIds мы можем использовать:

Get-Disk | Where BusType -ieq iscsi | Select -prop ObjectId 

Использование в Оператором, это должно вернуть все Перегородки:

Get-Partition | Where DiskId in (Get-Disk | Where BusType -ieq iscsi | Select -prop ObjectId) 

К сожалению, эта команда возвращает типичную ошибку Powershell:

Where-Object : A positional parameter cannot be found that accepts argument 'System.Object[]'. 
At line:1 char:17 
+ Get-Partition | Where DiskId in (Get-Disk | Where BusType -ieq iscsi | Select -p ... 
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidArgument: (:) [Where-Object], ParameterBindingException 
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.WhereObjectCommand 

Помогает ли вам помочь в использовании оператора в правильном направлении?

Большое спасибо заранее, Уважением, Том

ответ

0

select -prop ObjectId не делать то, что вы думаете. Он создает новый объект с подмножеством свойств.

Вместо этого использовать select -exp ObjectId. Он возвращает сами значения свойств, не обертывая их в пользовательский объект.

Get-Partition | Where DiskId -in (Get-Disk | Where BusType -ieq iscsi | Select -exp ObjectId) 
+0

So cooool !, большое спасибо за ваше объяснение и решение! – Tom