geplanter Task per Gruppenrichtlinie läuft auf Windows 10 nicht

sehr verwirrender ArtikelNaja, ganz OKbrauchbar für Checker...guter Artikelsehr guter Artikel - Danke

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**”-Einstellungselement im Gruppenrichtlinienobjekt “GRUPPENRICHTLINIENNAME {39E64460-2198-40DC-9EE1-6EBDAC1D7E40}” wurde aufgrund eines Fehlers nicht angewendet. Fehlercode: “0×80090005 Ungültige Daten” Dieser Fehler wurde unterdrückt

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!

GPO_Anlegen_geplanterTask

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.

GPO_Anlegen_geplanterTask_Client

Posted in Active Directory, Gruppenrichtlinie, Windows 10 | Leave a comment

Rollout .net Framework 4.7.1 für DigiCheck mit ADMINOMAT

sehr verwirrender ArtikelNaja, ganz OKbrauchbar für Checker...guter Artikelsehr guter Artikel - Danke

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.

Posted in Active Directory, Adminomat, Gruppenrichtlinie, Rollout, Software | Leave a comment

Tool, um mittels TMG / ISA remote den Internetzugang zu beschränken

sehr verwirrender ArtikelNaja, ganz OKbrauchbar für Checker...guter Artikelsehr guter Artikel - Danke

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.

internetsperrer

 

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:
Rechte

 

 

 

 

 

 

 

 

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

 

 

Posted in ISA - Server, Notebook-Klassen, TMG | Leave a comment

Per Powershell Mails aus Exchange-Boxen entfernen

sehr verwirrender ArtikelNaja, ganz OKbrauchbar für Checker...guter Artikelsehr guter Artikel - Danke

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:

  1. Rechte auf den Mailboxen dem Administrator erteilen:Get-Mailbox -ResultSize unlimited | Add-MailboxPermission -User ADMINISTRATOR -AccessRights FullAccess -InheritanceType all
  2. Mails mit dem unerwünschten Inhalt löschen:Get-Mailbox BetroffeneMailbox | Export-Mailbox -ContentKeywords “Diagnosetext” -DeleteContent

Hinweis:
Es werden die betroffenen Mails sofort gelöscht und nicht in einen Ordner oder in eine andere Mailbox verschoben!

 

Posted in Active Directory, Exchange, Powershell | Leave a comment

Gebrauchte Lizenzen – eine echte Alternative zu Open Source

sehr verwirrender ArtikelNaja, ganz OKbrauchbar für Checker...guter Artikelsehr guter Artikel - Danke [3 Bewertung, Durchschnitt: 3,67]

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!

Posted in Office 365, Software, Windows 7, Windows 8, Windows Server 2008 | Leave a comment

KMS für Office 2016

sehr verwirrender ArtikelNaja, ganz OKbrauchbar für Checker...guter Artikelsehr guter Artikel - Danke

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

Posted in Active Directory, Key Management Service (KMS) | Leave a comment

User per VBScript aus dem AD in eine .csv exportieren für MAHARA-Import

sehr verwirrender ArtikelNaja, ganz OKbrauchbar für Checker...guter Artikelsehr guter Artikel - Danke

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
Posted in Active Directory, Scripts, VBScript | Leave a comment

Kurzzusammenfassung: OFFICE 365 inkl Mail für NEUE SchülerInnen

sehr verwirrender ArtikelNaja, ganz OKbrauchbar für Checker...guter Artikelsehr guter Artikel - Danke

Damit ich selbst nicht vergesse (und nur dafür):

  1. User im AD anlegen
  2. Kontrollieren, ob am Reiter “Konto” der Benutzeranmeldename auch auf die richtige Domain lautet
  3. Mailadresse per Script hinterlegen direkt im AD
  4. User mit Azure Connect syncen
  5. Usern per Script die Lizenz zuweisen sowie das Land
Posted in Azure, Exchange, Office 365 | Leave a comment

per VBScript MailAttribute aus den UserAccounts entfernen

sehr verwirrender ArtikelNaja, ganz OKbrauchbar für Checker...guter Artikelsehr guter Artikel - Danke

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
Posted in Active Directory, Azure, Exchange, Office 365, Scripts, VBScript | Leave a comment

per VBScript Einträge im AD aus dem Attribut ProxyAddresses entfernen

sehr verwirrender ArtikelNaja, ganz OKbrauchbar für Checker...guter Artikelsehr guter Artikel - Danke

Es kann vorkommen, dass in historisch gewachsenen Domänen einzelne (oder alle) User Einträge im AD-Attribut “ProxyAddresses” haben, die auf einen alten Exchange / Gmail / etc hinweisen.

Dies ist äußerst hinderlich, wenn man diese Benutzer per Azure AD Connect ins OFFICE 365 übertragen möchte, da dieser Eintrag dazu führt, dass Benutzer kein Outlook-Konto in OFFICE365 bekommen.

Die Fehlermeldung lautet dann:

Mailfehler

 
 
 
 
Benutzername       xyz@domain.at    E-Mail-Adresse  Aliase   Anzeigen nicht möglich. Versuchen Sie es noch mal.
 

Die Lösung ist es nun, die Einträge im Attribut “ProxyAddresses” zu entfernen, was folgendes Script massenhaft erledigen kann:
(als MassenAttributlöscher.vbs speichern und direkt am Domänencontroller ausführen)

On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2
Const ADS_PROPERTY_APPEND = 3
Const ADS_PROPERTY_DELETE = 4
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 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 NOT objRecordSet.Fields("proxyaddresses").Value = NULL 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 = "DRE" then
	'Wscript.Echo objRecordSet.Fields("name").Value

	arrProxyAddresses = objRecordSet.Fields("proxyAddresses").Value
	Set objUser = GetObject("LDAP://" & objRecordSet.Fields("distinguishedName").Value)

	'### zum Löschen aller Einträge in ProxyAddresses folgendes einkommentieren:
	For Each objItem In arrProxyAddresses

					objUser.PutEx ADS_PROPERTY_DELETE, "proxyAddresses", Array(objItem)
					objUser.SetInfo

	Next

	'### zum Einfügen einer zusätzlichen Adresse folgendes einkommentieren:

				' objUser.PutEx ADS_PROPERTY_APPEND, "proxyAddresses", Array("smtp:" & objRecordSet.Fields("sAmAccountname").Value & "@brg-mattersburg.at" )
				 'objUser.SetInfo

	'### zum Auflisten aller Einträge in ProxyAddresses folgendes einkommentieren:
	For x=0 to UBOUND(arrProxyAddresses)
		wscript.echo arrProxyAddresses(x)

	Next

			wscript.Echo "erfolgreiche gelöscht!" & vbcrlf

	end if
	'end if

    objRecordSet.MoveNext

Loop
Posted in Active Directory, Azure, Office 365, Scripts, VBScript | Leave a comment