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

Script zur Verknüpfung von GPOs zu OUs (erweitern)

Frage Entwicklung VB for Applications

Mitglied: jschneider

jschneider (Level 1) - Jetzt verbinden

18.10.2007, aktualisiert 19.10.2007, 2975 Aufrufe, 1 Kommentar

eigentliche Funktion vorhanden, aber keine "Stapelverarbeitung"

Hallo,

ich habe hier ein nettes Script (von MS) welches ein vorhandenes GPO-Objekt zu einer OU verlinkt.

Soweit so gut.

Ich brauch es so,dass dieses Scripteine TXT-Datei schaut in der meinetwegen 20 OU's drin stehen die dann nach und nach vom Script abgearbeitet werden

wie dies Quell-OU Textdatei formatiert ist nicht vorgegeben - da bin ich alo frei

So hier sieht das Script aus, welches ich aber schon etwas erweitert habe:

01.
Dim OUType 
02.
Dim OUFile 
03.
Dim GPOStatus 
04.
 
05.
OUType = inputbox("Waehlen Sie die gewünschte OU zum verlinken aus" & vbnewline & vbnewline & "1 = Alle Benutzer OUs" & vbnewline & "2 = Alle Desktop OUs" & vbnewline & "3 = Alle Desktop -Windows2000 OUs" & vbnewline & "4 = Alle Desktop -WindowsXP OUs" & vbnewline & "5 = Alle Desktop -WindowsVista OUs" & vbnewline & "6 = Alle Notebook OUs" & vbnewline & "7 = Alle Notebook -Windows2000 OUs" & vbnewline & "8 = Alle Notebook -WindowsXP OUs" & vbnewline & "9 = Alle Notebook -WindowsVista OUs" ,"GPO zu OUs Verlinken") 
06.
 
07.
if OUType ="" then 
08.
msgbox "Ohne Eingabe wird das Script beendet",16,"Hinweis" 
09.
WScript.Quit 
10.
end if 
11.
 
12.
if isnumeric(OUType) = false then 
13.
msgbox "Bitte nur einzelne Zahlen eingeben",16,"Hinweis" 
14.
WScript.Quit 
15.
else 
16.
end if 
17.
 
18.
if OUType > 9 or OUtype = 0 then 
19.
msgbox "Bitte nur zwischen 1 und 9 wählen",16,"Hinweis" 
20.
WScript.Quit 
21.
else 
22.
end if 
23.
 
24.
if OUType = 1 then  
25.
OUFile="C:\01-Alle-BenutzerOUs.txt" 
26.
end if 
27.
 
28.
 
29.
if OUType = 2 then  
30.
	OUFile="C:\02-Alle-DesktopOUs.txt" 
31.
end if 
32.
 
33.
if OUType = 3 then  
34.
	OUFile="C:\03-Alle-DesktopW2kOUs.txt" 
35.
end if 
36.
 
37.
if OUType = 4 then  
38.
	OUFile="C:\04-Alle-DesktopXPOUs.txt" 
39.
end if 
40.
 
41.
if OUType = 5 then  
42.
OUFile="C:\05-Alle-DesktopVistaOUs.txt" 
43.
end if 
44.
 
45.
if OUType = 6 then  
46.
	OUFile="C:\06-Alle-NotebookOUs.txt" 
47.
end if 
48.
 
49.
if OUType = 7 then  
50.
	OUFile="C:\07-Alle-NotebookW2kOUs.txt" 
51.
end if 
52.
 
53.
if OUType = 8 then  
54.
OUFile="C:\08-Alle-NotebookXPOUs.txt" 
55.
end if 
56.
 
57.
if OUType = 9 then  
58.
OUFile="C:\09-Alle-NotebookVistaOUs.txt" 
59.
end if 
60.
 
61.
 
62.
wscript.echo "OUs aus der Datei " & OUfile & " werden benutzt." 
63.
 
64.
 
