Top-Themen

Aktuelle Themen (A bis Z)

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)

Mitglied: jschneider

jschneider (Level 1) - Jetzt verbinden

18.10.2007, aktualisiert 19.10.2007, 3024 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 ..
Ähnliche Inhalte
Backup

Backup-Script erweitern mit automatischer bereinigung

gelöst Frage von DarkHerculesBackup6 Kommentare

Hallo, Ich sichere meine Hyper-V-Testumgebung momentan mit einem Powershell-Script. Dabei wird mir ein Ordner gesichert in dem ich meine ...

Batch & Shell

Powershell Script für VHD Sicherung erweitern

gelöst Frage von EmheonivekBatch & Shell7 Kommentare

Liebe User, ich habe vor folgendes Powershell Script zu erweitern, um mehrere Backupsätze einer virtuellem Maschine vorzuhalten. Stop-VM –Name ...

Batch & Shell

Batch Script soll aus einer Datei ein Zeileninhalt in ein anderen Batch kopieren und erweitern

Frage von Fazer1000Batch & Shell4 Kommentare

Hallo ich habe keine erfahrung mit Batch Script. Ich möchte gerne mit Hilfe eines Scriptes ein Befehl erzeugen der ...

Batch & Shell

Script zum Kopieren einer Datei in mehren unterschiedlichen Ordner über eine Verknüpfung

gelöst Frage von KnuefiBatch & Shell12 Kommentare

Hallo zusammen, ich benötige mal wieder euren fachmännischen Rat. Ich benötige ein Script das mir eine Datei (unterschiedliche Namen, ...

Neue Wissensbeiträge
Backup

2016 - Restore mit WBAdmin - iSCSI Device als Sicherungsziel

Erfahrungsbericht von Henere vor 1 TagBackup1 Kommentar

Servus zusammen, was mich eben einige graue Haare gekostet hat Server 2016. Ich habe meinem Server eine weitere M2 ...

Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 3 TagenHumor (lol)7 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 3 TagenExchange Server9 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 4 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Heiß diskutierte Inhalte
E-Mail
Deutsche e-Mail Adresse auf iPhone in Katar. Nur Probleme
Frage von vanTastE-Mail15 Kommentare

Moin, ich habe hier in Deutschland auf einem Exchange 2013 eine e-Mail Adresse (name@domain.de) für einen Kollegen in Katar ...

Windows Server
Server 2016 Autotiering Storage Space
Frage von HenereWindows Server11 Kommentare

Servus, ich habe jetzt ein StorageSpace auf einem Server 2016 in Betrieb zum Testen. 1x M2 mit 512GB (970pro) ...

RedHat, CentOS, Fedora
OTRS 5 kann keine Mails mehr abrufen
gelöst Frage von opc123RedHat, CentOS, Fedora11 Kommentare

Hallo, OTRS kann keine Mails mehr abrufen. Verschicken ja. Dadurch kommen keine Tickets mehr rein. Gibt es Anlaufpunkte was ...

Hyper-V
Hyper-V keinen Zugriff auf USB Gerät über USB Server
Frage von Barns83Hyper-V10 Kommentare

Normal bin ich ein stiller Leser und wühle mich im normal Fall durch Foren oder schau durch meine Bücher. ...