Das Tool ADMINOMAT (in der aktuellen Version 2.06) kann ab sofort mehrere Clients zeitversetzt per Aufgabenplanung starten bzw. herunterfahren.
Damit können u. a. in der Nacht Updates bzw. Software (per Gruppenrichtlinie) installiert werden.
Das Tool ADMINOMAT (in der aktuellen Version 2.06) kann ab sofort mehrere Clients zeitversetzt per Aufgabenplanung starten bzw. herunterfahren.
Damit können u. a. in der Nacht Updates bzw. Software (per Gruppenrichtlinie) installiert werden.
Problem:
Ein Task, der auf älteren Windows-Versionen per Gruppenrichtlinie angelegt wurde, wird auf Windows 10 Clients nicht mehr angelegt.
Fehlermeldung in der Ereignisanzeige des Clients [ANWENDUNG]:
Das Computer “**TASKNAME**”-Einstellu
Ursache:
Windows 10 geht mit Benutzerrechten anders um als ältere Betriebssysteme – wer Näheres wissen möchte, sollte via Google eine Recherche starten
Lösung:
1.) Gruppenrichtlinie für den geplanten Task wie gewohnt erstellen, Feld “%LogonDomain%\%LogonUser%” unverändert lassen (auch nicht anklicken!), geplanten Task nach Abschluss aller Konfigurationen auf den anderen Registern wie hier dargestellt speichern!
2.) Die Gruppenrichtlinie im SYSVOL suchen:
Beispiel:
\\dc2\SYSVOL\contoso.com\Policies\{87EF1792-C05E-458B-A0FF-97D92210FBE3}\Machine\Preferences\ScheduledTasks
3.) die Datei “ScheduledTasks.xml” mit einem Editor öffnen und folgende Einträge ändern:
runAs = “%LogonDomain%\%LogonUser%” –> runAs=”S-1-5-18″
<UserId>”%LogonDomain%\%LogonUser%”</UserId> –> <UserId>S-1-5-18</UserId>
Erklärung:
Jeder Standardbenutzer hat eine eigene SID, jene von “NT Autorität\System” ist eben S-1-5-18.
Dieses Systemkonto verfügt über höchste Rechte, die evtl für das Ausführen des Tasks benötigt werden und hat natürlich kein Passwort.
Eine Auflistung aller anderen “Well known SID” gibts zb hier
ERGEBNIS:
In der Gruppenrichtlinienverwaltung erscheint nun in der Anzeige bei Benutzer-ID leider “S-1-5-18″, am Windows 10 – Client wird der Task jedoch mit dem Systemaccount eingetragen.
Das für den DigiCheck nötige Programm setzt das .net Framework 4.7.1 voraus, das sich mittels unserer Software ADMINOMAT sehr einfach ausrollen lässt.
Zur Vorgangsweise:
0.) Den Offline-Installer herunterladen und auf einem Netzwerkshare hinterlegen
1.) ADMINOMAT hier downloaden
2.) PSEXEC downloaden und in den selben Ordner entpacken, in dem ADMINOMAT gespeichert wurde
3.) ADMINOMAT starten (auf einem beliebigen Rechner im Active Directory mit Domänen-Administratoren-Rechten) 4.) (sehr) kurz warten, bis das Active Directory bzw. der DHCP-Server eingelesen wurde
5.) OU in der Struktur links auswählen -> PSEXEC –>
/V /C “\\server\Share\NDP471-KB4033342-x86-x64-AllOS-ENU.exe” /q /norestart
[Anm.: der Flag '/norestart' sollte natürlich weggelassen werden, wenn auf den Clients niemand arbeitet.]
5.) einen Kaffee trinken gehen –> fertig!
Anschließend die lt. Anleitung generierte ITS.Performer(xxx).exe auf ein Sharekopieren und per GPO auf die Clients verteilen.
Mit ADMINOMAT ein GPUPDATE initiieren und fertig wären wir auch schon.
Ich habe ein kleines Tool zusammengebastelt, mit dem man von jedem Klassenraum-PC sehr einfach einzelne Regeln am TMG / ISA – Server aktivieren bzw. deaktivieren kann.
Dadurch lässt sich vom LehrerPC aus der Internetzugang vorübergehend einschränken, etwa bei Tests oder mangelnder Aufmerksamkeit.
Das Tool läuft auf allen Clients ab Windows 7 bis 10 – Download hier
Vorgangsweise bzw. vorbereitende Arbeiten:
1.) die Gruppe der Lehrer muss am TMG mit den Rechten versorgt werden, Regeln ein- bzw. auszuschalten:
2.) 3 Regeln einrichten, die wie folgt heißen müssen:
INF1
INF2
INF3
3.) Für die Statusanzeige rechts:
einen Ordner am TMG-Server erstellen, auf den alle Lehrer Schreib- und Leserechte haben
C:\inetpub\wwwroot
(Hinweis: der IIS muss NICHT installiert sein!)
[in diesen Ordner wird eine Status.html geschrieben, aus der sich ablesen lässt, welche Regel dzt aktiv bzw. inaktiv ist.]
4.) am TMG einen weiteren Ordner erstellen:
\\tmg\c$\VBTests
Dort die 2 .vbs-Dateien aus dem Download hinterlegen
(Danke an Jason Fossen für die Steilvorlage)
5.) am Client (=LehrerPC) das Tool in einen beliebigen Ordner speichern
6.) in diesen Ordner PSEXEC zusätzlich speichern
7.) You are done
HINWEIS:
Das Tool ist so, wie es ist, ich bastle es nicht unentgeltlich um oder erweitere es!
Falls jemand eine kostenpflichtige Anpassung an seine Landschaft wünscht, mache ich das aber gerne
Es kann vorkommen, dass (zB durch SPAM) Mailboxen auf einem Exchange-Server so übervoll werden, dass ein manuelles löschen nicht mehr durchführbar ist.
In diesem Fall funktioniert folgende Vorgangsweise auf einem Exchange-Server 2007:
Hinweis:
Es werden die betroffenen Mails sofort gelöscht und nicht in einen Ordner oder in eine andere Mailbox verschoben!
Bei steigender Budgetknappheit ist es nahe liegend, dass nebst der Kosten für Hardware und externes Consulting auch jene für Lizenzen in den Fokus rücken.
Selbstverständlich ist hier die Verwendung von OpenSource-Betriebssystemen eine veritable Alternative.
Meine jahrzehntelange Erfahrung im Bereich der Server-Administration, aber auch im direkten Kontakt mit Endbenutzern zeigen mir aber, dass die Kostenersparnis nur dann eintritt, wenn eine weitreichende Akzeptanz seitens der User vorhanden ist.
Dies inkludiert die Bereitschaft zur Aneignung neuer Kompetenzen in Eigenregie. Sobald diese Bereitschaft fehlt, kann der Schuss schnell nach hinten losgehen:
Die Schulungskosten steigen, die Motivation und Arbeitsleistung nimmt ab.
Oft scheitert die Idee des Umstiegs auf Linux-Betriebssysteme aber auch einfach an Spezialanwendungen, die Windows als Betriebssystem fordern.
Eine Lösung für die Problematik kann hier sicherlich in der Anschaffung von gebrauchten Lizenzen liegen.
Die Kosten der Anschaffung sinken – bei gleichzeitiger Akzeptanz der User, da sie mit der gewohnten Umgebung weiter arbeiten können.
Hinsichtlich der Legalität dieser Lösung gibt es bei Einhaltung einiger Tipps keinerlei Bedenken – es sind genügend Erkenntnisse der Höchstgerichte vorhanden!
Beachtet werden sollte lediglich, dass die Lizenzen von etablierten und seriösen Unternehmen erworben werden.
Empfohlen kann hier sicherlich die Firma USC mit Sitz in Deutschland werden, die sich seit Jahren als kompetenter Partner in Lizenzfragen einen guten Namen in der Fachpresse erworben hat.
Nebst dem übersichtlichen und umfangreichen Webshop für gebrauchte Software-Lizenzen finden sich auf der Website auch noch ein paar Tipps, wie man seriöse von unseriösen Angeboten unterscheiden kann.
Ein Blick auf deren Angebot sowie die Preisliste lohnt sich in jedem Fall!
Die Konfiguration des KMS für die Lizenzierung von Office 2016 unterscheidet sich durch nichts von der bereits erfolgten Anleitung für Office 2013.
Bevor sich die Aktivierung starten lässt, ist (zumindest für Server2008R2) ein Update zu installieren, das einen Reboot erfordert (
Die Abfrage, ob der Key erfolgreich hinterlegt wurde bzw. wie viele Clients aktuell über den Schlüsselverwaltungsdienst aktivert werden, erfolgt mit:
C:\Windows\System32\slmgr.vbs -dlv 98EBFE73-2084-4C97-932C-C0CD1643BEA7
Der Massenimport via .csv von Usern in MAHARA ist (vor allem, wenn man auf das deutsche Language-Pack umgestellt hat) voll der Pein und Trauer…
Anbei ein Script, dass ausgewählte Schüler anhand ihrer Mitgliedschaft zu einer OU in einer CommandShell ausgibt, die man dann nur noch kopieren muss in eine .csv und importieren…
Speicher als “maharaExport.vbs” und in einer Commandshell mit
cscript maharaExport.vbs
ausführen lassen…
'On Error Resume Next Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE '### hier die gewünschte OU auswählen ###### course = "3A,3B,3C,3D,3E" courseArr = split(course,",") 'Wscript.Echo "Benutzername;Passwort;E-Mail;Vorname;Nachname;Studenten-ID" Wscript.Echo "username,password,email,firstname,lastname,studentid" UserCounter = 20170001 for i = 0 to UBOUND(courseArr) objCommand.CommandText = "SELECT name, distinguishedName, sAmAccountname, mail, givenName, SN FROM 'LDAP://OU=" & courseArr(i) & ",OU=Schueler,OU=Benutzer,DC=hak-neusiedl,DC=local' WHERE objectCategory='user'" Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF Wscript.Echo chr(34) & objRecordSet.Fields("sAmAccountname").Value & chr(34) & "," & chr(34) & "ASDFASDF" & chr(34) & "," & chr(34) & objRecordSet.Fields("mail").Value & chr(34) & "," & chr(34) & objRecordSet.Fields("givenName").Value & chr(34) & "," & chr(34) & objRecordSet.Fields("SN").Value & chr(34) & "," & chr(34) & UserCounter & chr(34) '& "," & courseArr(i) objRecordSet.MoveNext UserCounter = UserCounter+1 Loop next
Damit ich selbst nicht vergesse (und nur dafür):
Es war einmal ein Exchange – der dann abgedreht wurde – und die User wurden dann auf Gmail umgesiedelt.
Das lief prima – bis die User auf den Hosted Exchange von OFFICE365 migriert werden sollten… (und es ja onPrime keinen Exchange mehr gab)…
Das folgende Script hat diese Einträge für alle User einer bestimmten OU entfernt – seither klappts mit der Migration wie am Schnürchen…
Als ExchangeAttributeDelete.vbs speichern und direkt am Domänencontroller starten (nach Anpassung an die eigene Domain!)
On Error Resume Next Const ADS_SCOPE_SUBTREE = 2 Const ADS_PROPERTY_APPEND = 3 Const ADS_PROPERTY_DELETE = 4 Const ADS_PROPERTY_CLEAR = 1 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.CommandText = "SELECT legacyExchangeDN, name, distinguishedName, sAmAccountname, proxyaddresses FROM 'LDAP://OU=lehrer,OU=Benutzer,DC=gymnasium,DC=at' WHERE objectCategory='user'" Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF 'Wscript.Echo objRecordSet.Fields("distinguishedName").Value if len(objRecordSet.Fields("legacyExchangeDN").Value)>= 1 THEN Wscript.Echo objRecordSet.Fields("sAmAccountname").Value & " -- " & objRecordSet.Fields("Name").Value '# falls man das Script nur für einen User testen möchte: (ACHTUNG: zweites END IF unten einkommentieren) 'if objRecordSet.Fields("name").Value = "WUT" then 'Wscript.Echo objRecordSet.Fields("name").Value Set objUser = GetObject("LDAP://" & objRecordSet.Fields("distinguishedName").Value) Wscript.Echo objRecordSet.Fields("legacyExchangeDN").Value wscript.echo len(objRecordSet.Fields("legacyExchangeDN").Value) objUser.PutEx ADS_PROPERTY_CLEAR, "msExchHomeServerName", 0 objUser.SetInfo objUser.PutEx ADS_PROPERTY_CLEAR, "legacyExchangeDN", 0 objUser.SetInfo objUser.PutEx ADS_PROPERTY_CLEAR, "homeMDB", 0 objUser.SetInfo objUser.PutEx ADS_PROPERTY_CLEAR, "homeMTA", 0 objUser.SetInfo objUser.PutEx ADS_PROPERTY_CLEAR, "mDBUseDefaults", 0 objUser.SetInfo objUser.PutEx ADS_PROPERTY_CLEAR, "msExchALObjectVersion", 0 objUser.SetInfo objUser.PutEx ADS_PROPERTY_CLEAR, "msExchMailboxGuid", 0 objUser.SetInfo objUser.PutEx ADS_PROPERTY_CLEAR, "msExchMailboxSecurityDescriptor", 0 objUser.SetInfo objUser.PutEx ADS_PROPERTY_CLEAR, "msExchPoliciesIncluded", 0 objUser.SetInfo objUser.PutEx ADS_PROPERTY_CLEAR, "msExchUserAccountControl", 0 objUser.SetInfo objUser.PutEx ADS_PROPERTY_CLEAR, "msNPAllowDialin", 0 objUser.SetInfo objUser.PutEx ADS_PROPERTY_CLEAR, "ShowInAddressBook", 0 objUser.SetInfo objUser.PutEx ADS_PROPERTY_CLEAR, "textEncodedORAddress", 0 objUser.SetInfo wscript.Echo "erfolgreiche geloescht!" & vbcrlf 'end if end if objRecordSet.MoveNext Loop