This is basically a follow-up to the previous post How to add a where filter match/contains/like to any powershell cmdlet (such as Get-Service)
Cmdlets are named in the format “verb-noun”, for example get-service, start-service, etc…
Suppose you cannot remember all the verbs associated with a noun. You can run this:
get-command -Noun process
Recall from the prior blog you can do something like this to get all your BizTalk Host Instances (services):
get-service | where {$_.name -match "biztalk"}
Now, suppose you wanted to start all the BizTalk Host Instances, you just pipe the results of the previous command to the “start-service” cmdlet. (Note: You may have to run Powershell “as admin” to avoid any security errors.)
get-service | where {$_.name -match "biztalk"} | start-service
There is an interesting optional parm that let’s you check your script. The “-WhatIf” parm can be added to Start-Service or Stop-Service. It will then only shows what would happen if the cmdlet runs. The cmdlet is not run.
Example:
PS C:\WINDOWS\system32> get-service | where {$_.name -match "DTC"} | stop-service -whatif What if: Performing the operation "Stop-Service" on target "Distributed Transaction Coordinator (MSDTC)".
If you check the status of the service after running the above stop-service, you will see that it didn’t really stop.