1 / 44

Scripting 101 for Network Administrators

Scripting 101 for Network Administrators. Jim Kent, Network Administrator Ave Maria Law School. What is scripting ?. Autoexec.bat, batch file scripts. Network login scripts. A script is a set of commands aimed at automating a process. Scripts are usually setup to solve a problem.

Download Presentation

Scripting 101 for Network Administrators

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Scripting 101 for Network Administrators Jim Kent, Network Administrator Ave Maria Law School

  2. What is scripting ? • Autoexec.bat, batch file scripts. • Network login scripts. • A script is a set of commands aimed at automating a process. • Scripts are usually setup to solve a problem.

  3. How to turn off the computers in the lab at the end of the day? • shutdown -s -m \\hflyb01 -t 05 -f • shutdown -s -m \\805x20b -t 05 -f • shutdown -s -m \\535x20b -t 05 -f • shutdown -s -m \\705x20b -t 05 –f • Shutdown.exe is an add on from the resource kit.

  4. What are we going to cover: • WSH (Windows Script Host) • VBScript (Visual Basic Scripting) • WMI (Windows Management Instrumentation) • ADSI (Active Directory Service Interfaces)

  5. Simple Script Set objWMIService = GetObject("winmgmts:") Set objLogicalDisk = objWMIService.Get ("Win32_LogicalDisk.DeviceID='c:'") Wscript.Echo objLogicalDisk.Freespace

  6. Free space on the local C: drive

  7. Display Memory Script strComputer = "." Set objSWBemServices = GetObject ("winmgmts:\\" & strComputer) Set colSWbemObjectSet = objSWbemServices. InstancesOf("Win32_LogicalMemoryConfiguration") For Each objSWBemObject in colSWbemObjectSet Wscript.Echo "Total Physical Memory (kb): " & objSWbemObject.TotalPhysicalMemory next

  8. Output from Memory Script

  9. Output window • Set ie = WScript.CreateObject("InternetExplorer.Application", "IE_") • ie.Navigate "about:blank" • ie.ToolBar = 0 • ie.StatusBar = 0 • ie.Width = 600 • ie.Height = 500 • ie.Left = 0 • ie.top = 0 • ie.Visible = 1

  10. Empty IE Window

  11. Display Services Use WMI to output all the services on the computer. Also show the status of each service.

  12. Do While (ie.Busy) Loop Set objDoc = ie.Document objdoc.Open objdoc.Writeln "<html><head><title>Service Status </title></head>" objdoc.Writeln "<body bgcolor='white'>" objdoc.Writeln "<table width='100%'>" objdoc.Writeln “<tr><td width='50%'><b> Service</b></td>" objdoc.Writeln "<td width='50%'><b>State </b></td></tr>"

  13. strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer& "\root\cimv2") Set colServices=objWMIService.ExecQuery ("Select * from Win32_Service") For Each objService in colServices objdoc.Writeln “<tr><td width='50%'>" & objService.DisplayName & "</td>" objdoc.Writeln "<td width='50%'>" & objService.State & "</td>" objdoc.Writeln "</tr>" Next objdoc.Writeln “</table></body></html>" objdoc.Write() objdoc.Close

  14. Display Info from a computer • Use WMI to display the following stats. • Display Computer Name • Display the total physical ram in computer • Display the time zone.

  15. strComputer = "." Set objWMIService= GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colSettings = objWMIService.ExecQuery ("Select * From Win32_ComputerSystem") For Each objComputer in colSettings objdoc.Writeln "<tr><td width='50%'>Computger Name: </td>" objdoc.Writeln "<td width='50%'>" & objComputer.Name & "</td></tr>" objdoc.Writeln "<tr><td width='50%'>Total Memory: </td>" objdoc.Writeln "<td width='50%'>" & int((objComputer.TotalPhysicalMemory)/1048576) & "</td></tr>" Next Set colSettings = objWMIService.ExecQuery ("Select * From Win32_TimeZone") For Each objComputer in colSettings objdoc.Writeln "<tr><td width='50%'>Timezone: </td>" objdoc.Writeln "<td width='50%'>" & objComputer.DayLightName & "</td></tr>" Next

  16. Display same info on multiple computers • Add the ability to read a text file of computer names. • Use IE window to output the data for each computer.

  17. Const ForReading = 1 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("c:\cpu.txt", ForReading) < more code was here> Do While objFile.AtEndOfStream = false strComputer = objFile.ReadLine <code for outputting data on strComputer> Loop objFile.Close

  18. Local logged on user • Use WMI to display the logged on user. • Setup script to show the user on all lab computers. • Use a text file list of computers to check.

  19. Do While objFile.AtEndOfStream = false strComputer = objFile.ReadLine Set objWMIService= GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colSettings = objWMIService.ExecQuery ("Select * From Win32_ComputerSystem") For Each objComputer in colSettings objdoc.Writeln "<tr><td width='50%'>" & strComputer & "</td>" objdoc.Writeln "<td width='50%'>" & objComputer.username & "</td></tr>" Next

  20. Users logged into lab computers

  21. WMI • WMI comes standard preloaded and setup on Windows 2000/XP computers. • Make sure the WMI service is running. • Key to WMI is finding the class you want to query. • Must have admin rights on local PC or networked pc to get any info back.

  22. Download Scriptomatic

  23. ADSI • Released in 1997 as a set of generic interfaces that access and manipulate different directory services. • Admins and Developers can use ADSI to enumerate and managed resources in a directory service. • Can Read, Modify, Create and Delete domain objects.

  24. All Users Script Set Computer = GetObject("WinNT://avemaria") Computer.Filter = Array("User") For Each User in Computer objdoc.Writeln "<tr>" objdoc.Writeln "<td width='50%'>UserName: </td>" objdoc.Writeln "<td width='50%'>" & User.Name & "</td>" objdoc.Writeln "</tr>" Next

  25. All Users

  26. Display all Domain Groups Set Computer = GetObject("WinNT://avemaria") Computer.Filter = Array("Group") For Each Group in Computer objdoc.Writeln "<tr><td width='50%'>GroupName: </td>" objdoc.Writeln "<td width='50%'>" & Group.Name & "</td>" objdoc.Writeln "</tr>" Next

  27. Display members of Student Group Set Group = GetObject("WinNT://avemaria/students, group") For Each User in Group.Members objdoc.Writeln “<tr><td width='50%'>UserName: </td>" objdoc.Writeln "<td width='50%'>" & User.Name & "</td>" objdoc.Writeln "</tr>" count = count + 1 Next

  28. Display all groups of each student Set Group = GetObject("WinNT://avemaria/students, group") For Each User in Group.Members objdoc.Writeln "<tr><td width='50%'>" & User.FullName &"</td>" objdoc.Writeln "<td width='50%'></td></tr>" objdoc.Writeln "<tr><td width='50%'>" & User.Name &"</td>" objdoc.Writeln "<td width='50%'></td></tr>" Set User = GetObject("WinNT://avemaria/" & User.Name & ",user") For Each Group in User.Group objdoc.Writeln "<tr><td width='50%'></td>" objdoc.Writeln "<td width='50%'>" & Group.Name & "</td><tr>“ Next Next

  29. User Properties

  30. Password Never Expires Flag? Set Group = GetObject("WinNT://avemaria/students, group") For Each User in Group.Members objdoc.Writeln "<tr><td width='50%'>" & User.Name & "</td>" Set User = GetObject("WinNT://avemaria/" & User.Name & ",user") flags = User.Get("UserFlags") If (Flags And &H10000) = 0 then objdoc.Writeln "<td width='50%'>Password will expire</td>" Else objdoc.Writeln "<td width='50%'>Password does not expire</td>" End If objdoc.Writeln "</tr>" Next

  31. Force Password change flag • Force user to change password on next logon flag

  32. Set Group = GetObject("WinNT://avemaria/students, group") For Each User in Group.Members objdoc.Writeln "<tr><td width='50%'>" & User.Name & "</td>" Set User = GetObject("WinNT://avemaria/" & User.Name & ",user") if User.passwordexpired = 0 then objdoc.Writeln "<td width='50%'>Password safe</td>" else objdoc.Writeln "<td width='50%'>Force change set</td>" End If objdoc.Writeln "</tr>" Next

  33. Modify User Flags

  34. Create User Accounts • Use text file for data source. • Source reads one line of text at a time. • Use ~ character to separate fields • Username~password~fullname~ Description~loginscript • kent1~password1234~kent, test1~Test Account~ student.bat

  35. Do While objFile.AtEndOfStream = false strdataline = objFile.ReadLine myuser = Split(strdataline,"~") Set Computer = GetObject("WinNT://avemaria") Set User = computer.create("User",myuser(0)) call User.SetPassword(myuser(1)) user.fullname = myuser(2) user.Description=myuser(3) user.loginscript=myuser(4) user.setinfo Wscript.echo "Created user: " & myuser(0) Loop

  36. ResourcesMicrosoft Scripting Guide

  37. Resources • http://www.microsoft.com/technet/community/scriptcenter/default.mspx • http://www.winscripter.com • http://www.adsi4nt.com • http://www.15seconds.com/focus/ADSI.htm

More Related