我使用 admin PowerShell Register-ScheduledJob
创建了一个 Windows 任务。
通过执行 Start-Job
直接调用它时效果很好。但是作业触发器在没有提升权限的情况下执行它。如何在 Windows 上创建任务/作业(使用 admin PowerShell),其中 - 计划脚本本身 - 也以 admin 身份运行。在 Linux 上想象:我编辑 root crontab。
这是我到目前为止尝试过的,对我没有任何作用(弹出窗口不显示):
$min = New-TimeSpan -Minute 30
$opts = New-ScheduledJobOption -RunElevated -RequireNetwork
Register-ScheduledJob -Name msaccess_invita_gmbh_hook -ScheduledJobOption $opts
-RunNow -RunEvery $min -ScriptBlock {
Start-Process powershell -Verb runAs -ArgumentList
"Add-Type -AssemblyName PresentationCore,PresentationFramework;
[System.Windows.MessageBox]::Show('whatup')"
}
答案 0 :(得分:0)
继续我的评论,这是一个完整的 ST 创作:
https://duckduckgo.com/?q=powershell+create+scheduled+task+admin+credentials&t=h_&ia=web
示例:
$Action = New-ScheduledTaskAction -Execute 'C:\Windows\System32\WindowsPowerShellv1.0\powershell.exe' -Argument "-NonInteractive -NoLogo -NoProfile -File 'C:\scripts\PowerShellscript.ps1'" -WorkingDirectory 'C:\scripts'
$Trigger = New-ScheduledTaskTrigger -RandomDelay (New-TimeSpan -Minutes 5) -AtStartup
$Settings = New-ScheduledTaskSettingsSet -DontStopOnIdleEnd -RestartInterval (New-TimeSpan -Minutes 1) -RestartCount 10 -StartWhenAvailable
$Settings.ExecutionTimeLimit = 'PT0S'
$SecurePassword = $password = Read-Host -AsSecureString
$UserName = 'svc_account'
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $UserName, $SecurePassword
$Password = $Credentials.GetNetworkCredential().Password
$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Settings
$Task | Register-ScheduledTask -TaskName 'ScheduledTaskName' -User 'svc_account' -Password $Password
更新,根据我们的评论交流。
使用 schtasks.exe 的事件,要以不同的身份/凭据运行,您必须在创建时传递它们。
# Create a task to run at 11 pm every weekday
SCHTASKS /Create /SC weekly /D MON,TUE,WED,THU,FRI /TN MyDailyBackup /ST 23:00 /TR c:\backup.cmd /RU MyDomain\MyLogin /RP MyPassword
如果以当前用户身份运行,则为默认。