it-swarm.com.de

Legen Sie eine geplante Aufgabe fest, die ausgeführt wird, wenn der Benutzer nicht angemeldet ist

Ich habe die Cmdlets Powershell Scheduled Task verwendet, um eine geplante Task auf unseren Servern zu erstellen. 

Wie wähle ich mit dieser API "Ausführen, ob Benutzer angemeldet ist oder nicht"?

Ich habe action, trigger, principal und settings Objekte erstellt und diese wie folgt an Register-ScheduledTask übergeben:

$action = New-ScheduledTaskAction -Execute foo.exe -Argument "bar baz"
$trigger = New-ScheduledTaskTrigger -Once -At $startTime -RepetitionInterval (New-TimeSpan -Minutes 1) -RepetitionDuration ([Timespan]::MaxValue)
$principal = New-ScheduledTaskPrincipal -UserId "$($env:USERDOMAIN)\$($env:USERNAME)" -LogonType ServiceAccount
$settings = New-ScheduledTaskSettingsSet -MultipleInstances Parallel

Register-ScheduledTask -TaskName $taskName -TaskPath "\my\path" -Action $action -Trigger $trigger -Settings $settings -Principal $principal

Wenn Sie eine geplante Aufgabe wie diese erstellen, wird standardmäßig "Nur ausführen, wenn der Benutzer angemeldet ist" ausgeführt.

Diese Frage zeigt, wie mit COM-Objekten gearbeitet wird, und this mit schtasks.exe, aber wie verwende ich die *-ScheduledTask*-Cmdlets?

22
Peter

Sie müssen $ Principal entfernen und die Aufgabe mit einem Benutzer und einem Kennwort registrieren:

Register-ScheduledTask -TaskName $taskname `
                       -TaskPath "\my\path" `
                       -Action $action `
                       -Trigger $trigger `
                       -User "$env:USERDOMAIN\$env:USERNAME" `
                       -Password '[email protected]' `
                       -Settings $settings
19
Shay Levy

Ich mag oder genehmige die derzeit am besten bewertete Antwort nicht, da Sie dazu Ihre Anmeldeinformationen in einem Skript kennen müssen und dies nicht von Packer oder einer anderen System-/Konfigurationsautomatisierung durchführen kann. Es gibt einen besseren/angemessenen Weg, dies zu tun, von dem Aeyoun erwähnt hat, aber nicht näher darauf eingegangen ist, ob der Principal ordnungsgemäß als Systembenutzer ausgeführt werden soll.

$action = New-ScheduledTaskAction -Execute foo.exe -Argument "bar baz"
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 1) -RepetitionDuration ([Timespan]::MaxValue)
$principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -MultipleInstances Parallel

Register-ScheduledTask -TaskName "tasknamehere" -TaskPath "\my\path" -Action $action -Trigger $trigger -Settings $settings -Principal $principal
29
Farley

Die Option "Ausführen, ob Benutzer angemeldet ist oder nicht" in der Taskplaner-Benutzeroberfläche entspricht New-ScheduledTaskPrincipal -LogonType S4U.

13
Aeyoun

kontrolle der Run-Level-Kontrolle: 

RunLevel  

Gibt die erforderliche Berechtigungsebene zum Ausführen von Aufgaben an, die .__ sind. mit dem Auftraggeber verbunden.

z. B. "Höchste" oder "Begrenzt"

0
Tilo