SCRIPT: Change Home-directory field in Active Directory

27 01 2010

Use this script to change the Home-directory field in Active Directory

'on error resume next must be enabled, otherwise the search will fail on accounts which do not have a
'homedirectory/homedrive defined.
on error resume next

CONST ForReading = 1
CONST ForWriting = 2
CONST ForAppending = 8
CONST Create = true

UitwijkHomeDirServer = "cc-afsr-01"
OriginalHomeDirServer = "fvs-01"

Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
'objCommand.CommandText = ";(objectCategory=User)" & ";adspath;subtree"
'Onderstaande CommandText is om mee te testen.
objCommand.CommandText = ";(objectCategory=User)" & ";adspath;subtree"
Set objRecordSet = objCommand.Execute

Set objShell = CreateObject("WScript.Shell")
Set objFso = CreateObject("scripting.filesystemobject")

Set changehomedirlogtxt = objFso.OpenTextFile("ChangeHomeDir_log.txt", ForAppending, Create)

'Append de datum en tijd in het tekstbestan met een witregel ervoor en erna.
changehomedirlogtxt.WriteBlankLines 1
changehomedirlogtxt.WriteLine(Date & " " & Time)
changehomedirlogtxt.WriteBlankLines 1

'Loop door het recordset en verander van iedere gebruiker die een homedrive op J heeft naar de fvs-01 de homedirectory.
'Schrijf alle usernames en homedirectories die aan de gebruikte if statement voldoen naar een tekstbestand.
Do Until objRecordset.EOF
'Zet de te gebruiken waardes weer op nul, anders worden de waardes gebruikt voor accounts die geen homeDirectory hebben.
currentHomeDir = ""
currentHomeDrive = ""
currentUserName = ""
Set objUser = GetObject(objRecordset.Fields("adspath"))
currentHomeDir = objUser.Get("homeDirectory")
currentHomeDrive = objuser.Get("homeDrive")
currentUserName = objUser.Get("name")
if currentHomeDrive = "J:" and left(currentHomeDir, 8) = "\\" & OriginalHomeDirServer then
'WScript.echo "Gebruiker " & currentUserName & " heeft de gewenste homedir in " & currentHomeDir
changehomedirlogtxt.WriteLine(currentUserName & " " & currentHomeDir)
objUser.Put "homeDirectory", "\\" & UitwijkHomeDirServer & "\Home\" & currentUserName
objUser.SetInfo
end if
objRecordset.MoveNext
Loop

changehomedirlogtxt.Close()

objConnection.Close

MsgBox("Klaar. Alle HomeDirectories zouden nu moeten verwijzen naar de " & UitwijkHomeDirServer)

Set objShell = Nothing
Set objFso = Nothing





SCRIPT: Delete old Windows Update backup files

27 01 2010

The following script can be used as a scheduled task on workstations. It deletes old Windows Update backup files which are morely overhead than useful.

Option Explicit
Dim o, oShell, nConfirm
Set o = WScript.Application
o.Interactive = True
Set oShell = CreateObject("WScript.Shell")

Dim oFSO, sWinDir, oFolder, oDictionary, oSubFolder, sFolderName, sFolderPath, sUpdateName, sDeleted
Set oFSO = CreateObject("Scripting.FileSystemObject")
sWinDir = oFSO.GetSpecialFolder(0)
sDeleted = vbNullString
Set oFolder = oFSO.GetFolder(sWinDir)
Set oDictionary = CreateObject("Scripting.Dictionary")
For Each oSubFolder In oFolder.SubFolders
'Zoek de verschillen Hint: het zit um in één regel :-)
sFolderName = LCase(oSubFolder.Name)
sFolderPath = LCase(oSubFolder.Path)
'change days here
If (DateDiff("D", oSubFolder.DateCreated, Date()) > 90) And Left(sFolderName, 12) = "$ntuninstall" And Mid(sFolderName, 13, 2) = "kb" Or Mid(sFolderName, 13, 2) = "q" Then
sUpdateName = Mid(sFolderName, 13, Len(sFolderName) - 13)
oDictionary.Add sUpdateName, sFolderPath
End If
Next

