doskias
Goto Top

Problem beim Verteilen einer Aufgabe via GPO

Hallo zusammen,

ich habe ein Problem beim verteilen einer geplanten Aufgabe via GPO. Und zwar geht es um folgendes. Wir möchten gerne den Zugriff auf den Windows-Store für die Benutzer sperren.

Bislang lief das ganz gut über eine GPO. Store-App deaktivieren und alles war gut. Aber die Funktioniert seit geraumer Zeit nicht mehr zuverlässig. Der Grund:
https://docs.microsoft.com/de-de/troubleshoot/windows-client/group-polic ...

Also sind wir auf einen anderen Weg umgestiegen und haben den Store einfach bei der Anmeldung deinstalliert. Auch das war kein Problem:
Remove-AppxPackage (Get-AppxPackage -Name *WindowsStore*)

Ja ich weiß, MS empfiehlt das nicht, aber darum geht es nicht. Wir wollen halt nicht, dass die User den Store nutzen können um Apps herunter zu laden, da die Apps teilweise alles andere als gut geprüft sind (Stichwort Sicherheitslücken) auf der anderen Seite kann man damit Spiele ohne Adminrechte installieren und auch das wollen wir verständlicherweise nicht. Auf der anderen Seite ist der Store aber erforderlich damit Apps funktionieren.
Kurzes Beispiel: Der Taschenrechner (nur ein Beispiel) kann bei einigen Anwendern nicht gestartet werden und muss aus dem Shop neu herunter geladen werden. Das trifft vor allem die Kollegen, die mit Roaming-Profilen arbeiten müssen. Umstellung auf FSLogix ist an der Stelle nicht möglich und auch keine wirkliche Option, da selbst mit FSLogix der Store noch verfügbar wäre.

Also habe ich mir überlegt den Store ganz einfach über die Aufgabenplanung zu schließen sofern er geöffnet wird. Ich habe dafür eine Aufgabe erstellt mit folgendem Trigger: Bei einem Ereignis im Protokoll Microsoft-Windows-Store/Operational aus der Quelle Store wird Powershell.exe mit dem Befehl
Remove-AppxPackage (Get-AppxPackage -Name *WindowsStore*)
ausgeführt. Funktioniert super. Also wollte ich das ganze per GPO verteilen, allerdings stoße ich jetzt auf ein Problem:

Wenn ich in der GPO eine geplante Aufgabe erstelle, dann habe ich zwar das Protokoll zur Verfügung, aber keine Quelle Store, sondern nur die Quelle Microsoft-Windows-Store. Klar habe ich auch noch andere Quellen in diesem Protokoll aber sie haben steht ein Microsoft-Windows vor dem Namen im Vergleich zum Windows 10 Client.

Nun bekomme ich beim GPUPdate folgende Fehlermeldung:
"Das Computer "Store_beenden"-Einstellungselement im Gruppenrichtlinienobjekt "MS-Sore deaktivieren" {GPO-SID} wurde aufgrund eines Fehlers nicht angewendet. Fehlercode "0x80041318 Die Aufgaben-XML enthält einen Wert, der entweder falsch formatiert ist oder sich außerhalb des Bereichs befinden." Dieser Fehler wurde unterdrückt.

Ich bin dann in die Policies unter Domain\Policies\SID\Machine\Preferences\ScheduledTaks gegangen und habe dort in der xml das "überflüssige" Microsoft-Windows gelöscht, so dass die Quelle in der XML mit der Quelle auf dem Client überein stimmt, aber das brachte keine Änderung in der Fehlermeldung.

Im nächsten Schritt habe ich in der GPO den Trigger anstelle der Option Minimal über die Option Benutzerdefiniert angepasst. Hier muss ich die XML per Hand ausfüllen und kann den SystemProvider Name auf Sore festlegen. Dies ändert aber nichts an der Fehlermeldung und an dem Verhalten der GPO. Die geplante Aufgabe wird nicht hinzugefügt und das GPupdate endet mit dem beschriebenen Fehler.

Also hier jetzt dir Frage:
Wie kann ich einen Trigger definieren, der sich auf Systemprotokolle bezieht, die auf dem DC einen anderen Namen haben als auf dem Zielgerät? Was mach ich falsch, bzw. was übersehe ich?

Gruß
Doskias

PS: händisch die Aufgabe zu exportieren und auf einem anderen Rechner zu importieren funktioniert Problemlos, ist aber für eine dreistellige Anzahl an betroffenen Clients keine Option face-smile