65.
GPOStatus = inputbox("Bitte geben Sie den Status der verlinkten GPO an" & vbnewline & vbnewline & "1 = deaktiviert" & vbnewline & "2 = aktiviert","Eingabe der Richtlinie") 
66.
 
67.
if GPOStatus ="" then 
68.
	msgbox "Ohne Eingabe wird das Script beendet",16,"Hinweis" 
69.
	WScript.Quit 
70.
end if 
71.
 
72.
if isnumeric(GPOStatus) = false then 
73.
	msgbox "Bitte nur einzelne Zahlen eingeben",16,"Hinweis" 
74.
	WScript.Quit 
75.
else 
76.
end if 
77.
 
78.
if GPOStatus > 2 or GPOStatus = 0 then 
79.
	msgbox "Bitte nur 1 oder 2 wählen",16,"Hinweis" 
80.
	WScript.Quit 
81.
else 
82.
end if 
83.
 
84.
if GPOStatus = 1 then  
85.
	strGPOLinkOptions = 1 
86.
end if 
87.
 
88.
 
89.
if GPOStatus = 2 then  
90.
	strGPOLinkOptions = 2 
91.
end if 
92.
 
93.
 
94.
 
95.
GPOName = inputbox("Bitte geben Sie den Namen der zu verlinkenden Richtlinie ein" ,"Eingabe der Richtlinie") 
96.
 
97.
 
98.
 
99.
 
100.
 
101.
On Error Resume Next 
102.
 
103.
Set objContainer = GetObject _ 
104.
    ("LDAP://ou=99-ClientMigTest,DC=ADS,DC=meinedomain,DC=NET")  
105.
  
106.
strExistingGPLink = objContainer.Get("gPLink") 
107.
  
108.
strGPODisplayName = GPOName 
109.
 
110.
strNewGPLink = "[" & GetGPOADsPath & ";" & strGPOLinkOptions & "]" 
111.
  
112.
objContainer.Put "gPLink", strExistingGPLink & strNewGPLink 
113.
objContainer.Put "gPOptions", "0" 
114.
  
115.
objContainer.SetInfo 
116.
  
117.
Function GetGPOADsPath 
118.
    Set objConnection = CreateObject("ADODB.Connection")   
119.
    objConnection.Open "Provider=ADsDSOObject;"    
120.
  
121.
    Set objCommand = CreateObject("ADODB.Command") 
122.
    objCommand.ActiveConnection = objConnection 
123.
  
124.
    objCommand.CommandText = _ 
125.
      "<LDAP://cn=Policies,cn=System,DC=ADS,DC=meinedomain,DC=NET>;;" & _ 
126.
          "distinguishedName,displayName;onelevel" 
127.
    Set objRecordSet = objCommand.Execute 
128.
  
129.
    Do Until objRecordSet.EOF 
130.
        If objRecordSet.Fields("displayName") = strGPODisplayName Then 
131.
          GetGPOADsPath = "LDAP://" & objRecordSet.Fields("distinguishedName") 
132.
          objConnection.Close 
133.
          Exit Function 
134.
        End If 
135.
        objRecordSet.MoveNext 
136.
    Loop 
137.
    objConnection.Close 
138.
End Function 
139.
 
140.
 
müsste ich halt "irgendwie" so haben, dass dieser Wert aus der Textdatei ausgelesen und verarbeitet wird Bis die Datei keine weiteren Einträge mehr aufweisst. Die Übergabe des Dateinamens habe ich schon, nur wie auslesen und abarbeiten ?

Und da das für Euch Profis natürlich Zuuu einfach wäre ... hier noch was

Ich frage ja nach der EIngabe des GPO-namens der verlinkt werden soll - wer hier eine Idee hat zur Abfrage ob diese GPO überhaupt existiert (wegen falscheingaben)....

(editiert weil ich mit den abfragen schon etwas weiter gekommen bin)

Vielen Dank für Eure Mithilfe

Jan
Mitglied: bastla
19.10.2007 um 00:03 Uhr
Hallo jschneider!