For Each sUpdateName in oDictionary.Keys
sDeleted = sDeleted & vbCrLF & sUpdateName
sFolderPath = oDictionary.Item(sUpdateName)
On Error Resume Next
oShell.RegDelete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & sUpdateName & "\"
oShell.RegDelete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache\" & sUpdateName & "\"
On Error Goto 0
oShell.Run "%ComSpec% /C RD /S /Q " & Chr(34) & sFolderPath & Chr(34), 0, True
Next
'If Len(sDeleted) > 0 Then
' MsgBox "The uninstall data for the following updates are now removed:" & vbCrLf & UCase(sDeleted), vbOKOnly + vbInformation, "Files Removed"
' sDeleted = vbNullString
'Else
' MsgBox "No Windows Update Folders found for removal", vbOKOnly + vbInformation, "Nothing To Do"
'End If
o.Quit 0





SCRIPT: Create a folder in every homedirectory

27 01 2010

Last week i needed to create a folder in the home directory of every user. I used a simple batch script to accomplish this:
@echo off
REM
H:
for /F "usebackq delims==" %%i in (`dir *.* /B`) DO md "H:\%%i\favorites





SCRIPT: Change Provider Order Windows XP

27 01 2010

For my unattended XP installation i was searching for a script which could easily change the provider order. My cutomers use the Novell client a lot, but i want the Microsoft Client to be used first. Here’s the great script created by Anders Olsson, Kentor Teknik AB. Thanx for the great work man!!


' ChangeProviderOrder.vbs, by Anders Olsson, Kentor Teknik AB, 2006-10-31
'
' Reads the "Network provider order" from the registry and reorders it putting
' the "Microsoft Windows Networking" provider on top.
'
' Example: Before - "NCredMgr,NetwareWorkstation,RDPNP,LanmanWorkstation,WebClient"
' would become "LanmanWorkstation,NCredMgr,NetwareWorkstation,RDPNP,WebClient" after
' running this script.
'
Set WshShell = WScript.CreateObject("WScript.Shell")

' Read the reg value of the providers
strKey = WshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrder")

' Split the strings up using comma (ASCII #44) as the delimiter
arrProvs = Split(strKey, chr(44), -1, 1)

' If LanmanWorkstation is already first, we don't have to do anything
If arrProvs(0) = "LanmanWorkstation" Then
Wscript.Quit(0)
end if

' "LanmanWorkstation" should always start the string
strNewProvs = "LanmanWorkstation"

' Loop through the old provider strings, and add them to the new string. Don't
' write LanmanWorkstation, since it's already written at the start of the string.
For Each strProv In arrProvs
Select Case strProv
Case "LanmanWorkstation"
Case Else strNewProvs = strNewProvs & "," & strProv
End Select
Next

' Write the new string back to the registry
WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrder", strNewProvs, "REG_SZ"





Installshield command line switches

19 11 2009

All about InstallShield command line switches

InstallShield Command Line Switches

Special Installation Modes
/a : Administrative installation
/j : Advertise mode
/x : Uninstall mode
/uninst : Uninstall product (Standard projects only)

Silent Installations
/p : Specify password
/r : Record mode (Standard projects only)
/s : Silent mode
/f1 : Specify alternative response file name (Standard projects only)
/f2 : Specify alternative log file name (Standard projects only)

SMS Data
/m : Generate MIF file (Standard projects only)
/m1 : Specify serial number in MIF file (Standard projects only)
/m2 : Specify locale string in MIF file (Standard projects only)

Download and Cache Locations
/ua : Specify URL for InstMsiA.exe
/uw : Specify URL for InstMsiW.exe
/us : Specify URL to ISScript.msi
/um : Specify URL to .msi package
/b : Cache installation locally
Passing Data to the Installation
/v : pass arguments to Msiexec
/z : Pass arguments to CMDLINE variable