Content-ID: 2043675849

Url: https://administrator.de/contentid/2043675849

Ausgedruckt am: 21.11.2024 um 14:11 Uhr

DerWoWusste
Lösung DerWoWusste 02.03.2022 um 16:37:32 Uhr
Goto Top
Moin.

Ich bin dann in die Policies unter Domain\Policies\SID\Machine\Preferences\ScheduledTaks gegangen und habe dort in der xml das "überflüssige" Microsoft-Windows gelöscht, so dass die Quelle in der XML mit der Quelle auf dem Client überein stimmt, aber das brachte keine Änderung in der Fehlermeldung.
Nach dieser Anpassung, die funktionieren sollte, hast Du am Client ein Gpupdate /force gemacht? Sonst bekommt der Client davon nichts mit, da sich ja nicht einmal die Revision der GPO ändert bei manueller Anpassung.
Hat sich der Task wirklich nicht geändert?

Ich schätze, wenn Du auf einem Win10 RSAT installierst, dass du über RSAT die richtige Quelle setzen kannst.
em-pie
em-pie 02.03.2022 um 20:45:44 Uhr
Goto Top
Moin,

Hast du mal probiert, den exportierten Task per Powershell zu importieren?

https://petri.com/import-scheduled-tasks-powershell

Gruß
em-pie
Doskias
Doskias 03.03.2022 um 08:06:09 Uhr
Goto Top
Guten Morgen

Zitat von @DerWoWusste:
Ich bin dann in die Policies unter Domain\Policies\SID\Machine\Preferences\ScheduledTaks gegangen und habe dort in der xml das "überflüssige" Microsoft-Windows gelöscht, so dass die Quelle in der XML mit der Quelle auf dem Client überein stimmt, aber das brachte keine Änderung in der Fehlermeldung.
Nach dieser Anpassung, die funktionieren sollte, hast Du am Client ein Gpupdate /force gemacht? Sonst bekommt der Client davon nichts mit, da sich ja nicht einmal die Revision der GPO ändert bei manueller Anpassung.
Hat sich der Task wirklich nicht geändert?
Ja ich habe ein GP-Update gemacht. Mit force, mit target:computer, mit Neustart, mit einem Tag warten. Und ja der Task hat sich geändert, was ich hier nicht explizit geschrieben habe. Nach dem ersten GPUpdate hat sich die Fehlermeldung geändert und zwar zu:
0x80073a99 Die angegebene Abfrage ist ungültig.
Daher weiß ich, dass das GPUpdate funktioniert hat. Ursache dafür war, dass ich die Aufgabe als Administrator ausführen wollte und vergessen habe, dass man bei geplanten Aufgaben keine User mehr mitgeben kann. Also habe ich in der GPO von domain\Admin auf %logonunser% gestelt. Nochmal GPUpdate und ich war wieder bei der oben geposteten 0x80041318.

Ich schätze, wenn Du auf einem Win10 RSAT installierst, dass du über RSAT die richtige Quelle setzen kannst.
Also ich habe auf dem Testrechner kein RSAT installiert um möglichst dicht an den Clients der User zu bleiben. Auch auf meinem eigenen Client nicht, da ich die Server ohnehin den ganzen tag in RDP offen habe. Und selbst wenn es mit installiertem RSAT ginge, macht es ja keinen Sinn einem Großteil der Anwender die AdminTools auf den Rechner zu installieren. face-smile


Zitat von @em-pie:
Hast du mal probiert, den exportierten Task per Powershell zu importieren?
https://petri.com/import-scheduled-tasks-powershell

Nein noch nicht, aber die Idee ist mir gestern auf den Weg nach Hause auch gekommen.

Gruß
Doskias
DerWoWusste
DerWoWusste 03.03.2022 um 09:02:07 Uhr
Goto Top
Und selbst wenn es mit installiertem RSAT ginge
...was Dich zum Test 5 Minuten kostet...
macht es ja keinen Sinn einem Großteil der Anwender die AdminTools auf den Rechner zu installieren. face-smile face-smile
Nein, dafür brauchen die Clients doch kein RSAT. RSAT nutzt nur Deine Gegebenheiten für die Verwaltung. Weiteres Beispiel: Du willst die Startart des Dienstes Blablubb, der auf den Clients (unter anderem auf deinem eigenen) installiert ist, per GPO ändern. Machst Du das auf dem DC, so wirst Du diesen Dienst nicht im Menü sehen können. machst Du das über RSAT von deinem aus, wirst Du ihn sehen können. Auf die Clients musst Du nichts installieren.
Doskias
Lösung Doskias 03.03.2022 um 10:51:17 Uhr
Goto Top
Zitat von @DerWoWusste:

