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 }
我正在编写迁移脚本的这一部分:
$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 }