Author Posts

August 10, 2016 at 11:43 am

I'm working through the lab of advanced functions in PowerShell Toolmaking, and one of the answers to the lab questions uses the subexpression operator in the filter of Get-CimInstance.

Get-CimInstance win32_process -filter "ProcessId = '$($Service.ProcessId)'"

The command returns an error if I don't use the subexpression operator.

Why is that?

August 10, 2016 at 1:13 pm

You mean, if you do Get-CimInstance win32_process -filter "ProcessId = '$Service.ProcessId'" ?

Because Only $service is seen as a variable. Do this:

Write-Host "ProcessId = $Service.processid"

And you'll see why that doesn't form a legal query. Covered this in "Learn Windows PowerShell in a Month of Lunches," FWIW.

August 10, 2016 at 11:13 pm

Thanks Don.

This explanation clears things up.
I remember you covering it in the first book, and to be honest, I have always struggled with this concept.
Hoping this exercise drills it in for good now!