A: I was recently writing a script to return information on remote machines based on a list from Active Directory (AD). I wanted to pass my computer objects gained from an AD query into the get-wmiobject cmdlet. However, the -computer switch of get-wmiobject didn't accept a passed list of objects via the pipeline, so I got an error.

The solution is to use the ForEach-Object cmdlet instead to pass attributes from the piped list of objects that can be accessed using the $_.<attribute>. For example, consider the command

 Get-ADComputer -filter \\{lastLogonTimestamp-gt $lastLogon\\} | get-wmiobject Win32_ComputerSystem

 This fails because the objects from Get-ADComputer can't be processed by get-wmiobject as a piped list of objects. However, the following works great:

 Get-ADComputer -filter \\{lastLogonTimestamp -gt $lastLogon\\} | ForEach-Object \\{get-wmiobject Win32_ComputerSystem -computer $_.name\\}

Notice that all I did was wrap the second command in the ForEach-Object and pass the $_.name for the -computer switch input.