Da ich das "nette Script (von MS)" einerseits nicht in Frage stellen und andererseits auch nicht testen mochte , habe ich nur einen Vorschlag für das "Drumherum":
01.
Do 
02.
	OUType = InputBox("Waehlen Sie die gewünschte OU zum Verlinken aus" & vbnewline & vbnewline & _ 
03.
		"1 = Alle Benutzer OUs" & vbnewline & _ 
04.
		"2 = Alle Desktop OUs" & vbnewline & _ 
05.
		"3 = Alle Desktop -Windows2000 OUs" & vbnewline & _ 
06.
		"4 = Alle Desktop -WindowsXP OUs" & vbnewline & _ 
07.
		"5 = Alle Desktop -WindowsVista OUs" & vbnewline & _ 
08.
		"6 = Alle Notebook OUs" & vbnewline & _ 
09.
		"7 = Alle Notebook -Windows2000 OUs" & vbnewline & _ 
10.
		"8 = Alle Notebook -WindowsXP OUs" & vbnewline & _ 
11.
		"9 = Alle Notebook -WindowsVista OUs" & vbnewline & vbnewline & _ 
12.
		"0 = Abbruch", _ 
13.
		"GPO zu OUs Verlinken") 
14.
 
15.
	blnOK = True 
16.
	If OUType = "" Then OUType = "0" 
17.
 
18.
	If Not IsNumeric(OUType) Then 
19.
		blnOK = False 
20.
		MsgBox "Nur eine Zahl zwischen 0 und 9 eingeben!", vbCritical, "Hinweis" 
21.
	Else 
22.
		OUType = Abs(CInt(OUType)) 
23.
		Select Case OUType 
24.
		Case 0: WScript.Quit 
25.
		Case 1: OUFile="C:\01-Alle-BenutzerOUs.txt" 
26.
		Case 2: OUFile="C:\02-Alle-DesktopOUs.txt" 
27.
		Case 3: OUFile="C:\03-Alle-DesktopW2kOUs.txt" 
28.
		Case 4: OUFile="C:\04-Alle-DesktopXPOUs.txt" 
29.
		Case 5: OUFile="C:\05-Alle-DesktopVistaOUs.txt" 
30.
		Case 6: OUFile="C:\06-Alle-NotebookOUs.txt" 
31.
		Case 7: OUFile="C:\07-Alle-NotebookW2kOUs.txt" 
32.
		Case 8: OUFile="C:\08-Alle-NotebookXPOUs.txt" 
33.
		Case 9: OUFile="C:\09-Alle-NotebookVistaOUs.txt" 
34.
		Case Else 
35.
			blnOK = False 
36.
			MsgBox "Nur eine Zahl zwischen 0 und 9 eingeben!", vbCritical, "Hinweis" 
37.
		End Select 
38.
	End If 
39.
Loop Until blnOK 
40.
 
41.
Set fso = CreateObject("Scripting.FileSystemObject") 
42.
If Not fso.FileExists(OUFile) Then 
43.
	MsgBox "Datei " & OUFile & " wurde nicht gefunden - " & vbCrLF & _ 
44.
		"bitte benachrichtigen Sie ...", _ 
45.
		vbCritical, "Hinweis" 
46.
	WScript.Quit 
47.
End If 
48.
 
49.
WScript.Echo "OUs aus der Datei " & OUfile & " werden benutzt." 
50.
 
51.
Do 
52.
	GPOStatus = InputBox("Bitte geben Sie den Status der verlinkten GPO an" & vbnewline & vbnewline & _ 
53.
		"1 = deaktiviert" & vbnewline & _ 
54.
		"2 = aktiviert" & vbnewline & vbnewline & _ 
55.
		"0 = Abbruch", _ 
56.
		"Eingabe der Richtlinie") 
57.
 
58.
	blnOK = True 
59.
	If GPOStatus = "" Then GPOStatus = "0" 
60.
 
61.
	If Not IsNumeric(GPOStatus) Then 
