If you run:
Or to capture results:
Get-WindowsCapability -Name RSAT* -Online | Add-WindowsCapability -Online You’ll likely get an error like: Add-WindowsCapability: A positional parameter cannot be found that accepts argument ... Get-WindowsCapability -Name RSAT* -Online | Add-WindowsCapability -Online Wait — that’s the same command you wrote. Let me clarify: the pipeline works by binding -Name automatically if the object has a Name property. RSAT capabilities do. So actually, your command is syntactically valid . If you run: Or to capture results: Get-WindowsCapability
The command you've shown is close, but has a syntax issue. If you run: Or to capture results: Get-WindowsCapability
$results = Get-WindowsCapability -Name RSAT* -Online | ForEach-Object Add-WindowsCapability -Online -Name $_.Name If you run: Or to capture results: Get-WindowsCapability