How do I test this restart all PCs script?

Kixtart version 4.21.0.0
I want to use the following syntax to restart all domain PCs (256, Win2k and WinXP) but not the servers.
All PC names start with SHH and then 4 digits and the servers do not. I'm not sure how I can test each line of code before the mass restart:

$comps=COMNetView()
for each $comp in $comps
    IF LEFT($comp,4) = "SHH_" or LEFT($comp,3) <> "SHH"
             GOTO END
    ENDIF
    if $comp<>@WKSTA
        $rc=fnWMIShutdown($comp,6)
    endif
next
$rc=fnWMIShutdown(@WKSTA,6)
:END
bstillionAsked:
Who is Participating?
 
IsorgConnect With a Mentor Commented:
If you know a list of severs......

edit $list_of_servers to be a coma delimited list of the servers that you don't want to reboot.

and using goto's can just lead to bad coding :D
$comps=COMNetView()
 
$list_of_servers = 'server01,server02,server03,Secret_server'
 
for each $comp in $comps
	if not ascan(split($list_of_servers),$comp)+1
		;$comp is not a server in the $list_of_servers
		$rc=fnWMIShutdown($comp,6)
	ENDIF
next
$rc=fnWMIShutdown(@WKSTA,6)

Open in new window

0
 
polazarusCommented:
You could try the workstation loop and write it out to a file and see if you get the desired result.

I am not familiar with kix but when I would test shell scripts I would do something like test it by writing out to files and such.  If I wanted to just test that portion I would simply exit out or put output to the screen.
0
 
IsorgCommented:
my bad, make that a space delimited list, not comma delimited in $list_of_Servers
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
bstillionAuthor Commented:
Isorg:
I needed to research the syntax to understand how it all works. I did not know how to
process the UDF but have read up on it at kixtart.org/forums.
Now that I understand, I will test this tomorrow (with a space delimited list of servers
as you suggest.)

bstillion
0
 
bstillionAuthor Commented:
I have not yet found a way to test the COMNetView() UDF. I was attempting to send the list to a text file but without luck (using REDIRECTOUTPUT().) At this point I will try to at least echo the list to the console to confirm that the servers are excluded.

bstillion
0
 
bstillionAuthor Commented:
By using REDIRECTOUTPUT(), the list echos to the screen. The list is a string of 0s though. Any thoughts on what needs to change to actually see the list of computers generated by the COMNetView() UDF?

(I was able to test the other UDF successfully: fnWMIShutdown)

bstillion
0
 
IsorgCommented:
the COMNetView() udf returns an array.  
use his code example to dump out the array...


for each $comp in $comps
   ? $comp
next

or....

use the join() cmd.

? join($comps,@crlf)

0
 
bstillionAuthor Commented:
Isorg:
Thanks for the help!
The script works great. I used the first example (? $comp) to echo to the screen.



bstillion
0
 
bstillionAuthor Commented:
Thanks again!

Brad
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.