62.
		blnOK = False 
63.
		MsgBox "Nur eine Zahl zwischen 0 und 2 eingeben!", vbCritical, "Hinweis" 
64.
	Else 
65.
		GPOStatus = Abs(CInt(GPOStatus)) 
66.
		Select Case GPOStatus 
67.
		Case 0: WScript.Quit 
68.
		Case 1, 2: strGPOLinkOptions = CStr(GPOStatus) 
69.
		Case Else 
70.
			blnOK = False 
71.
			MsgBox "Nur eine Zahl zwischen 0 und 2 eingeben!", vbCritical, "Hinweis"		 
72.
		End Select 
73.
	End If 
74.
Loop Until blnOK 
75.
 
76.
Do 
77.
	GPOName = InputBox("Bitte geben Sie den Namen der zu verlinkenden Richtlinie ein" & vbCrLF & vbCrLF & _ 
78.
		"oder wählen Sie 'Abbrechen'!", _ 
79.
		"Eingabe der Richtlinie") 
80.
 
81.
	If GPOName = "" Then WScript.Quit 
82.
	 
83.
	blnOK = True 
84.
	strGPODisplayName = GPOName 
85.
	strGPOADsPath = GetGPOADsPath 
86.
	If strGPOADsPath = "" Then 
87.
		blnOK = False 
88.
		MsgBox GPOName & " wurde nicht gefunden!", vbCritical, "Hinweis" 
89.
	End If 
90.
Loop Until blnOK = True 
91.
 
92.
strNewGPLink = "[" & strGPOADsPath & ";" & strGPOLinkOptions & "]" 
93.
 
94.
On Error Resume Next 
95.
aOU = Split(fso.OpenTextFile(OUFile, 1).ReadAll, vbCrLF) 
96.
For Each strOU In aOU 
97.
	Set objContainer = GetObject _ 
98.
		("LDAP://ou=" & strOU & ",DC=ADS,DC=meinedomain,DC=NET")  
99.
	strExistingGPLink = objContainer.Get("gPLink") 
100.
 
101.
	objContainer.Put "gPLink", strExistingGPLink & strNewGPLink 
102.
	objContainer.Put "gPOptions", "0" 
103.
	objContainer.SetInfo 
104.
Next 
105.
 
106.
MsgBox "Verlinkungen vorgenommen.", vbInformation 
107.
 
108.
'########## Ende Hauptprogramm ########## 
109.
 
110.
Function GetGPOADsPath 
111.
    Set objConnection = CreateObject("ADODB.Connection")   
112.
    objConnection.Open "Provider=ADsDSOObject;"    
113.
  
114.
    Set objCommand = CreateObject("ADODB.Command") 
115.
    objCommand.ActiveConnection = objConnection 
116.
  
117.
    objCommand.CommandText = _ 
118.
      "<LDAP://cn=Policies,cn=System,DC=ADS,DC=meinedomain,DC=NET>;;" & _ 
119.
          "distinguishedName,displayName;onelevel" 
120.
    Set objRecordSet = objCommand.Execute 
121.
  
122.
    Do Until objRecordSet.EOF 
123.
        If objRecordSet.Fields("displayName") = strGPODisplayName Then 
124.
          GetGPOADsPath = "LDAP://" & objRecordSet.Fields("distinguishedName") 
125.
          objConnection.Close 
126.
          Exit Function 
127.
        End If 
128.
        objRecordSet.MoveNext 
129.
    Loop 
130.
    objConnection.Close 
131.
End Function
... eine Idee (hat) zur Abfrage ob diese GPO überhaupt existiert (wegen falscheingaben)....
Meine Idee dazu war eigentlich nur:
01.
strGPOADsPath = GetGPOADsPath 
02.
If strGPOADsPath = "" Then ... 'nicht gefunden
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Batch & Shell
Script zum Auflösen einer Ordnerstruktur und zurück gesucht (12)

Frage von websolutions zum Thema Batch & Shell ...

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 ...