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

VBScript - Gruppen Abfragen eines Windows Server (AD)

Frage Microsoft Windows Server

Mitglied: micneu

micneu (Level 2) - Jetzt verbinden

09.02.2011 um 15:12 Uhr, 6830 Aufrufe, 11 Kommentare

Hallo Leute,

ich habe ein script in VBScript geschrieben und habe jetzt nur ein kleines Problem:
Ich kann die Security Groups nicht abfragen.

Also das ziel ist es das alle Domain user über die Gruppen zugehörigkeit ihren Drucker zugewisen bekommen.
Für Netzlaufwerke habe ich es schon hinbekommen, dort nutze ich auch Gruppen, für die Drucker habe ich aber Security Groups genommen.
Wie kann ich das abfragen, hier mein script:

Ab Zeile 34 werte ich die Gruppen aus, wie kann ich es jetzt einbauen das er auch die Security Groups auswertet?

01.
Option Explicit 
02.
Dim arNETLW, iz, zaehler, X64 
03.
Dim FSO, NetLW, colDrives, objNetwork, Network, USERNAME 
04.
Set FSO = CreateObject("Scripting.FileSystemObject") 
05.
Set Network = Wscript.CreateObject("Wscript.Network") 
06.
 
07.
ShowPrinter 
08.
' Drucker zuweisung  
09.
	if ValidateADGroup("Drucker 1") Then 
10.
		PrinterPath = "\\SBSSERVER\Drucker 1" 
11.
		PrinterDriver = "HP Universal Printing PS" 
12.
		Network.AddWindowsPrinterConnection PrinterPath, PrinterDriver 
13.
	End If	 
14.
	if ValidateADGroup("Drucker 1 STD") Then 
15.
		Network.SetDefaultPrinter "\\SBSSERVER\Drucker 1" 
16.
	End If 
17.
	 
18.
Function ShowPrinter() 
19.
	wscript.echo "ShowPrinter" 
20.
	Dim strComputer, objWMIService, colInstalledPrinters, objPrinter 
21.
	strComputer = "localhost" 
