如何使用 powershell 将作者添加到 windows 任务

How to add Author to a windows task using powershell

我正在使用 powershell 创建一个 window 任务,一切正常,但我找不到如何添加作者姓名。 Register-ScheduledTask 作为描述的参数,但不是 Author 的参数。

导出Windows任务

 <RegistrationInfo>
    <Date>2016-05-17T16:45:54.3423362</Date>
    <Author>NEED TO SET THIS</Author>
    <URI>RunLauncherTask</URI>
  </RegistrationInfo>

我用来创建任务的代码

$principal = New-ScheduledTaskPrincipal -UserId (Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -expand UserName)
$allTasks = Get-ScheduledTask | Select TaskName
$action = New-ScheduledTaskAction -Execute "C:\Launcher.exe"
$trigger = New-ScheduledTaskTrigger -AtLogOn
$task = New-ScheduledTask -Action $action -Trigger $trigger -Principal $principal
$username = $principal.UserId
$taskName = 'RunLauncherTask' +  $username.Replace('\','-')
$settings = New-ScheduledTaskSettingsSet -DontStopIfGoingOnBatteries -AllowStartIfOnBatteries
Register-ScheduledTask $taskName -Action $action -Settings $settings

如何设置autor?

不幸的是,唯一的方法是通过 -xml 选项。

请注意,该选项采用实际的 字符串,而不是文件名。

$xml = @"
....
....
"@
Register-ScheduledTask -Xml $xml -TaskName $task_name

这是对我有用的方法。

创建任务后:

$taskObject = Get-ScheduledTask "Taskname"
$taskObject.Author = "authorname"
$taskObject | Set-ScheduledTask

我正在寻找一种方法来更改现有任务的作者,Google 把我带到了这里。这可能不是对 OP 问题的最有效答案,但我会 post 它以防它能帮助处于我情况的其他人。

假设任务已在任务计划程序中设置:

$tasks=Get-ScheduledTask |where author -like "<old_author>"

$tasks | Foreach-Object{

    $taskObject=Get-ScheduledTask $_.TaskName
    $taskObject.Author = "<new_author>"
    $taskObject | Set-ScheduledTask -User "<new_username>" -Password "<new_user_password>"
}

详细说明@bupmm的回答和@Gup3rSuR4c的相应评论,可以在设置定时任务的时候设置作者。创建定时任务对象,在任务对象中设置作者,然后注册新的任务对象(见下面代码)。

$User = "user"
$Password = "password"
$TaskPath = "<scheduled_task_folder>"

$TaskName = "hello_world"
$TaskDescription = "Run Hello World"
$TaskAction = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File C:\source_code\scripts\hello_world.ps1"
$TaskTrigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 5) -RepetitionDuration ([System.TimeSpan]::MaxValue)
$TaskPrincipal = New-ScheduledTaskPrincipal -Id $User -UserId $User -LogonType Password -RunLevel Limited
$Task = New-ScheduledTask -Description $TaskDescription -Action $TaskAction -Principal $TaskPrincipal -Trigger $TaskTrigger
$Task.Author = "Author"
$Task | Register-ScheduledTask -TaskName $TaskName -TaskPath $TaskPath -User $User -Password $Password | Out-Null