InputObject 管道到 Cmdlet - CM-RemoveDevice

InputObject Pipe to Cmdlet - CM-RemoveDevice

我正在编写迁移脚本的这一部分:

$devnames = Get-CMDevice -Name ($Site + "CSP*") | Remove-CMDevice

我收到此错误:

The input object cannot be bound to any parameters for the command either
because the command does not take pipeline input or the input and its
properties do not match any of the parameters that take pipeline input.
     + CategoryInfo          : InvalidArgument: ([SecurityVerbs(..."USER1";

查看帮助,虽然这个 cmdlet 只能接受 InputObject 的输入

-InputObject
Specifies a device object. To obtain a device object, use the Get-CMDevice cmdlet.

Type:   IResultObject
Position:   0
Default value:  None


Accept pipeline input:  True (ByValue)
Accept wildcard characters: False
-Name
Specifies the name of a device.

Type:   String
Aliases:    DeviceName
Position:   0
Default value:  None
Accept pipeline input:  False
Accept wildcard characters: False

然后我尝试了这个:

$Site = Read-Host -Prompt "Enter 3 Letter Site Code"
$devnames = Get-CMDevice -Name ($Site + "*")

foreach ($device in $devicenames) { Remove-CMDevice $device }

我明白了,也许我需要以某种方式将管道第一部分的设备转换为输入对象 'value'?我认为它们是,除非我使用 | Select Name 等。所以,对这最后一步感到困惑。有谁知道我哪里出错了?

这有效 - 感谢@Ansgar

 $devicenames = (Get-CMDevice -Name ($Site + "CSP*")).Name
    ForEach ($device in $devicenames) 
    { Remove-CMDevice -DeviceName $Device -Force }