22.
	Set objWMIService = GetObject("winmgmts:" _ 
23.
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
24.
	Set colInstalledPrinters =  objWMIService.ExecQuery _ 
25.
    ("Select * from Win32_Printer") 
26.
	 
27.
	For Each objPrinter In colInstalledPrinters 
28.
		If InStr(1, objPrinter.Name, "\\", 1) Then 
29.
			WScript.Echo "Name: " & objPrinter.Name 
30.
		End If		 
31.
	Next 
32.
End Function 
33.
 
34.
' Abfrage der AD Gruppen 
35.
Function ValidateADGroup(AD_PACKAGE_GROUP)  
36.
	Dim message  
37.
	Dim objADSysInfo : Set objADSysInfo = CreateObject("ADSystemInfo")  
38.
	Dim strUser : strUser = objADSysInfo.UserName  
39.
	Dim strGroup  
40.
	Dim objGroup  
41.
	Dim objUser : Set objUser = GetObject("LDAP://" & strUser)  
42.
	For Each strGroup in objUser.memberOf  
43.
		Set objGroup = GetObject("LDAP://" & strGroup)  
44.
		If InStr(objGroup.CN, AD_PACKAGE_GROUP) <> 0 Then  
45.
			ValidateADGroup = True  
46.
			Set objGroup = nothing  
47.
			Exit Function 
48.
		Else  
49.
			ValidateADGroup = False  
50.
			Set objGroup = nothing  
51.
		End If 
52.
	Next  
53.
End Function
kann ich die zeile 44 so verändern das eine art or bedingung security groups mit abfragt?
könnte es so gehen?
01.
If InStr(objGroup.CN, AD_PACKAGE_GROUP or ADS_GROUP_TYPE_SECURITY) <> 0 Then 
oder muss die funktion komplett neu geschrieben werden?

gruß michael
Mitglied: 60730
09.02.2011 um 15:30 Uhr
Salü,

ganz dumme Gegenfrage - wenn du schreibst für die Drucker nimmst du aber Security Groups - was hast du für die Netzwerklaufwerke genommen?
Distributiongroups?

Die Frage, warum so was "banales" wie ein Loginscript mit VBS zu schreiben, verkneife ich mir

Gruß
Bitte warten ..
Mitglied: bastla
09.02.2011 um 15:32 Uhr
Hallo micneu!

Was verstehst Du in diesem Fall unter "Security Group"?
Abgesehen davon prüft Deine Function die Mitgliedschaft bei der als Parameter übergebenen Gruppe - wenn mehrere Gruppenmitgliedschaften geprüft werden sollen, musst Du die Function mehrmals aufrufen oder eben alle zu prüfenden Gruppen übergeben.

Um mehrere Gruppen mit einmaligem Einlesen der Mitgliedschaften prüfen zu können, würde ich sie in einem String nach dem Muster
#Gruppe1#Gruppe2#Gruppe3#
zusammenfassen und dann die "InStr"-Abfrage umkehren:
If InStr(AD_PACKAGE_GROUP, "#" & objGroup.CN & "#") <> 0 Then  
Grüße
bastla
Bitte warten ..
Mitglied: micneu
09.02.2011 um 15:49 Uhr
Hallo bastla,

ich habe das netzt übernommen und es waren schon einige gruppen angelegt.
Mir wurde vorgegeben das z.b.:
LW x: ist netzlaufwerk \\sbsserver\bla1
LW z: ist netzlaufwerk \\sbsserver\bla2

diese laufwerke bekommen alle die in der gruppe HUSTEN sind.

und für die Drucker Sollte ich unter Security Groups, eine Gruppe "Drucker 1", "Drucker 2" usw. einrichten
der Gruppenbereich ist bei allen "Global" und Gruppentyp ist Sicherheit"

Ist jetzt ein User in der Gruppe "Drucker 1" bekommt er den auch zugewiesen als Standard drucker.
hoffe es ist jetzt verständlicher

jetzt frage ich noch anderst, wie kann ich in vbscript abfragen welchen typ eine gruppe ist?

gruß michael
Bitte warten ..
Mitglied: micneu
09.02.2011 um 16:02 Uhr
kann es was damit zu tun haben wo meine gruppe im ad liegt?

hier ein beispiel:

domain.local/MyBusiness/Security Groups/Drucker/Drucker 1
domain.local/MyBusiness/Users/SBSUsers/HUSTEN

husten klappt für die netzlaufwerke, nur drucker 1 ja nicht.

gruß michael
Bitte warten ..
Mitglied: 60730
09.02.2011 um 17:33 Uhr
Moin,

ganz kurz, weil jetzt das Kinderl dran ist..

Es gibt Verteilergruppen - Sicherheitsgruppen und Organsationseinheiten....

Nur bei AD Abfragen der Ous sind die Orte, wo die hingelegt wurden interessant...

Von daher bitte beantworte doch mal meine großgeschriebene und Bastlas Frage nach "welcher Zusammenhang Sicherheitsgruppe" denn mit der Problematik zu tun hat.

Sorry mehr Zeit hab ich jetzt nicht, aber der eigene Genpool geht vor.
Bitte warten ..
Mitglied: bastla
09.02.2011 um 19:15 Uhr
Hallo micneu!
jetzt frage ich noch anderst, wie kann ich in vbscript abfragen welchen typ eine gruppe ist?
Brauchst Du nicht, wenn Du ohnehin nur Sicherheitsgruppen verwendest.
husten klappt für die netzlaufwerke, nur drucker 1 ja nicht.
Lässt sich "klappt nicht" noch etwas näher ausführen (etwa mittels einer Fehlermeldung)?
Wenn Du einfach einmal nur die (direkte) Gruppenmitgliedschaft kontrollieren willst:
01.
strUser = CreateObject("ADSystemInfo").UserName 
02.
Groups = "Gruppen:" 
03.
For Each strGroup in GetObject("LDAP://" & strUser).memberOf  
04.
    Groups = Groups & vbCrLf & GetObject("LDAP://" & strGroup).cn 
05.
Next  
06.
WScript.Echo Groups
Grüße
bastla
Bitte warten ..
Mitglied: DerWoWusste
12.02.2011 um 16:39 Uhr
Lass mal bitte kurz schauen, wie Dein Konzept aussieht, wenn Du Folgendes in Betracht ziehst:

Nur Admins oder (in winxp) Hauptbenutzer können Drucker installieren, somit ist ohne Änderungen von einstellungen nur eine Zuweisung an Computerobjekte möglich. Das macht man wiederum am besten über GPOs (möglich ab 2003 R2 DCs), es sei denn man möchte wirklich Benutzern zuweisen (die an mehreren Rechnern sitzen und unabhängig vom Standort die selben Drucker haben sollen, während andere am selben Rechner auch andere Drucker bekommen sollen).
Bitte warten ..
Mitglied: micneu
19.04.2011 um 10:51 Uhr
Hallo Leute,

habe jetzt eine lösung.

Hier mein code:
01.
' Login.vbs 
02.
' Login script mit Gruppenabfrage und Drucker zuweisung 
03.
' michael.neumann@itech-consulting.net 
04.
' Kunde: Teravolt / QTom 
05.
' Stand: 21.02.2011 
06.
' ==================================================== 
07.
' Deklaration der Variablen 
08.
Option Explicit 
09.
Dim arNETLW, iz, zaehler, X64 
10.
Dim FSO, NetLW, colDrives, objNetwork, Network, USERNAME 
11.
Dim PrinterPath, PrinterDriver, AD_GRP_1, AD_GRP_2, PRINTER_PATH, PRINTER_DRV 
12.
Set FSO = CreateObject("Scripting.FileSystemObject") 
13.
Set Network = Wscript.CreateObject("Wscript.Network") 
14.
 
15.
On Error Resume Next 
16.
	Dim WshShell 
17.
	Dim OsType 
18.
	 
19.
	Set WshShell = CreateObject("WScript.Shell") 
20.
	OsType = WshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE") 
21.
	If OsType = "x86" then 
22.
		'wscript.echo "Windows 32bit system detected" 
23.
		X64 = "NO" 
24.
	elseif OsType = "AMD64" then 
25.
		'wscript.echo "Windows 64bit system detected" 
26.
		X64 = "YES"		 
27.
	end if 
28.
 
29.
IF X64 = "YES" THEN 
30.
	'NICHTS 
31.
ELSE 
32.
	'ShowPrinter 
33.
	RemoveNetPrinter	 
34.
'	SW-MFP-PS 
35.
	NetUsePrinters "SW-MFP-PS","SW-MFP-PS_STD","\\SRV-01\SW-MFP-PS","HP Universal Printing PS" 
36.
'	PCenter SW PS 
37.
	NetUsePrinters "PCenter-SW-PS","PCenter-SW-PS_STD","\\SRV-01\PCenter-SW-PS","HP Universal Printing PS"	 
38.
'	PCenter SW PCL6 
39.
	NetUsePrinters "PCenter-SW-PCL6","PCenter-SW-PCL6_STD","\\SRV-01\PCenter-SW-PCL6","HP Universal Printing PCL6" 
40.
	ShowPrinter 
41.
END IF 
42.
 
43.
Function ShowPrinter	 
44.
	Dim strComputer, objWMIService, colInstalledPrinters, objPrinter 
45.
	strComputer = "localhost" 
46.
	Set objWMIService = GetObject("winmgmts:" _ 
47.
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
48.
	Set colInstalledPrinters =  objWMIService.ExecQuery _ 
49.
    ("Select * from Win32_Printer") 
50.
	 
51.
	For Each objPrinter In colInstalledPrinters 
52.
		If InStr(1, objPrinter.Name, "\\", 1) Then 
53.
			WScript.Echo "Name: " & objPrinter.Name 
54.
		End If		 
55.
	Next 
56.
End Function 
57.
 
58.
' Abfrage der AD Gruppen 
59.
Function ValidateADGroup(AD_PACKAGE_GROUP)  
60.
	Dim message  
61.
	Dim objADSysInfo : Set objADSysInfo = CreateObject("ADSystemInfo")  
62.
	Dim strUser : strUser = objADSysInfo.UserName  
63.
	Dim strGroup  
64.
	Dim objGroup  
65.
	Dim objUser : Set objUser = GetObject("LDAP://" & strUser)  
66.
	For Each strGroup in objUser.memberOf  
67.
		Set objGroup = GetObject("LDAP://" & strGroup)  
68.
		If InStr(objGroup.CN, AD_PACKAGE_GROUP) <> 0 Then  
69.
			ValidateADGroup = True  
70.
			Set objGroup = nothing  
71.
			Exit Function 
72.
		Else  
73.
			ValidateADGroup = False  
74.
			Set objGroup = nothing  
75.
		End If 
76.
	Next  
77.
End Function 
78.
 
79.
Function NetUsePrinters(AD_GRP_1,AD_GRP_2,PRINTER_PATH,PRINTER_DRV) 
80.
	if ValidateADGroup(AD_GRP_1) Then 
81.
		PrinterPath = PRINTER_PATH 
82.
		PrinterDriver = PRINTER_DRV		 
83.
		Network.AddWindowsPrinterConnection PrinterPath, PrinterDriver		 
84.
	ELSE 
85.
		' nichts		 
86.
	End If 
87.
	if ValidateADGroup(AD_GRP_2) Then	 
88.
		Network.SetDefaultPrinter PrinterPath 
89.
	ELSE 
90.
		' nichts		 
91.
	End If 
92.
End Function 
93.
 
94.
Function RemoveNetPrinter 
95.
	wscript.echo "RemoveNetPrinter" 
96.
	Dim strComputer, objWMIService, colInstalledPrinters, objPrinter 
97.
	strComputer = "localhost" 
98.
	Set objWMIService = GetObject("winmgmts:" _ 
99.
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
100.
	Set colInstalledPrinters =  objWMIService.ExecQuery _ 
101.
    ("Select * from Win32_Printer") 
102.
	 
103.
	For Each objPrinter In colInstalledPrinters 
104.
		' Sucht drucker die mit "\\" anfangen 
105.
		If InStr(1, objPrinter.Name, "\\", 1) Then			 
106.
			Network.RemovePrinterConnection + objPrinter.Name 
107.
		End If		 
108.
	Next 
109.
End Function
Bitte warten ..
Mitglied: DerWoWusste
19.04.2011 um 13:08 Uhr
Und wie machst Du das bei schwachen Benutzern? Haben alle Adminrechte UND die UAC ist aus? Nur dann läuft Dein Skript (in Standardeinstellungen).
Bitte warten ..
Mitglied: micneu
26.04.2011 um 15:26 Uhr
getestet hatte ich es unter windows xp sp3 und die benutzer hatten nur benutzerechte.
mit windows vista und windows 7 hatte ich es nicht getestet.

die user waren entsprechend in den gruppern der drucker drinn.

habe kein zugriff mehr auf die domain in der ich das erstellt habe, kann es deshalb nicht mehr testen.
hast du eine gpo erstell in dem du das script beim anmelden ausführst?

gruß michael
Bitte warten ..
Mitglied: DerWoWusste
26.04.2011 um 15:32 Uhr
Es wird unter Win7 nicht laufen.
Ich nutze keine Skripte sondern die GPO-interne Druckerzuweisung, die DCs ab 2003 R2 verfügbar machen, sobald die Rolle Druckserver installiert ist.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
Windows Server 2012 R2 Benutzerkonto für Zugriff auf AD Benutzer (2)

Frage von JulianOhm zum Thema Windows Server ...

Windows Netzwerk
gelöst Windows Server 2012 R2 als Memberserver einem 2008 R2 AD hinzufügen (5)

Frage von diemilz zum Thema Windows Netzwerk ...

Windows Server
gelöst Freigegebene Drucker plötzlich offline (Windows Server 2008 AD) (3)

Frage von D1Ck3n zum Thema Windows Server ...

Windows Server
gelöst Zusätzlichen Windows Server 2012R2 Domänencontroller hinzufügen (5)

Frage von Mar-west zum Thema Windows Server ...

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

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

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 (14)

Frage von liquidbase zum Thema Windows Update ...