Полезный ответ Матиаса Р. Джессена прямо отвечает на ваш вопрос, демонстрируя упрощенный синтаксис Where-Object
(функция PSv3 +, известная как оператор сравнения ).
Однако в вашем случае вы можете вообще обойти Where-Object
и применить оператор -like
непосредственно к (преобразованному) перечислению элементов, возвращаемых $objFolder.items()
:
Использование синтаксиса PSv2 + :
Remove-Item (
@($objFolder.items() | Select-Object -ExpandProperty Path) -like 'C:\*'
) -Recurse -Confirm:$false
Обратите внимание, что использование @()
гарантирует, что -like
действует на массив -значной LHS и, следовательно, действует как элемент filter .
-ExpandProperty
обеспечивает возвращение .Path
свойства значений вместо пользовательских объектов со свойством .Path
.
В PSv3 + вы можете упростить и ускорить выполнение команды, используя перечисление члена , что означает доступ к свойству на уровне collection для возврата коллекция элементы ' значения свойств:
Remove-Item (
@(@($objFolder.items()).Path) -like 'C:\*'
) -Recurse -Confirm:$false
Обратите внимание, что внутренний @(...)
, около $objFolder.items()
, необходим только потому, что $objFolder
является COM объектом, свойства которого не ведут себя как обычные .NET-коллекции в PowerShell; @(...)
вызывает перечисление в этом случае.