Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Laufwerksmapping aller Freigegebenen Ordner einer OU mit vbScript

Frage Entwicklung Batch & Shell

Mitglied: mhard666

mhard666 (Level 1) - Jetzt verbinden

24.09.2009, aktualisiert 14:15 Uhr, 4137 Aufrufe, 4 Kommentare

Ich möchte im Loginscript alle Freigegebenen Ordner einer OU mappen. Das ganze soll in vbScript realisiert werden.

Hallo allerseits.

Ich stehe vor dem o.g. Problem. Bin leider mit Googlen und suchen hier im Forum nicht weiter gekommen.

Ich habe im AD unterhalb einer OU die jeweiligen Benutzer und Ordnerfreigaben angelegt. Bei den Ordnerfreigaben in den Schlüsselwörtern sind die Laufwerksbuchstaben (können ggf. auch mehrere sein) hinterlegt.
Jetzt soll, wenn sich der Benutzer anmeldet, geprüft werden in welcher OU er angelegt wurde. Anschließend sollen alle Ordnerfreigaben der OU gemappt werden. Vorzugsweise sollen die Laufwerksbuchstaben aus den Schlüsselwörtern der Ordnerfreigabe (im AD) gelesen werden - wenn mehrere hinterlegt sind, sollte dann die Freigabe entsprechend als mehrere Laufwerke eingebunden werden (finde ich praktisch - wenn es einen guten Grund für eine andere Lösung gibt bin ich ganz Ohr (oder Auge ).

Bin leider nicht so der Crack in vbScript. Bin daher für jeden Lösungsansatz oder Codeschnipsel dankbar.

Falls es eine Lösung in KIXtart gibt, wäre mir das fast noch lieber.

mfG mhard666
Mitglied: Ametrin
28.09.2009 um 21:04 Uhr
Hallo!

Wenn ich Sie richtig verstanden habe sieht Ihre AD Stucktur ungefähr so aus:

root
---->UO1
------> BeuntzerA
------> BenutzerB
------>FreigabeNameA

---->UO2
------> BeuntzerC
------> BenutzerD
------>FreigabeNameB
------>FeigabenNameC

und Sie wollen jetzt Abhänging vom Benutzer in dessen übergeordneter UO nach beinhalteten Freigabe Namen suchen und dies je nach Laufwerksbuchstabe mappen?

mfg Ametrin
Bitte warten ..
Mitglied: mhard666
30.09.2009 um 16:39 Uhr
genau so schaut's aus.

Mittlerweile habe ich schon ein gutes Stück Code zusammengeschrieben. Ich setz es mal hier rein - vielleicht kann ja jemand was mit anfangen oder hat noch die eine oder andere Idee...


' Region Description 
' Name:			userloginscript.vbs 
' Author:		Mirko Härtwig 
' Version:		v0.1 
' Description:	Userloginscript,  
'				- ermittelt die OU des angemeldeten Users,  
'				- mountet die In der OU eingetragenen Verzeichnisfreigaben 
' 				- bereits gemountete Laufwerke werden dismountet 
'               - mappt die in der OU eingetragenen Drucker (enthält die Beschreibung den String "Default"  
'                 wird der Drucker als Standarddrucker verwendet, der bisherige Standarddrucker wird dadurch überschrieben)  
' ToDo:         - Verknüpfungen kopieren 
'               - Scriptinventory beim ersten Start in der Woche ausführen 
'               - prüfen ob lokaler Drucker existiert, dann keinen Netzwerkdrucker als Standart setzen ??????  
'                 * Option: Prüfen ob Drucker in einer Liste/Array existiert 
'  
' EndRegion 
 
Option Explicit 
 
Dim objNetwork 
Dim objADSysInfo 
Dim objUser					' User 
Dim objOU					' OrgUnit 
Dim objV					' Volume 
Dim objKey					' Keywords (Array) 
Dim objPq					' PrintQueue 
Dim objPdescr				' Printer Description 
 
Dim defprt					' Default Printer (True/False) 
 
  Set objNetwork = WScript.CreateObject( "WScript.Network" ) 
  Set objADSysInfo = CreateObject("ADSystemInfo") 
  Set objUser = GetObject("LDAP://" & objADSysInfo.UserName) 
  Set objOU = GetObject(objUser.parent) 
 
  ' === Ausgabe diverser Angaben ============================================= 
  WScript.Echo "Username: ............... " + objNetwork.userName 
  WScript.Echo "Domänenname: ............ " + objNetwork.userDomain 
  WScript.Echo "Organisationseinheit: ... " + objOU.Name 
  WScript.Echo "Computername: ........... " + objNetwork.ComputerName 
  WScript.Echo "Clientname: ............. "  
  WScript.Echo "Sitename: ............... " + objADSysInfo.SiteName 
  WScript.Echo "Anmeldeserver: .......... "  
 
  ' === Alle Verzeichnisfreigaben der OU mounten 
  objOU.Filter = Array("volume") 
  For Each objV In objOU 
	For Each objKey In objV.keywords 
		MapNetworkShare objKey, objV.uNCName 
	Next 
  Next 
 
  objOU.Filter = Array("printqueue") 
  For Each objPq In objOU 
	defprt = False 
	If InStr(UCase(objPq.description), UCase("Default")) <> 0 Then defprt = True 
	 
	MapPrinter objPq.printerpath, defprt 
  Next 
 
 
'Region Subroutines 
 
Sub MapNetworkShare(LocalDrive, NetworkPath) 
' Author:		Mirko Härtwig 
' Description:	Mappt eine Netzwerkfreigabe auf ein spezielles Laufwerk. Ggf. vorhandene Mappings 
'				auf dieses Laufwerk werden vorher entfernt 
 
Dim objNetwork 
 
	Set objNetwork = WScript.CreateObject("WScript.Network") 
	On Error Resume Next 
 
	objNetwork.RemoveNetworkDrive LocalDrive, True, True 
	If Err.Number <> 0 Then WScript.Echo "Can not remove Networkdrive """ & LocalDrive & """ " & _ 
	Chr(13) & Chr(10) & "Reason: " & Err.Description 
	 
	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 
	Else 
	    WScript.Echo "Connect network share """ & NetworkPath & """ to drive """ & LocalDrive & """." 
	End If 
	 
 
End Sub 
 
Sub MapPrinter(PrinterPath, DefaultPrinter) 
'	 
' Author:		Mirko Härtwig 
' Description:	Mappt einen Drucker. Ggf vorhandene Mappings werden vorher nicht entfernt 
 
Dim objNetwork 
 
	Set objNetwork = WScript.CreateObject("WScript.Network") 
	On Error Resume Next 
	 
	objNetwork.AddWindowsPrinterConnection PrinterPath 
	If Err.Number <> 0 Then  
		WScript.Echo "Can not add Printer Connection """ & PrinterPath & """ " & _ 
		Chr(13) & Chr(10) & "Reason: " & Err.Description 
	Else 
		WScript.Echo "Add Printer Connection """ & PrinterPath & """." 
	End If 
	 
	If DefaultPrinter Then  
		objNetwork.SetDefaultPrinter PrinterPath 
 
		If Err.Number <> 0 Then  
			WScript.Echo "Can not set """ & PrinterPath & """ as default Printer." & _ 
			Chr(13) & Chr(10) & "Reason: " & Err.Description 
		Else 
			WScript.Echo "Set Printer Connection """ & PrinterPath & """ as default Printer." 
		End If 
	End If 
 
 
End Sub 
 
'EndRegion 
Bitte warten ..
Mitglied: Ametrin
30.09.2009 um 18:39 Uhr
Hmm ich weiß nicht wie man diesen Blau weißen Text macht.
Habe 2 Vorschläge für dich

1.) Wenn du mit Windows Server 2008 arbeitest funktionieren dir GPO Preferenzes ganz gut, ansonnsten würde ich dir empfehlen einfach Gruppen zu machen die der User(in) dann erhält. Auf die Art kann man dann bequem Freigaben oder Drucker adden die in einer anderen UO sind.
2.) Wenn du keine GPO Preferences einsetzen kannst oder willst dann hier ein Auszug eines simplen Logonscripts (simpel deswegen da keine Fehlerabfrage )
01.
 Set wshShell = CreateObject("WScript.Shell") 
02.
Set wshNetwork = CreateObject("WScript.Network") 
03.
Set colDrives = wshNetwork.EnumNetworkDrives 
04.
 
05.
Set objDomain = getObject("LDAP://rootDse") 
06.
DomainString = objDomain.Get("dnsHostName") 
07.
UserString = wshNetwork.UserName 
08.
Set UserObj = GetObject("WinNT://" & DomainString & "/" & UserString) 
09.
 
10.
On Error Resume Next 
11.
'---------------------Drucker & Laufwerke löschen------------------------------------ 
12.
For i = 0 to colDrives.Count-1 Step 2 
13.
    wshNetwork.RemoveNetworkDrive colDrives.Item(i) 
14.
Next 
15.
 
16.
'---------------------------Die nächsten 5Zeilen sind nicht von mir-------------------- 
17.
Set wshNet = CreateObject("WScript.Network") 
18.
Set wshPrn = wshNet.EnumPrinterConnections 
19.
For x = 0 To wshPrn.Count - 1 Step 2 
20.
If Left(wshPrn.Item(x+1),2) = "\\" Then wshNet.RemovePrinterConnection wshPrn.Item(x+1),True,True 
21.
Next 
22.
 
23.
'----------------------Gruppen Laufwerke & Drucker----------------------------------- 
24.
 
25.
For Each GroupObj In UserObj.Groups 
26.
Select Case GroupObj.Name 
27.
 
28.
case "Freigabe1"			 
29.
	ret = WSHNetwork.RemoveNetworkDrive("V:", True, True) 
30.
	ret = WSHNetwork.MapNetworkDrive("V:", "\\SERVER\SHARENAME", False)  
31.
	objShell.NameSpace("V:").Self.Name = "ARBEITSLAUFWERK" 
32.
case "Drucker1"			 
33.
	wshNetwork.AddWindowsPrinterConnection "\\SERVER\PRINTERSHARENAME",True 
34.
 
35.
End Select 
36.
Next
Bitte warten ..
Mitglied: mhard666
01.10.2009 um 15:42 Uhr
Bezüglich der Code-Formatierung siehe Formatierungshilfe

Über die Zuordnung durch Gruppenmitgliedschaften hab ich auch schon nachgedacht, hat beides seine Vor- und Nachteile. Ich bin letztenendes bei den OUs geblieben, weil ab einer gewissen Größe nicht mehr so gut nachvollziehbar ist welcher User Mitglied in welchen Gruppen ist und demzufolge irgendwelche Laufwerke oder Drucker gemappt bekommt. Da finde ich eine Grafische Darstellung wie in der AD Computer und Benutzerverwaltung schon hilfreich. Außerdem sollen Co-Admins, die Verzeichnisse mappen müssen nicht in meinem Script rumschreiben müssen. Und schlussendlich muss es ja für irgendetwas gut sein, dass ich in den OUs Verzeichnis- und Druckerfreigaben hinterlegen kann Dafür nehme ich sogar den ggf. höheren Planungsaufwand in Kauf.

mfg. mhard666
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...