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?
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
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
Die Option "Ausführen, ob Benutzer angemeldet ist oder nicht" in der Taskplaner-Benutzeroberfläche entspricht New-ScheduledTaskPrincipal -LogonType S4U
.
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"