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

LOGINHOURS in vbs

Frage Entwicklung VB for Applications

Mitglied: schnagels

schnagels (Level 1) - Jetzt verbinden

24.10.2005, aktualisiert 04.11.2005, 4874 Aufrufe, 11 Kommentare

Hallo ich habe ein Problem.
Ich muss einien Win2000 Server als Domänencontroller erstellen. und ich möchte für einige bestimmte user ein vbscipt schreiben. das hab ich auch schon. Das script legt im grunde genommen nur die user an. doch die user dürfen sich nur zu einer bestimmten zeit einloggen. das geht ja ganz leicht im active directory einzustellen, aber wenn ich das für jeden user mache, den ich neu anlege (und das sind nicht wenige), dann wird das irgendwann lästig. Also will ich das mit in das script einbauen.
ich habe zwar schon einiges darüber gefunden, z.b., dass es loginhours heißt, aber ich finde nirgendwo ein beispiel, wie man die tage und stunden da eingibt.
das geht mit adsi, aber wie?
könnt ihr mir helfen? ich muss das bis allerspätestens übermorgen fertig haben und ich verzweifle langsam daran.
bitte HELFT mir.

mfg Schnagels
Mitglied: killeradminfromhell
24.10.2005 um 16:39 Uhr
Hallo,

also die Loginhours kannst du meines wissens nicht in einem Script festlegen. Du kannst sie nur für jede OU einzeln definieren und das ganze so regeln.

Best Regarts
Bitte warten ..
Mitglied: schnagels
24.10.2005 um 18:57 Uhr
doch das geht auch für jeden einzelnen user in vbscript.
sieh mal hier: http://www.dx21.com/HOME/ARTICLES/P2P/ARTICLE.ASP?CID=23

ich kapier dat nur nicht so richtig, weil ich voll der anfänger bin.
Bitte warten ..
Mitglied: Biber
24.10.2005 um 21:14 Uhr
Moin schnagels,
nimm bitte erstmal dieses alberne "Hiiiillfe!!! ---" aus dem Titel raus, dann können wir vielleicht vernünftiger über das bisschen Coden reden.
Danke im Voraus und bis später
Biber
Bitte warten ..
Mitglied: Biber
26.10.2005 um 14:48 Uhr
Moin, schnagels,

erstmal Danke für das Editieren.

Ich habe mir diese LoginHours-Mimik mal angeschaut - na, ich weiß ja nicht, ob das das Richtige zum Spaß-am-Scripten-Finden ist.. bzw. ob Aufwand und Nutzen in einem vertretbaren Verhältnis stehen.

Aber sei's drum... Wie hast Du Dir denn grundsätzlich Dein Neues-User-Anlegen-Scriptchen gedacht?
Greifst Du die "neuen" User aus einer Excel-Tabelle/einer DB-Tabelle ab? Oder editierst Du für jeden Benutzer Dein Standard-Script und speicherst das unter UsernameXYZ.vbs ab?
Und das Wichtigste - wo kommen denn jetzt diese LOGINHOURS her? Sind die für alle User gleich? Stehen die im Klartext in einem Tabellenfeld? Oder als kleine Kreuzchen ähnlich der GUI-Darstellung/der Byte-Feld-Darstellung des LOGINHOURS-Arrays?

Gib mal bitte ein paar feste Punkte im Raum, ehe wir die M$-Welt aus ihren Angeln heben..

Grüße
Biber
Bitte warten ..
Mitglied: schnagels
26.10.2005 um 16:13 Uhr
also die user haben alle fast den selben namen. das soll ein projekt bei mir in der schule sein, das wir heute hätten abgeben müssen, doch mit den scripts haben wir länger zeit.
also es sollen 20 user für einen kurs erstellt werden. am beginn des scripts gibt man ein welcher kurs und welches jahr. wenn es der kurs 01 im jahr 2005 ist, heißt der kurs also "K01-05". Wie gesagt sollen 20 user angelegt werden. das mache ich mit einer for-schleife. Die user heißen dann "K01-05-T01", "k01-05-T02" usw. halt bis T20. da lese ich also nichts aus einer tabelle oder so. Die LoginHours sind komplett gleich. Ich weiß jetzt nicht genau die zeiten aber ich glaube werktags von 8 uhr bis 22 uhr und samstags von 8 bis 14 und sonntags nicht. die will ich jetzt einfach nur in das script eingeben, also direkt im Quelltext.

Wenn du noch mehr fragen hast kannste die ruhig stellen.

Achja die zeiten können ruhig abweichen wenn das nicht genau geht.
Bitte warten ..
Mitglied: Biber
26.10.2005 um 22:01 Uhr
Hm, schnagels,