macht es ja keinen Sinn einem Großteil der Anwender die AdminTools auf den Rechner zu installieren. face-smile face-smile
Nein, dafür brauchen die Clients doch kein RSAT. RSAT nutzt nur Deine Gegebenheiten für die Verwaltung. Weiteres Beispiel: Du willst die Startart des Dienstes Blablubb, der auf den Clients (unter anderem auf deinem eigenen) installiert ist, per GPO ändern. Machst Du das auf dem DC, so wirst Du diesen Dienst nicht im Menü sehen können. machst Du das über RSAT von deinem aus, wirst Du ihn sehen können. Auf die Clients musst Du nichts installieren.

War zu früh, hatte dich so verstanden ich soll das RSAT auf den Clients installieren :D

So habe ich jetzt gemacht und hab jetzt eigentlich gar keine Lust mehr mich damit weiter zu beschäftigen. Der Grund kommt jetzt mit Bildern face-smile

Erstelle ich die Aufgabe per Hand, habe ich folgende Auswahlmöglichkeiten:
hand
Erstelle ich sie per GPO sieht es wie folgt aus:
gpo
Erstelle ich es via RSAT-GPO
rsat

Es gibt also schonmal einen kleinen Unterschied, allerdings steht auch via RSAT das ominöse Microsoft-Store in der Quelle. Ich kann die Aufgabe problemlos exportieren und auf einem anderen Rechner importieren. Das funktioniert. Also habe ich mir die XML des Exportes jetzt einmal angeschaut:

  <Triggers>
    <EventTrigger>
      <Enabled>true</Enabled>
      <Subscription>&lt;QueryList&gt;&lt;Query Id="0" Path="Microsoft-Windows-Store/Operational"&gt;&lt;Select Path="Microsoft-Windows-Store/Operational"&gt;*[System[Provider[@Name='Microsoft-Windows-Store']]]&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;</Subscription>  
    </EventTrigger>
  </Triggers>

Und daraus schließe ich, dass der Name (ob mit oder ohne) Microsoft-Windows total egal ist, denn auch wenn die XML an einem andren Client importiere und die Aufgabe dann bearbeite, dann steht dort nur Store und nicht Microsoft-Windows-Store.

Auf der anderen Seite kann ich ausschließen, dass der Fehler woanders liegt. Ändere ich das Protokoll auf "Applikation", die Quelle auf "Group Policy Sheduled Tasks", dann wird die Aufgabe erstellt und jedes mal ausgeführt, wenn im Anwendungsprotokoll der Group Policy Sheduled Task auftaucht (also zum Beispiel weil der hier geplante nicht hinzugefügt werden kann face-wink ) . Damit es aber nicht endlose Ausnahmen annimmt, habe ich natürlich das Apllikations-Protokoll auf eine Event-ID beschränkt.
Bleibt also im Endergebnis dabei: In dem Moment wo ich das Protokoll ändere hab ich das Problem. Nun habe ich zum Test einfach mal ein Event-ID in der GPO hinterlegt und siehe da, es geht sofort.

Fazit und damit die Lösung:
Erstelle ich lokal eine Aufgabe in der Aufgabenplanung muss ich Protokoll und Quelle auswählen. Die Ereignis-ID ist dabei optional. Lass ich es leer, so wird es bei jedem Ereignis ausgeführt, welches mit dem Protokoll und der Quelle übereinstimmt. Importiere ich die XML auf einem anderen Rechner, stört sich die Aufgabenplanung nicht im geringsten an der fehlenden Ereignis ID.
Will ich das ganze aber per GPO verteilen, so muss ich zwingend eine Ereignis-ID mitgeben. Protokoll und Quelle ist dann nicht mehr ausreichend und die fehlende Ereignis-ID passt ja auch zu der Meldung:
Fehlercode "0x80041318 Die Aufgaben-XML enthält einen Wert, der entweder falsch formatiert ist oder sich außerhalb des Bereichs befinden."

Der Vollständigkeit halber: Ich habe mich jetzt für die uelle Store-SDK mit der Ereignis-ID 4 entschieden, da hier "Store ist starting" mit protokolliert wird.

Gruß
Doskias

PS: Wenn hier nicht gleich alle schreiben, dass das doch klar ist, riecht das förmlich nach einem neuen Wissensartikel face-smile