Author Posts

April 14, 2016 at 3:40 am

I know the need to filter but this has always stumped me with a query like this where the properties does not exist in the default view. ie:

Get-Adcomputer -filter {$_.operatingsystem -like "*2012 R2*"} -properties operatingsystem 

This gives an error and I can understand why because properties is outside the filter scriptblock.

If I try :

Get-Adcomputer -filter {$_.operatingsystem -like "*2012 R2*"  -properties operatingsystem }

So now i can only resort to putting that in where-object.

Can I do this better and then comply with best practices?

April 14, 2016 at 3:48 am

These AD filters are always a challenge to get right. You are using the filter in the same way as with Where-Object. This doesn't work, because the AD Cmdlets take in a other filter format. Try this:

Get-ADComputer -Filter "OperatingSystem -like '*2012 R2*'" -Properties OperatingSystem

April 14, 2016 at 4:16 am

Thanks Richard!

April 14, 2016 at 4:39 am

This works for me

Get-ADComputer -Filter {OperatingSystem -eq 'Windows Server 2012 R2 Standard' } -Properties OperatingSystem | select Name, OperatingSystem

April 14, 2016 at 4:57 am

@Richard: What is the reason you use a scriptblock instead of a string for the filter parameter?