tasten wir uns mal langsam ran.
Die erlaubten Zeiten sind ja in diesem 21-Byte-Array LOGINHOURS verdrahtet.
Wenn alles rund um die Uhr erlaubt wäre, sähe das so aus:
01.
----> alle Bytes sind 0b11111111 = 0xFF = dezimal(255)  
02.
 
03.
<b>11111111</b> sa23 sa22 sa21 sa20 sa19 sa18 sa17 sa16 --- Byte 01 Sa. 24h-16h = Char(255) 
04.
<b>11111111</b> so07 so06 so05 so04 so03 so02 sa01 so00 --- Byte 02 So. 08h-00h 
05.
<b>11111111</b> so15 so14 so13 so12 so11 so10 sa09 so08 --- Byte 03 So. 16h-08h 
06.
<b>11111111</b> so23 so22 so21 so20 so19 so18 so17 so16 --- Byte 04 So. 24h-16h 
07.
<b>11111111</b> mo07 mo06 mo05 mo04 mo03 mo02 mo01 mo00 --- Byte 05 Mo. 08h-00h 
08.
<b>11111111</b> mo15 mo14 mo13 mo12 mo11 mo10 mo09 mo08 --- Byte 06 Mo. 16h-08h 
09.
<b>11111111</b> mo23 mo22 mo21 mo20 mo19 mo18 mo17 mo16 --- Byte 07 Mo. 24h-16h 
10.
<b>11111111</b> di07 di06 di05 di04 di03 di02 di01 di00 --- Byte 08 Di. 08h-00h 
11.
<b>11111111</b> di15 di14 di13 di12 di11 di10 di09 di08 --- Byte 09 Di. 16h-08h 
12.
<b>11111111</b> di23 di22 di21 di20 di19 di18 di17 di16 --- Byte 10 Di. 24h-16h 
13.
<b>11111111</b> mi07 mi06 mi05 mi04 mi03 mi02 mi01 mi00 --- Byte 11 Mi. 08h-00h 
14.
<b>11111111</b> mi15 mi14 mi13 mi12 mi11 mi10 mi09 mi08 --- Byte 12 Mi. 16h-08h 
15.
<b>11111111</b> mi23 mi22 mi21 mi20 mi19 mi18 mi17 mi16 --- Byte 13 Mi. 24h-16h 
16.
<b>11111111</b> do07 do06 do05 do04 do03 do02 do01 do00 --- Byte 14 Do. 08h-00h 
17.
<b>11111111</b> do15 do14 do13 do12 do11 do10 do09 do08 --- Byte 15 Do. 16h-08h 
18.
<b>11111111</b> do23 do22 do21 do20 do19 do18 do17 do16 --- Byte 16 Do. 24h-16h 
19.
<b>11111111</b> fr07 fr06 fr05 fr04 fr03 fr02 fr01 fr00 --- Byte 17 Fr. 08h-00h 
20.
<b>11111111</b> fr15 fr14 fr13 fr12 fr11 fr10 fr09 fr08 --- Byte 18 Fr. 16h-08h 
21.
<b>11111111</b> fr23 fr22 fr21 fr20 fr19 fr18 fr17 fr16 --- Byte 19 Fr. 24h-16h 
22.
<b>11111111</b> sa07 sa06 sa05 sa04 sa03 sa02 sa01 sa00 --- Byte 20 Sa. 08h-00h 
23.
<b>11111111</b> sa15 sa14 sa13 sa12 sa11 sa10 sa09 sa08 --- Byte 21 Sa. 16h-08h 
24.
 
25.
>> werktags von 8 uhr bis 22 uhr  
26.
>> und samstags von 8 bis 14  
27.
>> und sonntags nicht 
28.
 
29.
wäre dann: 
30.
 
