Urgent Help need creating a NETSH login script

Here is my problem. I need to create a login script that will update the static DNS and WINS informatino on client workstation ONLY if these settings are already staticalyy assigned.

In a nutshell this script needs to check to see if the DNS settings are DHCP or Static basised. If they are DHCP the script should not run

Please help
LVL 21
compdigit44Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Britt ThompsonSr. Systems EngineerCommented:
Looks like someone already needed that here:http://www.experts-exchange.com/Networking/Misc/Q_21326998.html

@leew
for /f "tokens=3" %%a in ('netsh interface ip show config ^| find /i "DHCP Enabled"') do set DHCP=%%a
If /i "%dhcp%" == "Yes" (
    netsh interface ip set dns "Local Area Connection" dhcp
) Else (
    netsh interface ip set dns "Local Area Connection" static 10.0.0.3
)

You could actually avoid the environment variable entirely with this:

for /f "tokens=3" %%a in ('netsh interface ip show config ^| find /i "DHCP Enabled"') do (
If /i "%%a" == "Yes" (
    netsh interface ip set dns "Local Area Connection" dhcp
) Else (
    netsh interface ip set dns "Local Area Connection" static 10.0.0.3
)
)
0
Qlemo"Batchelor", Developer and EE Topic AdvisorCommented:
Or, more comprehensive,

netsh int ip dump | findstr "dns wins" | findstr source=static && (
  rem your netsh commands here
)

0
compdigit44Author Commented:
This is not quite what I was looking for...

I need this script to run ONLY on clients who have STATIC DNS & WINS enteries. please note some clients are set to DHCP for there TCP/IP settings but DNS is startic. I need this script to look for all static DNS & WINS and update these enteries only!!!!!!!!!!!!!!!!!!!!!!!
0
Big Business Goals? Which KPIs Will Help You

The most successful MSPs rely on metrics – known as key performance indicators (KPIs) – for making informed decisions that help their businesses thrive, rather than just survive. This eBook provides an overview of the most important KPIs used by top MSPs.

Qlemo"Batchelor", Developer and EE Topic AdvisorCommented:
My script should work for exactly this situation. It's checking the DNS and WINS entries only for being static.
0
compdigit44Author Commented:
OK this is what my scritp looks like. Right now I just paused on screen and never changes my static DNS / WINS settings

netsh int ip dump | findstr "dns wins" | findstr source=static && (netsh interface ip set dns "Local Area Connection" static 1.2.3.4
netsh interface ip add dns "Local Area Connection" 1.2.3.4 index=2
netsh interface ip set wins "Local Area Connection" static 1.2.3.4
netsh interface ip add wins "Local Area Connection" 1.2.3.4index=2)
0
Qlemo"Batchelor", Developer and EE Topic AdvisorCommented:
Just tried, and it works fine for me. Does it output the config lines found?
0
compdigit44Author Commented:
Whn I just run the first part of the script:

netsh int ip dump | findstr "dns wins" | findstr source=static
It works and list the connection information "IF" it has static DNS & WINS enteries which is what  want. The problem is this inforamtion is not beening replacement with the correct DNS & WINS information from my scrupt. Don't I need an if statement somewhere??????
0
Qlemo"Batchelor", Developer and EE Topic AdvisorCommented:
No, the && is like an IF. If the previous command "succeeds", i.e. returns a errolevel of 0, the command after && is executed. You can try by using

netsh int ip dump | findstr "dns wins" | findstr source=static && echo --- It is STATIC ---


The complete command as you posted above should give the same output, plus the results of your netsh commands, which should be 4 times "OK!".

0
compdigit44Author Commented:
Do I need the ( ) ??? in this script?
0
compdigit44Author Commented:
Right now the script RUN and updates the DNS but it RUNS on my client who have DNS set by DHCP which is what I do not want
0
Qlemo"Batchelor", Developer and EE Topic AdvisorCommented:
You need the () to build a single block executed only if the condition applies (findstr finding "source=static"). If you omit the parentheses, only the first command is executed conditional, the remainder always.
0
compdigit44Author Commented:
Still now working... the script is working but it is running no matter if the current DNS settings are DHCP or static... :-(
0
Qlemo"Batchelor", Developer and EE Topic AdvisorCommented:
Your are doing something wrong. You confirmed that
netsh int ip dump | findstr "dns wins" | findstr source=static
is displaying the correct lines.
netsh int ip dump | findstr "dns wins" | findstr source=static && echo --- It is STATIC
Should display the same lines, and the text "--- It is STATIC" if any of the entries contain source=static.
netsh int ip dump | findstr "dns wins" | findstr source=static && ^
(
netsh interface ip set dns "Local Area Connection" static 1.2.3.4
netsh interface ip add dns "Local Area Connection" 1.2.3.4 index=2
netsh interface ip set wins "Local Area Connection" static 1.2.3.4
netsh interface ip add wins "Local Area Connection" 1.2.3.4index=2
)
Is applied if at least one of DNS or WINS setting is static.

0
compdigit44Author Commented:
Do I need the ^ after the &&?
0
Qlemo"Batchelor", Developer and EE Topic AdvisorCommented:
If you write the ( into the next line - yes. Instead you can use

netsh int ip dump | findstr "dns wins" | findstr source=static && (
netsh interface ip set dns "Local Area Connection" static 1.2.3.4
netsh interface ip add dns "Local Area Connection" 1.2.3.4 index=2
netsh interface ip set wins "Local Area Connection" static 1.2.3.4
netsh interface ip add wins "Local Area Connection" 1.2.3.4index=2
)

if you like that more.
0
compdigit44Author Commented:
I noticed that when this script runs it updates both my Local Area Connection and Network Adapter Local but I do not see Network Adapter Connection listed any where
0
Qlemo"Batchelor", Developer and EE Topic AdvisorCommented:
Ok, we have to be more specific then:

netsh int ip dump | findstr "dns wins" | findstr /c:"Local Area Connection" | findstr source=static && (
netsh interface ip set dns "Local Area Connection" static 1.2.3.4
netsh interface ip add dns "Local Area Connection" 1.2.3.4 index=2
netsh interface ip set wins "Local Area Connection" static 1.2.3.4
netsh interface ip add wins "Local Area Connection" 1.2.3.4index=2
)

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
compdigit44Author Commented:
This worked perfectly....

Thanks Again
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Active Directory

From novice to tech pro — start learning today.