get-process | {$_.name -match "win"}
Sample output is shown below. The above means “get all the process objects on this computer” and pipe that collection of objects to a where/filter where we only want to see processNames that contain the letters “host”.
Example output:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 75 8 796 3680 46 744 wininit 152 8 1548 8072 54 776 winlogon
“Match” actually does a RegEx (regular expression match, so you can also do this: Find me all process that contain a “t” followed by exactly three characters, followed by the letters “host”:
PS C:\Users\Neal> get-process | where {$_.name -match "t\w{3}host"} Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 181 17 9696 10796 693 7212 taskhost 290 51 10992 17588 301 0.33 2860 taskhostex
How does this relate to BizTalk? We often deal with windows services. Suppose you are wondering if there is a DTC task started on the computer, but you don’t remember the exact service name.
Run something like this:
get-service | where {$_.name -match "dtc"}
Of course, if you remember the exact service name, you can enter a shorter command:
get-service -Name msdtc
On my home PC, both the above return the same result:
Status Name DisplayName ------ ---- ----------- Stopped MSDTC Distributed Transaction Coordinator
Suppose you wanted to show all processes that are stopped:
get-service | where {$_.Status -eq 'Stopped'}
Or show me only services that contain the “dtc” in the name that are stopped:
get-service | where {$_.Status -eq 'Stopped' -and $_.Name -match 'dtc'}
TIPS: Don’t forget to use -EQ instead of the = or == sign. This is not C#. Also don’t forget to put the – in front of -and, -eq, and -match.
To know what properties you can query with the -eq and the -match filter, do the following:
get-service | get-member
or the abbreviation for get-member “gm” is often used
get-service | gm
In this case, you are piping the output of the “get-service” cmdlet to the “get-member” cmdlet, which displays returns all the property, methods, and events.
Just to complete the thought, you can see just the properties by doing either of the following:
get-service | get-member | where-object {$_.MemberType -eq "Property"} get-service | get-member -MemberType Properties
Just for the sake of completeness, you might also want to sort your data by some particular property. Just pipe what we learned above to the “sort-object” and tell it which property (and optionally which order) to sort.
get-service | where {$_.name -match "dtc"} | sort-object Status get-service | where {$_.name -match "dtc"} | sort-object Status -desc