31.
<b>00000000</b> sa23 sa22 sa21 sa20 sa19 sa18 sa17 sa16 --- Byte 01 Sa. 24h-16h = Char(000) 
32.
<b>00000000</b> so07 so06 so05 so04 so03 so02 sa01 so00 --- Byte 02 So. 08h-00h = Char(000) 
33.
<b>00000000</b> so15 so14 so13 so12 so11 so10 sa09 so08 --- Byte 03 So. 16h-08h = Char(000) 
34.
<b>00000000</b> so23 so22 so21 so20 so19 so18 so17 so16 --- Byte 04 So. 24h-16h = Char(000) 
35.
<b>00000000</b> mo07 mo06 mo05 mo04 mo03 mo02 mo01 mo00 --- Byte 05 Mo. 08h-00h = Char(000) 
36.
<b>11111111</b> mo15 mo14 mo13 mo12 mo11 mo10 mo09 mo08 --- Byte 06 Mo. 16h-08h = Char(255) 
37.
<b>00111111</b> mo23 mo22 mo21 mo20 mo19 mo18 mo17 mo16 --- Byte 07 Mo. 24h-16h = Char(063) 
38.
<b>00000000</b> di07 di06 di05 di04 di03 di02 di01 di00 --- Byte 08 Di. 08h-00h = Char(000) 
39.
<b>11111111</b> di15 di14 di13 di12 di11 di10 di09 di08 --- Byte 09 Di. 16h-08h = Char(255) 
40.
<b>00111111</b> di23 di22 di21 di20 di19 di18 di17 di16 --- Byte 10 Di. 24h-16h ..... 
41.
<b>00000000</b> mi07 mi06 mi05 mi04 mi03 mi02 mi01 mi00 --- Byte 11 Mi. 08h-00h 
42.
<b>11111111</b> mi15 mi14 mi13 mi12 mi11 mi10 mi09 mi08 --- Byte 12 Mi. 16h-08h 
43.
<b>00111111</b> mi23 mi22 mi21 mi20 mi19 mi18 mi17 mi16 --- Byte 13 Mi. 24h-16h 
44.
<b>00000000</b> do07 do06 do05 do04 do03 do02 do01 do00 --- Byte 14 Do. 08h-00h 
45.
<b>11111111</b> do15 do14 do13 do12 do11 do10 do09 do08 --- Byte 15 Do. 16h-08h 
46.
<b>00111111</b> do23 do22 do21 do20 do19 do18 do17 do16 --- Byte 16 Do. 24h-16h 
47.
<b>00000000</b> fr07 fr06 fr05 fr04 fr03 fr02 fr01 fr00 --- Byte 17 Fr. 08h-00h 
48.
<b>11111111</b> fr15 fr14 fr13 fr12 fr11 fr10 fr09 fr08 --- Byte 18 Fr. 16h-08h 
49.
<b>00111111</b> fr23 fr22 fr21 fr20 fr19 fr18 fr17 fr16 --- Byte 19 Fr. 24h-16h 
50.
<b>00000000</b> sa07 sa06 sa05 sa04 sa03 sa02 sa01 sa00 --- Byte 20 Sa. 08h-00h 
51.
<b>00111111</b> sa15 sa14 sa13 sa12 sa11 sa10 sa09 sa08 --- Byte 21 Sa. 16h-08h
Man möge mir verzeihen, dass ich hier jetzt im ersten Schritt nicht den Umrechnungs-Algorithmus nachgebildet habe, sondern erstmal versuchen wollte, die "Regelmäßigkeiten" in dieser epischen Breite aufzumalen. Außerdem habe ich immer Probleme mit For-Schleifen.

Denn somit kommt nach diesem kleinen Exkurs recht schnell raus, dass es nur ein paar (ganze drei) unterschiedliche Bytes in diesem Array gibt.
Nämlich "nur" Char(0),Char(63dez), auch bekannt als das "?", und Char(255dez).

Somit sollte Dein 21-Zeichen-Array LOGINHOURS also bestehen aus:

