Jump to content

Powershell-Skript per Aufgabenplanung ausführen (bei Anmeldung)


Empfohlene Beiträge

OK, dann halt über Skripting, wenn es am Ende funktioniert...

 

Ich habe das jetzt mal so verwendet und das Log sagt mir nun folgendes:

 

**********************
nStart der Windows PowerShell-Aufzeichnung
Startzeit: 20231116090012
Benutzername: xxx\SYSTEM
RunAs-Benutzer: xxx\SYSTEM
Konfigurationsname: 
Computer: NB213 (Microsoft Windows NT 10.0.22631.0)
Hostanwendung: c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File c:\temp\skript.ps1
Prozess-ID: 18872
PSVersion: 5.1.22621.2506
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.22621.2506
BuildVersion: 10.0.22621.2506
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Die Aufzeichnung wurde gestartet. Die Ausgabedatei ist "c:\temp\skript.ps1.Log".
Number of Packages found: 0
No Packages found, nothing to do...
**********************
Ende der Windows PowerShell-Aufzeichnung
Endzeit: 20231116090012
**********************

 

Mich wundert, dass er kein Paket gefunden hat und nichts tut. Führe ich Get-AppxPackage Microsoft.OutlookForWindows manuell in PS aus, findet er natürlich das installierte Paket.

Link zu diesem Kommentar
vor 8 Minuten schrieb MiLLHouSe:

Mich wundert, dass er kein Paket gefunden hat und nichts tut.

Du führst das Skript im Kontext "System" aus. Ich hatte es in meiner ersten Antwort bereits empfohlen, das Skript mal im Kontext des Benutzers zu starten. Hast Du das schon mal probiert? Wenn es ein Paket ist, welches P R O   U S E R installiert ist, findest Du für den User "System" natürlich kein Paket. 🤷🏼‍♂️

bearbeitet von BOfH_666
Link zu diesem Kommentar

OK, das hast du wohl geschrieben... Aber wie kann ich das über die GPO mitgeben, dass der angemeldete Benutzer verwendet wird?

Und was ist, wenn der Benutzer keine lokalen Adminrechte hat?

 

Vielleicht stehe ich da auch gerade einfach nur auf dem Schlauch und verstehe es nicht...

 

 

OK, Nachtrag:

Ich habe jetzt bei

 

$Packages = Get-AppxPackage Microsoft.OutlookForWindows

 

das -AllUsers hinzugefügt und nun steht im Log, dass er ein Paket gefunden hat

 

Die Aufzeichnung wurde gestartet. Die Ausgabedatei ist "c:\temp\skript.ps1.Log".
Number of Packages found: 1

Name                        Version       InstallLocation
----                        -------       ---------------
Microsoft.OutlookForWindows 1.2023.1108.0 C:\Program Files\WindowsApps\Microsoft.OutlookForWindows_1.2023.1108.0_x64...


Removing Packages...
AUSFÜHRLICH: Ausführen des Vorgangs "Paket entfernen" für das Ziel "Microsoft.OutlookForWindows_1.2023.1108.0_x64__8wekyb3d8bbwe".
AUSFÜHRLICH: Vorgang abgeschlossen für: Microsoft.OutlookForWindows_1.2023.1108.0_x64__8wekyb3d8bbwe

 

 

Nur deinstalliert hat er nix, das Paket ist weiterhin vorhanden.

bearbeitet von MiLLHouSe
Link zu diesem Kommentar
vor 16 Minuten schrieb MiLLHouSe:

Und was ist, wenn der Benutzer keine lokalen Adminrechte hat?

Für User-Pakete braucht er keine Adminrechte. Ein Chrome oder Teams oder sowas, installierst Du Dir im Standard auch in Dein eigene s Profil, ohne dass Du dafür Adminrechte hast. 🤷🏼‍♂️

 

Entweder Du benutzt einen Admin-Account, der das Paket für ALLE Benutzer entfernt, oder jeder einzelne Benutzer entfernt sein eigenes Paket. Das Letztere ist ja offenbar das was Du machen möchtest, wenn Du das Skript bei Anmeldung der Benutzer ausführen möchtest ... 

