seeky99
Goto Top

Per Login Script Active Directory Objekte auslesen und Shares Zuordnen (Shares und Printers)

Hallo,
ich möchte folgendes Szenario abbilden:

Ich möchte in bestimmten OU's (Organization Unit) Printer und Share Objekte erstellen.
Das lässt sich ja mit der AD Konsole machen.

Im Printerobjekt wird der Pfad zum Druckserver, etc. eingetragen und der Name des Printers.
Im Share Objekt wird ebenfalls der Pfad Angegeben und weiters der Laufwerksbuchstabe.

Nun möchte ich ein Loginscript das die OU des Users ausliest und aufgrund der zuvor angelegten Objekte die Drucker und Shares mapped,
Das ganze auch Rekursiv. Das heißt wenn in einer OU ein Printerobjekt angelegt ist, sollte ein User der in darunterliegenden angelegt ist diesen Drucker
auch bekommen.

Ich habe das schonmal gesehen und möchte das gerne übernehmen. Die Frage ist nun hat jemand Erfahrung wo man derartige Loginscripte herbekommt ?

Ich finde die Verwaltung über diesen Weg sehr einfach da man in der Struktur einfach die Shares und Printer hinzufügen kann die dann automatisch gemappt werden.

Bin für jede Hilfe Dankbar !

lg.

Content-Key: 217914

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

Printed on: April 19, 2024 at 05:04 o'clock

Member: lenny4me
lenny4me Sep 26, 2013 at 12:22:33 (UTC)
Goto Top
Hallo,

schau die mal GPP's an. Ich persönlich halte das für die einfachste Möglichkeit. Scripte sind gut... aber gpps sind meiner Meinung nach besser und auch einfacher zu verwalten.

Grüße
Member: RetroDude
RetroDude Oct 16, 2013 updated at 12:53:49 (UTC)
Goto Top
Hallo

Wenn Due Ressourcen per Script zuweisen möchtest, dann würde ich dies über Berechtigungsgruppen tun. Das geht am einfachsten. Diese Art von Membership ist am einfachsten per Script zuzuweisen.
Besipiel VBScrpipt:
On Error Resume Next
Dim objFSO,objFILE,objShell,objNetwork
set objFSO=CreateObject("Scripting.FileSystemObject")  
set objShell=CreateObject("Wscript.Shell")  
set objNetwork=CreateObject("Wscript.Network")  

strHelpMsg="Hast Du Probleme? Dan löse sie! ;-) "  
iErrorTimeout=10
blnShowError=Wahr

'Verbinden der Netzlaufwerke nach Gruppenzugehörigkeit  
If IsAMemberOf(objNetwork.UserDomain,objNetwork.UserName,"Domain Users") Then MapIt "G:","\\FILE01\Data"  

'Verbinden der Printqueues nach Gruppenzugehörigkeit  
If IsAMemberOf(objNetwork.UserDomain,objNetwork.UserName,"Domain Users") Then AddPrinterConnection "\\Print01\HpLaserJ"  
' Standarddrucker setzen  
objNetwork.SetDefaultPrinter "\\Print01\HpLaserJ"  

'Unabhängiges Verbinden von Laufwerken  
MapIt "R:","\\FILE02\Public"  
'Unabhängiges Verbinden von Printqueues  
 AddPrinterConnection "\\Print01\HPDK1220c"  




'Erstellen der Zusammenfassung  
iDisplayTimeout=2
strMsg=""  
strMsg=strMsg & vbcrlf
strMsg=strMsg & vbcrlf
'enumerate drives  
Set objDrives = objNetwork.EnumNetworkDrives
strMsg=strMsg & "Network drive mappings:" & vbcrlf  
For i = 0 to objDrives.Count - 1  Step 2
  strMsg=strMsg & "Drive " & objDrives.Item(i) & "=" & objDrives.Item(i+1) & vbcrlf   
Next
strMsg=strMsg & vbcrlf

'Anzeigen der Zusammenfassung  
If strMsg<>"" Then objShell.Popup strMsg,iDisplayTimeout,"Logon Summary",vbOKOnly+vbInformation  
'End of main script  

'//////////////////////////////////////////////////  
Function PasswordExpires(strDomain,strUser)
On Error Resume Next
Dim objUser
Set objUser=GetObject("WinNT://" & strDomain & "/" & strUser & ",user")  
PassExp=INT(objUser.MaxPasswordAge/86400)-INT(objUser.PasswordAge/86400)

If PassExp<0 Then 
 strPassMsg="Your password never expires."  
Else
 strPassMsg="Your password expires in " & PassExp & " day(s)"  
end If

PasswordExpires=strPassMsg
End Function

Function IsAMemberOf(strDomain,strUser,strGroup)
On Error Resume Next
Set objUser=GetObject("WinNT://" & strDomain & "/" & strUser & ",user")  
Set objGrp=GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")  

If objGrp.IsMember(objUser.ADsPath) Then
	IsAMemberOf=True
Else
	IsAMemberOf=False
End If 

End Function

Sub MapIt(strDrive,strMap)
On Error Resume Next
If objFSO.DriveExists(strDrive) Then objNetwork.RemoveNetworkDrive(strDrive)

objNetwork.MapNetworkDrive strDrive,strMap

If Err.Number<>0 And blnShowError Then
	strMsg="There was a problem mapping drive " & UCase(strDrive) & " to " &_  
	strMap & VbCrLf & strHelpMsg & VbCrLf & "Error#:" & Hex(err.Number) &_  
	VbCrLf & Err.Description
	objShell.Popup strMsg,iErrorTimeOut,"Error",vbOKOnly+vbExclamation  
	Err.Clear
End If

End Sub

Sub AddPrinterConnection(strPrinterUNC)
On Error Resume Next

objNetwork.AddWindowsPrinterConnection strPrinterUNC

If Err.Number<>0 And blnShowError Then
	strMsg="There was a problem mapping " & UCase(strPrinterUNC) & ". " &_  
	vbcrlf & VbCrLf & strHelpMsg & VbCrLf & "Error#:" & Hex(err.Number) &_  
	VbCrLf & Err.Description
	
	objShell.Popup strMsg,iErrorTimeOut,"Error",vbOKOnly+vbExclamation  
	Err.Clear
End If

end sub

Sub AddPrinterPortConnection(strPort,strPrinterUNC)
On Error Resume Next

objNetwork.AddPrinterConnection strPort,strPrinterUNC

If Err.Number<>0 And blnShowError Then
	strMsg="There was a problem mapping " & UCase(strPrinterUNC) & " to " &_  
	strPort & vbcrlf & VbCrLf & strHelpMsg & VbCrLf & "Error#:" & Hex(err.Number) &_  
	VbCrLf & Err.Description
	
	objShell.Popup strMsg,iErrorTimeOut,"Error",vbOKOnly+vbExclamation  
	Err.Clear
End If

end sub

Diese Scripts kannste per Policy auf den entsprechenden OUs zuweisen.

Gruss
RetroDude