(Pseudocode
01.
NotAllowed = Chr(&h00)    // = dez(0) = 0b00000000 
02.
FullAllowed = Chr(&hff)   // = dez255 = 0b11111111 
03.
First6h = Chr(&h3f)       // = dez63  = 0b00111111 ="?" 
04.
 
05.
LoginHours= _ 
06.
NotAllowed + _       // Sa von 16h -2h  
07.
+ NotAllowed + NotAllowed + NotAllowed  +_ // Sonntag komplett 
08.
+ NotAllowed + FullAllowed + First6h +_  // Montag 0-8h + Montag 8-16h + Montag 16 -22h 
09.
+ NotAllowed + FullAllowed + First6h +_  // Dienstag 0-8h + Dienstag 8-16h + Dienstag 16 -22h... 
10.
..... Mi, Do, Fr wie Montag 
11.
+ NotAllowed + First6h             // Samstag 0-8h und Samstag 8-14h  
So, wenn Dein Proggi also sinngemäß so anfängt (wie in den Demo-Schnipseln):
01.
Const strUserID = 	"[UserID]" 
02.
Const strLDAPPath = 	"[LDAP_Path]" 
03.
 
04.
Dim objUser, objRDSE, arLoginHours 
05.
Dim Index, strByte 
06.
 
07.
Set objRDSE = GetObject("LDAP://rootDSE") 
08.
Set objUser = GetObject("LDAP://cn=" & strUserID & "," & strLDAPPath & "," & _ 
09.
	objRDSE.Get("defaultNamingContext")) 
10.
.... 
11.
 
12.
// und dann irgendwann nach dem ganzen anderen gePUTte ... 
13.
// ...diese 21 Byte bzw. Zeichen in das LOGINHOURS-Property packen 
14.
... 
15.
objUser.Put "loginHours", LoginHours 
16.
objUser.SetInfo 
17.
... 
18.
Set objUser = Nothing 
19.
Set objRDSE = Nothing

Mehr ist doch gar nicht dabei, oder?
Und was die Genauigkeit betrifft... gehen eh nur volle Stunden.

HTH
Frank, der Biber aus Bremen

P.S. Nichts davon ist getestet, alles nur vor mich hin getippselt.
Und das einzige, was ich ein bisschen kann, ist Batch mit "echo Hallo" und "Copy a:\*.* c:" und sowas. Also bitte kritisch lesen!!
Bitte warten ..
Mitglied: Biber
04.11.2005 um 03:41 Uhr
Menno, schnagels,

war ich so daneben mit meiner Aufdröselung?
Dann poste doch bitte wenigstens die richtige Lösung. Lass mich nicht dumm sterben.
..will doch auch mal ein großer Admin werden...

Biber
Bitte warten ..
Mitglied: gemini
04.11.2005 um 06:42 Uhr
Moin moin,

zum Festlegen der Loginhours habe jetzt nix gefunden, aber zum kopieren.
Wenn du also einen TemplateUser erstellst sollte das funktionieren.

Ist aus dem ScriptCenter und muss natürlich noch angepasst werden.
01.
On Error Resume Next 
02.
Set objUserTemplate = _ 
03.
GetObject("LDAP://cn=userTemplate,OU=Management,dc=NA,dc=fabrikam,dc=com") 
04.
arrLogonHours = objUserTemplate.Get("logonHours") 
05.
Set objUser = _ 
06.
GetObject("LDAP://cn=MyerKen,OU=Management,dc=NA,dc=fabrikam,dc=com") 
07.
objUser.Put "logonHours", arrLogonHours 
08.
objUser.SetInfo
Bitte warten ..
Mitglied: Biber
04.11.2005 um 10:05 Uhr
Moin gemini,
meinen wir beide das Gleiche mit "LoginHours" und "logonHours" (wovon ich fest ausgehe) und -viel wichtiger- merkt M$, dass wir dasselbe meinen??
Ist ja ähnlich leicht zu merken wie die LoginScripts/LogonScripts...

Ansonsten ist Deine Lösung über ein Template natürlich spürbar geschmeidiger.. kann gut sein, dass die Standardwerte bei der Aufgabenstellung sogar passen.

Grüße nach Bajuwarien
Biber
Bitte warten ..
Mitglied: gemini
04.11.2005 um 10:29 Uhr
Hi Biber,

meinen wir beide das Gleiche mit "LoginHours" und "logonHours"
Geh ich auch mal von aus

(wovon ich fest ausgehe) und -viel wichtiger- merkt M$, dass wir dasselbe meinen??
Davon bin ich nicht so überzeugt.
Das Script ist 1:1 aus dem Scriptcenter kopiert, lediglich Leerzeilen entfernt.
Mglw. hat dieser großartige Translator zugeschlagen der auch die MSKB-Artikel ins deuschte übersetzt

Ist ja ähnlich leicht zu merken wie die LoginScripts/LogonScripts...
Der Unterschied ist mir immer noch nicht klar, hier besteht Schulungsbedarf!

geschmeidiger.. kann gut sein, dass die Standardwerte
bei der Aufgabenstellung sogar passen.
Wenn seine Domäne fabrikam.com heißt?!?
Wenn nicht, setzte ich die geistige Flexibilität zur Anpassung der Werte voraus.

Schönes Wochenende
gemini
Bitte warten ..
Mitglied: Biber
04.11.2005 um 10:44 Uhr
@gemini
>Mglw. hat dieser großartige Translator zugeschlagen der auch die MSKB-Artikel ins deuschte übersetzt
Das ist mein Wunschtraum, seit es diesen Translator gibt:
Bill G. bestellt in einem deutschen Restaurant sein Mittagsmenü mit Hilfe seines Übersetzungsprogramms und ich mache ein Foto von seinem Gesicht, wenn er einen Fransenteppich in einer Ölwanne serviert bekommt...

Dir auch ein baldiges und schönes Wochenende
Biber
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de 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 ...

Windows 7
gelöst Batch-Skript oder VBS Skript zum Sichern von Office Vorlagen (2)

Frage von Ceejaay zum Thema Windows 7 ...

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