Link zu diesem Kommentar

Ich habe den Task mal als Administrator ausführen lassen, da kommt dann die Meldung:

 

Removing Packages...
AUSFÜHRLICH: Ausführen des Vorgangs "Paket entfernen" für das Ziel "Microsoft.OutlookForWindows_1.2023.1108.0_x64__8wekyb3d8bbwe".
Remove-AppxPackage : Fehler bei Bereitstellung. HRESULT: 0x80073D19, Fehler aufgrund der Abmeldung eines Benutzers

Microsoft.OutlookForWindows_1.2023.1108.0_x64__8wekyb3d8bbwe kann nicht entfernt werden, da der aktuelle Benutzer 
dieses Paket nicht installiert hat. Verwenden Sie Get-AppxPackage, um die Liste der installierten Pakete anzuzeigen.

 

Wenn ich selbst einen Task erstelle, steht ja mein Benutzer drin, der die Aufgabe ausführen soll. Doch wie kann ich das per GPO mitgeben, dass der dann aktuell angemeldete User verwendet wird? Der User ist ja u.U. auch mehrfach am Tag unterschiedlich, wenn sich da mehrere Benutzer an- und abmelden.

Link zu diesem Kommentar

Theoretisch ja, aber wir verwenden bei uns das Logon-Skript nicht. Es läuft alles komplett über GPO.

Ich könnte jetzt natürlich das dafür hernehmen, aber ich hätte es dann doch ganz gerne einheitlich und entsprechend unserer internen "Vorgabe" (wenn möglich).

 

 

[edit]

Es läuft jetzt. Ich habe die Aufgabe als benutzerdefinierte GPO erstellt und in dieser bei Benutzer folgendes eingetragen: %USERDOMAIN%\%USERNAME%

 

Damit kann ich die Aufgabe ausführen und das Outlook wird deinstalliert :)

Schön wäre zwar, wenn nicht kurzzeitig die Ausführung von Powershell angezeigt würde, aber das lasse ich mir da mal eingehen und sollte niemanden stören.

bearbeitet von MiLLHouSe
Link zu diesem Kommentar
vor 36 Minuten schrieb MiLLHouSe:

Schön wäre zwar, wenn nicht kurzzeitig die Ausführung von Powershell angezeigt würde, aber das lasse ich mir da mal eingehen und sollte niemanden stören.

Dafür gibt es die Kommandozeilen-Option "-WindowStyle Hidden". Diese muss aber als erstes (vor allen anderen ...) angegeben werden, um korrekt zu funktionieren. ☝

bearbeitet von BOfH_666
Link zu diesem Kommentar

Und ich habe festgestellt, dass die Aufgabe beim Anmelden tatsächlich läuft, ohne dass man davon was sieht. Ich habe sie vorhin nur testweise manuell ausgelöst und da hatte ich kurzzeitig das Fenster gesehen.

Also so sieht es jetzt erstmal sehr gut aus und ich bedanke mich ganz herzlich bei euch für die großartige Unterstützung.

Link zu diesem Kommentar
Am 16.11.2023 um 09:24 schrieb MiLLHouSe:

das -AllUsers hinzugefügt und nun steht im Log, dass er ein Paket gefunden hat

Nur deinstalliert hat er nix, das Paket ist weiterhin vorhanden.

 

Hab ich doch oben schon geschrieben - AllUsers-Removal funktioniert nur, wenn es ein Bundle ist. Und das hier ist kein Bundle, muß also pro User deinstalliert werden. Wenn Du im geplanten Task einfach ".\Benutzer" einträgst (oder englisch ".\Users"), sollte das klappen.

Am 16.11.2023 um 10:43 schrieb BOfH_666:

Dafür gibt es die Kommandozeilen-Option "-WindowStyle Hidden". Diese muss aber als erstes (vor allen anderen ...) angegeben werden, um korrekt zu funktionieren. ☝

 

Wow - das hilft sogar mir noch. Hab mir bisher mit nem VBS-Wrapper und WScript beholfen...

Link zu diesem Kommentar

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...