Jump to content

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


Empfohlene Beiträge

Hallo zusammen,

 

ich versuche gerade, ein PS-Skript automatisiert über die Aufgabenplanung beim Anmelden des Benutzers starten zu lassen.

 

Die Skript-Datei habe ich per GPO auf ein Verzeichnis lokal verteilt, die Aufgabenplanung wird ebenfalls über GPO erstellt. Das alles funktioniert. Nur das Ausführen leider nicht.

 

Ich lasse als Aktion "Programm starten"

Das Programm (Powershell) wird aufgerufen mit: c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe

Bei "Argumente hinzufügen) steht: -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File "c:\temp\skriptdatei.ps1"

 

Ausführender Benutzer ist "System", darf unabhängig der Benutzeranmeldung ausgeführt werden, natürlich mit den höchsten Privilegien.

 

Das Problem ist, dass die Aufgabenplanung behauptet, dass der geplante Task erfolgreich ausgeführt wurde, es passiert nur leider nichts.

Im Skript steht dieser Befehl: Get-AppxPackage Microsoft.OutlookForWindows | remove-appxpackage

 

Ich habe auch schon den Administrator (Domäne) eingestellt.

 

Den Task manuell starten bringt ebenfalls nichts. Es steht immer dort, dass er erfolgreich ausgeführt wurde, passiert ist aber nichts.

 

Führe ich den Befehl zum Aufruf von Powershell incl. Skript manuell aus, funktioniert es und dieses Outlook(new) wird deinstalliert. Ich bin lokaler Admin, die meisten Benutzer bei mir sind es jedoch nicht. Trage ich im Task mich als Benutzer ein, funktioniert das Skript auch.

Nur wird mir das nichts nutzen, da mind. 90% der Benutzer keine lokalen Adminrechte besitzen. Warum aber funktioniert der Aufruf als System oder mit Benutzer Administrator nicht?

 

In der Ereignisanzeige steht auch nichts drin.

 

Wer hat evtl. noch eine Idee, dass dieses Skript ausgeführt werden kann?

 

Grüße

Alex

Link zu diesem Kommentar

@testperson

Das funktioniert. Das Log wird erstellt:

 

**********************
nStart der Windows PowerShell-Aufzeichnung
Startzeit: 20231115141916
Benutzername: xxx\SYSTEM
RunAs-Benutzer: xx\SYSTEM
Konfigurationsname: 
Computer: xxx (Microsoft Windows NT 10.0.22631.0)
Hostanwendung: c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File c:\temp\PS-Skript.ps1
Prozess-ID: 12416
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\MeinScriptLog.txt".
**********************
Ende der Windows PowerShell-Aufzeichnung
Endzeit: 20231115141916
**********************

 

Link zu diesem Kommentar

Ja ok, das Skript stand tatsächlich unten, ist mir nicht aufgefallen. Nun ist es dazwischen und das Ergebnis sieht aber trotzdem genauso aus wie oben.

Ich lasse es natürlich über die Aufgabenplanung starten, denn manuell am Client funktioniert der Aufruf ja problemlos und das "neue Outlook" wird problemlos deinstalliert.

 

So steht es jetzt drin:

Start-Transcript -Path C:\Temp\MeinScriptLog.txt

<#
Get-AppxPackage Microsoft.OutlookForWindows | remove-appxpackage
#>
 
Stop-Transcript

 

Das habe ich als xxx.ps1 abgespeichert und rufe es in der Aufgabenplanung so auf:

 

c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File c:\temp\PS-Skript.ps1

 

 

[edit]

Ich habe die ps1-Datei mal manuell aufrufen wollen und bekomme nun den "Fehler", dass die Ausführung von Skripts auf dem System deaktiviert ist.

Dann liegt es wohl daran!?

bearbeitet von MiLLHouSe
Link zu diesem Kommentar

Ich benutze immer eine Batch um die ps-skripte zu starten, damit ich die gpo nicht im script berücksichtigen muss.

Du kannst ja mal zum test ein batch erstellen, in dem folgendes steht.

start Powershell.exe -executionpolicy Unrestricted -File  "Hier liegt mein script.ps1"

 

Wenn sich ein PS fenster öffnet aber nicht der gewünschte inhalt ausgeführt wird, liegt das problem ja im skript.

bearbeitet von Mario-HS
Link zu diesem Kommentar
vor 1 Minute schrieb MiLLHouSe:

Es geht bei mir (mit lokalen Admin-Rechten) und bei manueller Ausführung ohne Probleme.

 

vor 43 Minuten schrieb BOfH_666:

Hast Du schon mal den Parameter "-AllUsers" probiert? Das sollte ein Package für alle de-installieren. Dann brauchst Du es pro PC auch nur einmal ausführen und nicht für jeden Benutzer einzeln.

 

Link zu diesem Kommentar
vor 2 Minuten schrieb testperson:

Entferne einmal den Kommentarblock. Also das "<#" und "#>".

 

Leider keine Änderung. Das erzeugte TXT sieht weiterhin wie gehabt aus.

@BOfH_666

Du meinst als Parameter dann so: -AllUsers -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File "c:\temp\PS-Skript.ps1" ?

 

Da kommt dann 0x1 bei der Ausführung, also direkt ein Fehler.

Link zu diesem Kommentar

Hallo Sunny,

ich wollte es auch gerade schreiben, dass ich da ja falsch war und dass es natürlich genau dorthin gehört. Das habe ich mittlerweile schon ausprobiert, aber es klappt weiterhin nicht.

 

Zwar sagt die Aufgabenplanung weiterhin schön brav, dass der Task ausgeführt wurde, nur passiert einfach nichts :( .

 

Anderswo habe ich gelesen, dass man mit dem Befehl "Set-ExecutionPolicy RemoteSigned evtl. weiterkommt. Damit konnte ich dann aber lediglich das ps1-File ohne irgendwelche Parameter in PS aufrufen.

 

Manuell kann ich die Deinstallation durchführen, da gebe ich in einer CMD einfach

 

c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File c:\temp\PS-Skript.ps1

 

ein und es läuft. Nur automatisiert nicht.

 

Ich geb's bald auf...

bearbeitet von MiLLHouSe
Link zu diesem Kommentar

Ich würde das mal etwas aufdröseln - Pipes in unbeaufsichtigten Skripts sind Mist, weil Du nicht loggen kannst, was in der Pipeline passiert...

So als Vorschlag - und vielleicht mag ein Mod das in  Skripting-Forum schieben, da gehört es eher hin :-)

Start-Transcript -Path "$( $MyInvocation.InvocationName ).Log"

$Packages = Get-AppxPackage Microsoft.OutlookForWindows
  
Write-Host "Number of Packages found: $( $Packages.Count )"
If ( $Packages.Count -gt 0 ) {
  Foreach ( $Package in $Packages ) {
  	$Package | Select Name, Version, InstallLocation | Format-Table -Autosize
  }
  Write-Host "Removing Packages..."
  Foreach ( $Package in $Packages ) {
   Remove-AppxPackage $Package -Verbose
  }
} Else {
  Write-Host "No Packages found, nothing to do..."
}
 
Stop-Transcript

 

Die Vorschläge mit "Remove-AppxPackage -AllUsers" werden nicht funktionieren, weil das kein Bundle ist, das kann nur pro User deinstalliert werden. Also muß auch das Skript im Benutzerkontext laufen.

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