Debugging
/d : Debug InstallScript (Standard projects only)
/verbose : Generate verbose InstallScript engine log file (Standard projects only)

Miscellaneous
/f : Specify alternative compiled script (Standard projects only)
/L : Setup language
/w : Wait
/SMS : Wait (Standard projects only)

Information gathered from:

http://kb.flexerasoftware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&externalId=Q105472&sliceId=

&

http://kb.flexerasoftware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&externalId=Q105473&sliceId=





HOWTO: Setup folder permissions for anonymous user

22 10 2009

In Windows Server 2003 thing are tighten up. When you want anonymous users to gain access to a shared folder, without being prompted for credentials, you must change the following group-policy settings:

anonymous

Worked for me!





SCRIPT: Share and unshare printers automatically

7 10 2009

Share local printers:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer Where Network = FALSE")

i = 1

For Each objPrinter in colInstalledPrinters
objPrinter.Shared = TRUE
objPrinter.ShareName = objPrinter.Name
objPrinter.Put_
i = i + 1
Next

Unshare local printers:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer Where Network = FALSE")

i = 1

For Each objPrinter in colInstalledPrinters
objPrinter.Shared = FALSE
objPrinter.ShareName = objPrinter.Name
objPrinter.Put_
i = i + 1
Next





SCRIPT: Exclude files and directories read from a single file using Robocopy

7 10 2009

Use this script and 2 textfiles which can be used to exclude files and folders.

robocopy.vbs
EXCLUDEDIRS = "C:\robocopy\excludedirs.txt"
EXCLUDEFILES = "C:\robocopy\excludefiles.txt"
ROBOCOPYLOCATION = "C:\robocopy\robocopy.exe"
SOURCELOCATION = "Y:\"
TARGETLOCATION = "D:\"
Const FOR_READING = 1
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(EXCLUDEDIRS, FOR_READING)
strDirExclude = objFile.ReadAll
objFile.Close
Set objFile = objFSO.OpenTextFile(EXCLUDEFILES, FOR_READING)
strFileExclude = objFile.ReadAll
objFile.Close
arrDirExclude = Split(strDirExclude, vbCrLf)
arrFileExclude = Split(strFileExclude, vbCrLf)
For Each dir In arrDirExclude
dirs = dirs + " /xd " + chr(34) + dir + chr(34)
Next
For Each bestand In arrFileExclude
bestanden = bestanden + " /xf " + chr(34) + bestand + chr(34)
Next
mycommand = ROBOCOPYLOCATION & chr(32) & SOURCELOCATION & chr(32) & TARGETLOCATION & " /COPYALL /S /mir /R:5 /W:10 /IPG:10 /TBD /ETA /LOG+:C:\ictivity\robo.log /TEE " & dirs & bestanden
WshShell.Run(mycommand)

Excludedirs.txt
y:\Program Files
y:\Profiles
y:\TSprofiles

Excludefiles.txt
y:\Application Partitions.vsd
y:\Domains.vsd
y:\Groups.csv
y:\AD\TEST\pagefile.sys





SCRIPT: Delete network printer

7 10 2009

Use this script to delete a network printer:

Option Explicit
Dim objNetwork, strUNCPrinter
strUNCPrinter = "\\server\mprinter"

Set objNetwork = CreateObject("WScript.Network")
objNetwork.RemovePrinterConnection strUNCPrinter

Wscript.Quit





SCRIPT: Install Networkprinter and make it default

7 10 2009

Use this VB script to install a network printer and make it default:

Set objNetwork = CreateObject("WScript.Network")
objNetwork.AddWindowsPrinterConnection "\\server\printer"

Dim objPrinter
Set objPrinter = CreateObject("WScript.Network")
objPrinter.SetDefaultPrinter "\\server\printer"