70705
Goto Top

Nach Installation von XP SP3 wird Logon-Script nur noch teilweise ausgeführt.

Hallo zusammen,

wir haben hier in der Firma bei einigen Usern das Service Pack 3 für Windows XP installiert. Seit dem funktionieren unsere Logon-Scripts nicht mehr vollständig, das heißt, Netzlaufwerke (teilweise auch Drucker) werden nicht mehr vollständig sondern nur noch 2-3 von eigentlich 6 gemappt.
Habe gegooglelt, aber bin leider nicht fündig geworden. Hat vielleicht jemand das selbe Problem?
Bin für jede hilfreiche Antwort dankbar!

Viele Grüße,

Sebastian

PS.: Bei dem vorherigen Windows XP Service Pack 2 hat alles tadellos funktioniert. Wenn jetzt die User mit Service Pack 3 das Logon-Script nach dem Einloggen nochmal manuell ausführen, funktioniert es.

Content-Key: 99525

Url: https://administrator.de/contentid/99525

Printed on: April 18, 2024 at 18:04 o'clock

Member: csw
csw Oct 17, 2008 at 06:10:07 (UTC)
Goto Top
Etwas mehr Input wäre hilfreich.
Wie sieht das Login-Script aus?
Sind die PCs Mitglied in einer Domäne oder wird das Script lokal aufgerufen?
Mitglied: 70705
70705 Oct 17, 2008 at 06:26:27 (UTC)
Goto Top
Ahh, sorry, stimmt: Die PCs sind Mitglied einer Domäne.


Und hier ist das Script:


Dim UserString

'remove network drives
Dim DelNetDrive
Set WshNet = CreateObject("WScript.network")
For DriveAsc = 102 To 121
On Error Resume Next
DelNetDrive = Chr(DriveAsc) & ":"
WshNet.RemoveNetworkDrive DelNetDrive, True, True
Next

' remove all network printers and drives
On Error Resume Next

Set WshNetwork = WScript.CreateObject("WScript.Network")
Set oPrinters = WshNetwork.EnumPrinterConnections
For i = 0 To oPrinters.Count - 1 Step 2
'WScript.Echo oPrinters.Item(i + 1)
WshNetwork.RemovePrinterConnection oPrinters.Item(i + 1)
Next

UserString = WSHNetwork.UserName
Set UserObj = GetObject("WinNT:" & DomainString & "/" & UserString)

'region Logon Script Builder

'True if a user is in the specified OU (including children OUs)
If CheckUserOUTree("OU-Firma") = 1 Then
MapNetworkShare "O:", "\\ip.vom.server\verzeichnis"
MapNetworkShare "P:", "\\ip.vom.server\verzeichnis"
MapNetworkShare "Q:", "\\ip.vom.server\verzeichnis"
MapNetworkShare "R:", "\\ip.vom.server\verzeichnis"
MapNetworkShare "S:", "\\ip.vom.server\verzeichnis"+WSHNetwork.UserName
MapPrinter "\\ip.vom.server\drucker"
MapPrinter "\\ip.vom.server\drucker"
MapPrinter "\\ip.vom.server\drucker"
MapPrinter "\\ip.vom.server\drucker"

Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "\\srvhtdc001\SYSVOL\firma.intern\scripts\tools\LSclient.exe srvhtprt002",0

End If

