by spoony123 at 2013-03-10 03:56:30
Hi All - New member here. Just having a go with Do While Loops, when i use the below code i would have expected the word "test" to keep being created but it only does it once, as i understand the while criteria would always be true (until service stops of course) so the Do would keep happening?. Obviously missed something fundamental here - can you guys adviseby spoony123 at 2013-03-10 04:12:32do {write-host "test"}
while (Get-Service | Where-Object {$.name -eq "Application Experience" -and $.status -eq "Started"})
Think i have answered my own question using this codeby MasterOfTheHat at 2013-03-11 14:18:21do {write-host "Application Service Stopped"}
until (Get-Service | Where-Object {$.Displayname -eq "Application Experience" -and $.status -eq "Runningâ€})
write-host "started"
This does the job. Thanks
I assume you wanted to initiate a service start command and then display "Application Service Stopped" until the service was up and running? As you figured out, you were using $.name instead of $.DisplayName and "Started" instead of "Running".
Btw, if you wanted to use a do… while loop instead of your do… until, you could have used the code below. The difference is the $.Status conditional in the Where-Object command.do {
"Application Service Stopped"
}
while (Get-Service | Where-Object {($.DisplayName -eq "Application Experience") -and ($.Status -ne "Running")})
You could also tweak it a little bit to use filtering on the Get-Service command. Probably doesn’t make much difference in this case, follows the "filter early" practice.do {
"Application Service Stopped"
}
while (Get-Service -DisplayName "Application Experience" | Where-Object {$.Status -ne "Running"})