以管理员身份运行计划的 PowerShell 脚本

时间:2021-04-28 00:28:36

标签: windows powershell

我使用 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')"
}

1 个答案:

答案 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

如果以当前用户身份运行,则为默认。