'True if the user is a member of the specified group
If CheckUserGroupMembership("DG-Aussendienst", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("DG-Einkauf-EU", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("DG-Fibu", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("DG-Fibu-FR", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("DG-Grafik", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("DG-Informationstechnologie", "True") = 1 Then
MapNetworkShare "M:", "\\ip.vom.server\verzeichnis"
MapNetworkShare "N:", "\\ip.vom.server\verzeichnis"
MapPrinter "\\ip.vom.server\drucker"
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("DG-IS", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
MapPrinter "\\ip.vom.server\drucker"
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("DG-Abteilung01", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("Gruppe01", "True") = 1 Then
End If

If CheckUserGroupMembership("Gruppe02", "True") = 1 Then
End If

If CheckUserGroupMembership("Gruppe03", "True") = 1 Then
End If

If CheckUserGroupMembership("DG-Abteilung02", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("DG-Abteilung03", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("DG-Abteilung04", "True") = 1 Then
MapNetworkShare "T:", "\\ip.vom.server\verzeichnis"
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("DG-Abteilung05", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
MapPrinter "\\ip.vom.server\drucker"
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("G-Abteilung06", "True") = 1 Then
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "\\ip.vom.server\SYSVOL\firma.intern\scripts\tools\bginfo.exe \\ip.vom.server\SYSVOL\firma.intern\scripts\tools\ghd.bgi /timer:0"
End If

If CheckUserGroupMembership("DG-Abteilung07", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("DG-Abteilung08", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("DG-Abteilung09", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserGroupMembership("DG-Abteilung10", "True") = 1 Then
MapPrinter "\\ip.vom.server\drucker"
WshNetwork.SetDefaultPrinter "\\ip.vom.server\drucker"
End If

If CheckUserOUTree("OU-Azubis") = 1 Then
MsgBoxTimed "Ordner/Datei Berechtigungen sowie Drucker hängen von der jeweiligen Abteilung ab. Abteilungswechsel müssen mindestens 1 Werktag vor dem

Wechsel der IT-Abteilung gemeldet werden (Intranet/Supportanfrage)!", "60"
End If

Select Case UserString

Case "User01"
MapPrinter "\\ip.vom.server\drucker"
MapPrinter "\\ip.vom.server\drucker"
Case "User02"
MapPrinter "\\ip.vom.server\drucker"
MapPrinter "\\ip.vom.server\drucker"
Case "User03"
MapPrinter "\\ip.vom.server\drucker"
Case "User04"
MapNetworkShare "V:", "\\ip.vom.server\Datenaustausch$"
End Select


Function CheckUserGroupMembership(sGroup, bCheckDomainGroup)
sGroup = LCase(sGroup)
Set shell = CreateObject("WScript.Shell")
Set env = shell.Environment("Process")
If env("ISEXE") = "1" Then
FULLID = env("ASEUSERID")
sUser = Right(FULLID,(Len(FULLID) - (InStr(FULLID,"\"))))
Else
sUser = env("USERNAME")
End If
On Error Resume Next
If bCheckDomainGroup Then
Set rootDSE = GetObject("LDAP:
rootdse")
If Err.Number <> 0 Then
WScript.Echo "Can not check user group membership." & _
Chr(13) & Chr(10) & "Reason: " & Err.Description & "."
CheckUserGroupMembership = 0
Else
sDomain = rootDSE.Get("DefaultNamingContext")
sQuery = "Select CN,distinguishedName,aDSPath From 'LDAP:" & sDomain & "' Where objectCategory='user' AND samAccountName =

'" & sUser & "'"
Set oConnection = CreateObject("ADODB.Connection")
Set oCommand = CreateObject("ADODB.Command")
oConnection.Provider = ("ADsDSOObject")
oConnection.Open("Active Directory Provider")
oCommand.ActiveConnection = oConnection
oCommand.Properties("Page Size") = 1000
oCommand.Properties("Searchscope") = 2 'ADS_SCOPE_SUBTREE
oCommand.CommandText = sQuery
Set oRecordSet = oCommand.Execute
If Not oRecordset.EOF Then
Set sUserDN = GetObject(oRecordset.Fields("aDSPath"))
CheckUserGroupMembership = 0
If ( _
(sGroup = "domain users" And sUserDN.primaryGroupID = 513) Or _
(sGroup = "domain guests" And sUserDN.primaryGroupID = 514) Or _
(sGroup = "domain computers" And sUserDN.primaryGroupID = 515) Or _
(sGroup = "domain controllers" And sUserDN.primaryGroupID = 516) ) Then
CheckUserGroupMembership = 1
ElseIf Not IsEmpty(sUserDN.MemberOf) Then
For Each oGroup In sUserDN.MemberOf
grpArr = Split(oGroup,",")
fGroup = Join (Split(grpArr(0),"CN="),"")
If sGroup = LCase(fGroup) Then
CheckUserGroupMembership = 1
End If
Next
End If
Else
CheckUserGroupMembership = 0
End If
End If
Else
sUser = LCase(sUser)
Set oNet = CreateObject("WScript.Network")
sGroupComponent = "Win32_Group.Domain='" & oNet.ComputerName & "',Name='" & sGroup & "'"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\.\root\cimv2")
Set oGroupList = objWMIService.ExecQuery("Select * FROM Win32_GroupUser where GroupComponent = """ & sGroupComponent & """")
For Each oGroup In oGroupList
Set oAccount = objWMIService.Get(oGroup.PartComponent)
If LCase(oAccount.Name) = sUser Then
CheckUserGroupMembership = 1
Exit For
End If
Next
Set objWMIService = Nothing
End If
End Function

Function CheckUserOUTree(OU)
Dim sUser
Set oNet = CreateObject("WScript.Network")
Set shell = CreateObject("WScript.Shell")
Set env = shell.Environment("Process")
If env("ISEXE") = "1" Then
FULLID = env("ASEUSERID")
sUser = Right(FULLID,(Len(FULLID) - (InStr(FULLID,"\"))))
Else
sUser = env("USERNAME")
End If
Set rootDSE = GetObject("LDAP:
rootdse")
RootDSE = rootDSE.Get("DefaultNamingContext")
Set oCn = CreateObject("ADODB.Connection")
Set oCmd = CreateObject("ADODB.Command")
oCn.Provider = "ADsDSOObject"
oCn.Open "Active Directory Provider", "", ""
Set oCmd.ActiveConnection = oCn
oCmd.Properties("Page Size") = 1000
oCmd.Properties("Searchscope") = 2 ' ADS_SCOPE_SUBTREE
oCmd.CommandText = "Select distinguishedName From 'LDAP://" & RootDSE & "' Where objectCategory='user' And SamAccountName = '" & sUser & "'"
Set oRs = oCmd.Execute
CheckUserOUTree = 0
Do Until oRs.EOF
If InStr(UCase(oRs.Fields("distinguishedName")), "=" & UCase(OU) & ",") Then
CheckUserOUTree = 1
End If
oRs.MoveNext
Loop
End Function

Sub MapNetworkShare(LocalDrive, NetworkPath)
'Maps specified network share to local drive.
Set objNetwork = WScript.CreateObject("WScript.Network")
On Error Resume Next
objNetwork.MapNetworkDrive LocalDrive, NetworkPath
If Err.Number <> 0 Then WScript.Echo "Can not map path """ & NetworkPath & """ to drive """ & LocalDrive & """." & _
Chr(13) & Chr(10) & "Reason: " & Err.Description
End Sub

Sub MsgBoxTimed(Message, TimeoutPeriod)
'Display timed message box.
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Popup Message, TimeoutPeriod
End Sub

Sub MapPrinter(PrinterPath)
'Maps a printer based on the provided printer path.
Dim objWMIService, colPrinters
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.Get("Win32_Printer")
On Error Resume Next
errReturn = colPrinters.AddPrinterConnection(PrinterPath)
If Err.Number <> 0 Then
WScript.Echo "Can not map printer """ & PrinterPath & """." & _
Chr(13) & Chr(10) & "Reason: " & Err.Description
Else
If errReturn <> 0 Then
errMsg = "Can not map printer """ & PrinterPath & """." & Chr(13) & Chr(10)
If errReturn = 1801 Then
errMsg = errMsg & "Reason: Printer name is invalid."
Else
errMsg = errMsg & "Error #" & errReturn & "."
End If
WScript.Echo errMsg
End If
End If
Set objWMIService = Nothing
End Sub


'endregion
Mitglied: 70705
70705 Oct 27, 2008 at 06:22:47 (UTC)
Goto Top
Hat niemand einen Vorschlag? Ist dieses Problem niemandem bekannt?