http://blogs.catapultsystems.com/jsandys/archive/2010/10/19/configmgr-client-startup-script.aspx
http://myitforum.com/cs2/blogs/jsandys/Script/ConfigMgrStartup.zip
SMS/SCCM Peer2Peer AddOn
SMSTorrent is a Peer2Peer AddOn for SMS2003/SCCM2007 Clients. SMS/SCCM Clients are able to share the local Package cache with other Clients using the BitTorrent filesharing protocol.
http://sourceforge.net/projects/smstorrent
SMS Site Settings tweak
SMSSettings provides a GUI to modify SMS2003 (Microsoft System Management Server 2003) Site Settings which are not accessible over the normal SMS Admin Interface.
http://sourceforge.net/projects/smssettings
Screen Lock
This Tool does lock the Screen, Mouse and Keyboard for a specified time.
http://sourceforge.net/projects/screenlock
SMS Client Center
Troubleshoot and manage SMS 2003 advanced clients
http://sourceforge.net/projects/smsclictr
SMS 2003 Offline Hardware Inventory
Capture SMS2003 Hardware Inventory on Systems without Network connectivity or Systems without an SMS Agent installed. This Tool creates a DDR (DataDiscoveryRecord) and an IDMIF File for each scanned system.
http://sourceforge.net/projects/smshwinv
Secure Autologon
Enable Windows Autologon without a cleartext password in the Registry. The password will be stored by the Local Security Authority (LSA).
http://sourceforge.net/projects/autologon
SMS2003 Object Backup
Backup and restore a definable set of SMS 2003 Objects (Packages, Programs, Advertisements, Collections...). SMSObjBackup can also be used for Site Migration (Objects can be moved to another SMS Primary Site Server)
http://sourceforge.net/projects/smsobjbackup
SMS 2003 Adv.Client local policy import
A command line tool to assign local software distribution policies to an SMS 2003 Advanced Client. The Software will be installed independent of collection memberships.
http://sourceforge.net/projects/smspolimp
SMS CloneDP
Manage the assigned Software Packages of a Microsoft SMS (SystemManagementServer) 2003 DistributionPoint
http://sourceforge.net/projects/smsclonedp
SMS 2003 Software Request Web Form
SMS 2003 Software Request Web Form with a simple Workflow (mail/web based).
http://sourceforge.net/projects/smsswreq
SMS Collection Commander
Initiate SMS 2003 advanced client actions on a collection: Ping, WakeUp, HW/SW Inventory, ReRun Advertisements, Show logged on user, Download/Refresh Policy, Repair SMS Agents, Import Clients to the Collection...
http://sourceforge.net/projects/smscollctr
SMS OSD Program Import
SMSOSDXML extends the SMS 2003 Admin Console to import OSD Program-Settings based on a XML File. SMS OSD automatically creates such XML Files (SMSDeploy.xml) for each OSD Program created in the Admin Console.
http://sourceforge.net/projects/smsosdxml
SMS Package Dependency Viewer
Show "Microsoft System Management Server 2003" Software Package dependencies in a TreeView.
strComputer = "MYcomputername"
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
intRow = 2
objExcel.Cells(1, 1).Value = "Logon Name"
objExcel.Cells(1, 2).Value = "Full Name"
objExcel.Cells(1, 3).Value = "Description"
objExcel.Cells(1, 4).Value = "Domain"
objExcel.Cells(1, 5).Value = "Password Changeable"
objExcel.Cells(1, 6).Value = "Password Required"
objExcel.Cells(1, 7).Value = "Password Expires"
objExcel.Cells(1, 8).Value = "Account Disabled"
objExcel.Cells(1, 9).Value = "Account Locked Out"
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
If err.Number <> 0 then
Call Wscript.echo("Error has occurred connecting to WMI on workstation: " & strComputer)
End if
Set colItems = objWMIService.ExecQuery("Select * from Win32_UserAccount")
For Each objItem in colItems
objExcel.Cells(intRow, 1).Value = objItem.Name
objExcel.Cells(intRow, 2).Value = objItem.FullName
objExcel.Cells(intRow, 3).Value = objItem.Description
objExcel.Cells(intRow, 4).Value = objItem.Domain
If objItem.PasswordChangeable = True Then
objExcel.Cells(intRow, 5).Value = "Yes"
objExcel.Cells(intRow, 5).Font.ColorIndex = 10
Else
objExcel.Cells(intRow, 5).Value = "No"
objExcel.Cells(intRow, 5).Font.ColorIndex = 3
End If
If objItem.PasswordRequired = True Then
objExcel.Cells(intRow, 6).Value = "Yes"
objExcel.Cells(intRow, 6).Font.ColorIndex = 10
Else
objExcel.Cells(intRow, 6).Value = "No"
objExcel.Cells(intRow, 6).Font.ColorIndex = 3
End If
If objItem.PasswordExpires = True Then
objExcel.Cells(intRow, 7).Value = "Yes"
objExcel.Cells(intRow, 7).Font.ColorIndex = 10
Else
objExcel.Cells(intRow, 7).Value = "No"
objExcel.Cells(intRow, 7).Font.ColorIndex = 3
End If
If objItem.Disabled = True Then
objExcel.Cells(intRow, 8).Value = "Yes"
objExcel.Cells(intRow, 8).Font.ColorIndex = 10
Else
objExcel.Cells(intRow, 8).Value = "No"
objExcel.Cells(intRow, 8).Font.ColorIndex = 3
End If
If objItem.Lockout = True Then
objExcel.Cells(intRow, 9).Value = "Yes"
objExcel.Cells(intRow, 9).Font.ColorIndex = 10
Else
objExcel.Cells(intRow, 9).Value = "No"
objExcel.Cells(intRow, 9).Font.ColorIndex = 3
End If
intRow = intRow + 1
Next
objExcel.Range("A1:I1").Select
objExcel.Selection.Interior.ColorIndex = 19
objExcel.Selection.Font.ColorIndex = 11
objExcel.Selection.Font.Bold = True
objExcel.Cells.EntireColumn.AutoFit
MsgBox "Done"
Set objOU = GetObject("LDAP://OU=management,dc=fabrikam,dc=com") Set objUser = objOU.Create("User", "cn=MyerKen") objUser.Put "sAMAccountName", "myerken" objUser.SetInfo
Demonstration script that: 1) creates a new Active Directory organizational unit; 2) creates a new user account and new security group; and, 3) adds the new user as a member of that security group.
Set objDomain = GetObject("LDAP://dc=fabrikam,dc=com") Set objOU = objDomain.Create("organizationalUnit", "ou=Management") objOU.SetInfo Set objOU = GetObject("LDAP://OU=Management,dc=fabrikam,dc=com") Set objUser = objOU.Create("User", "cn= AckermanPilar") objUser.Put "sAMAccountName", "AckermanPila" objUser.SetInfo Set objOU = GetObject("LDAP://OU=Management,dc=fabrikam,dc=com") Set objGroup = objOU.Create("Group", "cn=atl-users") objGroup.Put "sAMAccountName", "atl-users" objGroup.SetInfo objGroup.Add objUser.ADSPath
Set objOU = GetObject("LDAP://ou=hr,dc=fabrikam,dc=com") objOU.Delete "user", "cn=MyerKen"
On Error Resume Next Set objUser = GetObject _ ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com") dtmAccountExpiration = objUser.AccountExpirationDate If err.number = -2147467259 Or _ dtmAccountExpiration = "1/1/1970" Then WScript.echo "No account expiration specified" Else WScript.echo "Account expiration:" & _ objUser.AccountExpirationDate End If
Const SEC_IN_DAY = 86400 Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 Set objUserLDAP = GetObject _ ("LDAP://CN=myerken,OU=management,DC=fabrikam,DC=com") intCurrentValue = objUserLDAP.Get("userAccountControl") If intCurrentValue and ADS_UF_DONT_EXPIRE_PASSWD Then wscript.echo "The password does not expire." Else dtmValue = objUserLDAP.PasswordLastChanged Wscript.echo "The password was last changed on " & _ DateValue(dtmValue) & " at " & TimeValue(dtmValue) & VbCrLf & _ "The difference between when the password was last set" & VbCrLf & _ "and today is " & int(now - dtmValue) & " days" intTimeInterval = int(now - dtmValue) Set objDomainNT = GetObject("WinNT://fabrikam") intMaxPwdAge = objDomainNT.Get("MaxPasswordAge") If intMaxPwdAge < 0 Then WScript.Echo "The Maximum Password Age is set to 0 in the " & _ "domain. Therefore, the password does not expire." Else intMaxPwdAge = (intMaxPwdAge/SEC_IN_DAY) Wscript.echo "The maximum password age is " & intMaxPwdAge & " days" If intTimeInterval >= intMaxPwdAge Then Wscript.echo "The password has expired." Else Wscript.echo "The password will expire on " & _ DateValue(dtmValue + intMaxPwdAge) & " (" & _ int((dtmValue + intMaxPwdAge) - now) & " days from today" & ")." End If End If End If
Set objUser = GetObject _ ("LDAP://CN=myerken,OU=management,DC=Fabrikam,DC=com") dtmValue = objUser.PasswordLastChanged WScript.echo "pwdLastSet is: " & dtmValue
Set objUser = GetObject _ ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com") If objUser.AccountDisabled = FALSE Then WScript.Echo "The account is enabled." Else WScript.Echo "The account is disabled." End If
On Error Resume Next Set objUser = GetObject _ ("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com") dtmAccountExpiration = objUser.AccountExpirationDate If Err.Number = -2147467259 Or dtmAccountExpiration = "1/1/1970" Then WScript.Echo "No account expiration specified" Else WScript.Echo "Account expiration: " & objUser.AccountExpirationDate End If
Set objOU = GetObject("LDAP://ou=sales,dc=na,dc=fabrikam,dc=com") objOU.MoveHere _ "LDAP://cn=BarrAdam,OU=hr,dc=na,dc=fabrikam,dc=com", vbNullString
Set objUser = GetObject _ ("LDAP://CN=myerken,OU=management,DC=Fabrikam,DC=com") objUser.Put "pwdLastSet", 0 objUser.SetInfo
On Error Resume Next Set objUser = GetObject _ ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com") objUser.GetInfo strUserPrincipalName = objUser.Get("userPrincipalName") strSAMAccountName = objUser.Get("sAMAccountName") strUserWorkstations = objUser.Get("userWorkstations") Set objDomain = GetObject("LDAP://dc=fabrikam,dc=com") objDomain.GetInfoEx Array("dc"), 0 strDC = objDomain.Get("dc") WScript.echo "userPrincipalName: " & strUserPrincipalName WScript.echo "sAMAccountName: " & strSAMAccountName WScript.echo "UserWorkstations: " & strUserWorkstations WScript.echo "dc: " & strDC
Set objUser = GetObject _ ("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com") objUser.IsAccountLocked = False objUser.SetInfo
In this example, you use a text editor such as Notepad to create a VBScript program. The script searches the Marketing OU and creates a text file that lists all of the user objects and a subset of their attributes.
To create the export script
Copy the following text into your text editor:
'Global variables Dim oContainer Dim OutPutFile Dim FileSystem 'Initialize global variables Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject") Set OutPutFile = FileSystem.CreateTextFile("marketing.txt", True) SetoContainer=GetObject("LDAP://OU=marketing,DC=reskit,DC=com") 'Enumerate Container EnumerateUsers oContainer 'Clean up OutPutFile.Close Set FileSystem = Nothing Set oContainer = Nothing WScript.Echo "Finished" WScript.Quit(0) Sub EnumerateUsers(oCont) Dim oUser For Each oUser In oCont Select Case LCase(oUser.Class) Case "user" If Not IsEmpty(oUser.distinguishedName) Then OutPutFile.WriteLine "dn: " & oUser.distinguishedName End If If Not IsEmpty(oUser.name) Then OutPutFile.WriteLine "name: " & oUser.Get ("name") End If 'need to do this because oUser.name would get back the Relative Distinguished name (i.e. CN=Jo Brown) If Not IsEmpty(oUser.st) Then OutPutFile.WriteLine "st: " & oUser.st End If If Not IsEmpty(oUser.streetAddress) Then OutPutFile.WriteLine "streetAddress: " & oUser.streetAddress End If Case "organizationalunit" , "container" EnumerateUsers oUser End Select OutPutFile.WriteLine Next End Sub
Save the file as Export.vbs.
At the command prompt type export.vbs and press Enter. This creates a file named Marketing.txt, which contains a list of users and some of their attributes, such as distinguished name, name, state, and street address.
With appropriate modification, this script can be used with any application that supports COM and Visual Basic technologies. Such applications include Microsoft Visual Basic, Microsoft Excel, and Microsoft Access. Scripting can also be hosted by Internet Explorer and Internet Information Services 5.0, which is part of Windows 2000 Server.
In this example, the Marketing organization has moved to a new office address. A simple VBScript program is used to perform a batch modification for all user objects in the Marketing organization. The script alters the state, street, locality, and postal code attributes.
Copy the following text into your text editor:
Dim oContainer Set oContainer=GetObject("LDAP:// OU=marketing,DC=reskit,DC=com") ModifyUsers oContainer 'cleanup Set oContainer = Nothing WScript.Echo "Finished" Sub ModifyUsers(oObject) Dim oUser oObject.Filter = Array("user") For Each oUser in oObject oUser.Put "st","New York" oUser.Put "streetAddress","825 Eighth Avenue" oUser.Put "postalCode","10019" oUser.Put "l","New York" oUser.SetInfo Next End Sub
Save the file as Modify.vbs.
At the command prompt, type modify.vbs and press Enter. This processes all objects in the Marketing organizational unit and modifies all users, altering the state, street address, postal code, and locality attributes.
In this example, you use VBScript to add a new user to the Marketing organization. This example illustrates how easy it is to use ADSI and VBScript to programmatically access the directory. Note that in this example, only a limited set of attributes are configured during the user creation.
To create the script and add the user
Copy the following text into your text editor:
Dim oContainer 'Parent container of new user Dim oUser 'Created user 'Get parentcontainerSetoContainer=GetObject("LDAP://OU=marketing, DC=reskit,DC=com") 'Create user Set oUser = oContainer.Create("User","CN=Jo Brown") 'Assign properties values to user oUser.Put "samAccountName","Jo" oUser.Put "givenName","Jo" oUser.Put "sn","Brown" oUser.Put "userPrincipalName","jo@reskit.com" oUser.SetInfo 'Clean up Set oUser = Nothing Set oContainer = Nothing WScript.Echo "Finished"
Save the file as Adduser.vbs.
At the command prompt, type adduser.vbs and press Enter. This creates a new user named Jo Brown in the Marketing OU.
In this example, you use VBScript to delete a user from the Marketing organization.
Copy the following text into your text editor:
Dim oContainer 'Parent container of object to be deleted 'Get parent container Set oContainer=GetObject("LDAP://OU=marketing, DC=reskit,DC=com") 'Delete user oContainer.Delete "user","CN=Jo Brown" 'Clean up Set oContainer = Nothing WScript.Echo "Finished"
Save the file as Deluser.vbs.
At the command prompt, type deluser.vbs and press Enter. This deletes the user Jo Brown from the Marketing OU.
-------------------
Thanks,
http://sccm07.blogspot.com/
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set colServices = objPolicy.Services
Set objService = colServices.Item(0)
objService.Enabled = True
-------------------
Thanks,
http://paddymaddy.blogspot.com/
' **************************
' ServerInfo.vbs
' Collects OS and SP info
' List of systems must be in same directory as script
' Run using cscript
' **************************
' Name of Input File
strInputFile = "Syslist.txt"
' Name of Output File
strOutputFile = "ServerInfo.csv"
' Create file system object
set objFSO = CreateObject("Scripting.FileSystemObject")
' Check for Existing Output file, Create output file
If objFSO.FileExists(strOutputFile) Then
Wscript.echo "You must delete or remove " & strOutputFile & " from this directory prior to running script"
wscript.quit
End If
set objOutputFile = objFSO.OpenTextFile(strOutputFile, 2 , True)
If objFSO.FileExists(strInputFile) Then
set objInStream = objFSO.OpenTextFile(strInputFile, 1)
' Begin reading input file
Set objWebmLocator = CreateObject("WbemScripting.SWbemLocator")
On Error Resume Next
Do While objInStream.AtEndOfStream <> True
strComputer = objInStream.Readline
'Wscript.echo ("Connecting to " & strComputer)
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
If Err.number <> 0 Then
Err.clear
Set objWMI = objWebmLocator.ConnectServer(strComputer, "root\CIMV2", strUser, strPassword)
End If
If Err.Number <> 0 Then
objOutputFile.Writeline(strComputer & ",Unavailable")
'WScript.echo ("Connection Failed")
Else
Set colOS = objWMI.ExecQuery("Select Caption From Win32_OperatingSystem")
Set colSP = objWMI.ExecQuery("Select CSDVersion From Win32_OperatingSystem")
intOSCount = 0
intSPCount = 0
For Each objOS In colOS
intOSCount = intOSCount + 1
strOSVal = Replace(objOS.Caption, ",", " ")
Next
For Each objSP in colSP
intSPCount = intSPCount + 1
strSPVal = objSP.CSDVersion
Next
If intOSCount + intSpCOunt > 2 Then
strVerified = "Unconfirmed"
Else
strVerified = "Confirmed"
End If
objOutputFile.Writeline(strComputer & "," & strOSVal & "," & strSPVal & "," & strVerified)
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
intRow = 2
objExcel.Cells(1, 1).Value = "Machine Name"
objExcel.Cells(1, 2).Value = "Status"
objExcel.Cells(1, 3).Value = "Error Number"
objExcel.Cells(1, 4).Value = "Hex Error Number"
objExcel.Cells(1, 5).Value = "Error Description"
Set Fso = CreateObject("Scripting.FileSystemObject")
Set InputFile = fso.OpenTextFile("MachineList.Txt")
Do While Not (InputFile.atEndOfStream)
strComputer = InputFile.ReadLine
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\Wmi")
objExcel.Cells(intRow, 1).Value = UCase(strComputer)
If Err.Number <> 0 Then
objExcel.Cells(intRow, 2).Value = "Error"
objExcel.Cells(intRow, 3).Value = Err.Number
objExcel.Cells(intRow, 4).Value = Hex(Err.Number)
ElseIf Err.Number = 0 Then
objExcel.Cells(intRow, 2).Value = "Success"
objExcel.Cells(intRow, 5).Value = "No Errors"
Err.Clear
End If
If Err.Number = 462 Then
objExcel.Cells(intRow, 5).Value = "Machine Not Found"
ElseIf Err.Number = "-2147217394" Then
objExcel.Cells(intRow, 5).Value = "WMI Class Not Found"
ElseIf Err.Number = "-2147217405" Then
objExcel.Cells(intRow, 5).Value = "Access Denied"
Err.Clear
End If
If objExcel.Cells(intRow, 2).Value = "Error" Then
objExcel.Cells(intRow, 2).Font.ColorIndex = 3
Else
objExcel.Cells(intRow, 2).Font.ColorIndex = 10
End If
intRow = intRow + 1
Loop
objExcel.Range("A1:E1").Select
objExcel.Selection.Interior.ColorIndex = 19
objExcel.Selection.Font.ColorIndex = 11
objExcel.Selection.Font.Bold = True
objExcel.Cells.EntireColumn.AutoFit
MsgBox "Done"
-------------------
Thanks,
http://paddymaddy.blogspot.com/
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
intRow = 2
objExcel.Cells(1, 1).Value = "Machine Name"
objExcel.Cells(1, 2).Value = "Admin Share Exists"
Set Fso = CreateObject("Scripting.FileSystemObject")
Set InputFile = fso.OpenTextFile("MachineList.Txt")
Do While Not (InputFile.atEndOfStream)
strComputer = InputFile.ReadLine
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colShares = objWMIService.ExecQuery("Select * from Win32_Share Where Name = 'ADMIN$'")
objExcel.Cells(intRow, 1).Value = UCase(strComputer)
If colShares.Count > 0 Then
objExcel.Cells(intRow, 2).Value = "Yes"
Else
objExcel.Cells(intRow, 2).Value = "No"
End If
If Err.Number <> 0 Then
objExcel.Cells(intRow, 2).Value = Err.Description
Err.Clear
End If
intRow = intRow + 1
objExcel.Range("A1:B1").Select
objExcel.Selection.Interior.ColorIndex = 19
objExcel.Selection.Font.ColorIndex = 11
objExcel.Selection.Font.Bold = True
objExcel.Cells.EntireColumn.AutoFit
loop
Wscript.Echo "Done"
-------------------
Thanks,
http://paddymaddy.blogspot.com/