In any scripting language, the one of the important things are techniques.
You can call it scripting techniques.
Sometime when you are writing scripts, there are some certain problems come , and to solve them we need to add a special logics and special techniques to handle them.
Same thing was happen to me, i was writing a script and that script has to run every time users logon, and that script require a server to be available before running the script.
Flow Chart.
The logic is something like below flowchart.
How i solve it.
I solved it using WHILE script code.
I have added Comments to the below script code, which make it self explanatory.
# Setting bit as False First $bit = $false # running while. while ( $bit -eq $false ) { # just a notification Write-Host 'Checking Internet Connection.' -ForegroundColor 'Yellow' # Testing Network Connection and storing it in to a vraible # when we use -QUIET Parameter with Test-Connection, it stored the value in # true or false $testInternetConnectivity = Test-Connection -Count 3 "www.google.com" -Quiet # Test-Connection CMDLET return output in TRUE and False # we are assigning the output of $testInternetConnectivity to the $bit Variable $bit = $testInternetConnectivity #if the $bit is false then if ( $testInternetConnectivity -ne $true) { # show notifications Write-Host 'Please check your connection, I am not able to Ping www.google.com.' # just adding a new blank line "`n"
} # end of while
# if the $bit is $true , then we are good to go.
if ( $bit -eq $true )
{
# notifications
"`n"
Write-Host 'Internet is Pingable, we are good to go.' -ForegroundColor 'Green'
} #end of IF
# end of the script
You can also download the script code from this link :
Download Link : http://gallery.technet.microsoft.com/scriptcenter/Keep-Testing-Internet-f5c29243
Screenshots
I run the script and it found the “google.com” and give us an notification that Internet is Pingable.
I have disconnected my laptop from internet and run the script, you can check it is continuously running.
The internet is still disconnected and i run the script and it is showing that Internet connection is not there and in the middle I plugged in the LAN and you can see it found that google.com is working and script is stopped.
What i want to accomplished?
My “Main” script run when users login to the laptop. This script copy a .xls file everyday to a server before user start working on a laptop.
The problem was, sometime user not plugged in the LAN cable and sometime they are not connected to WIFI. so most of the time script fails.
So , i want to write a code , by which this script always run until it found a backup server.
To accomplish it i wrote above script code.
"`n”
Write-Host 'Internet is Pingable, we are good to go.' -ForegroundColor 'Green }
---------------------------------------
The only confusing bit in the script code is , how are storing the Test-Connection to “google.com” and true or false.
and the trick is when we use –Quiet parameter with Test-Connection cmdlet it give the output in true and false.
Please see the below screenshots are everything will be clear.
In below screenshot, i am storing the output of Test-Connection in to variable , without –Quiet parameter and it is give me full details of Source,Destination, IP address rather then giving me result in True or false.
Now, i added the –Quiet Parameter and you can see the result is shown is True now.
Same here.
Download Link : http://gallery.technet.microsoft.com/scriptcenter/Keep-Testing-Internet-f5c29243
I hope that this trick will help you.