如何编写这个创建计划任务的 powershell 2.0 命令来运行另一个 powershell 命令?

如何编写这个创建计划任务的 powershell 2.0 命令来运行另一个 powershell 命令?

无论出于什么目的,我都是 PS 新手。

我想要运行的命令(手动运行时有效)是:

(我意识到部分内容可能是多余的)

启动进程-WindowStyle hidden“$psHome\powershell.exe”-verb runas-ArgumentList“-file c:\distributedfiles\source.ps1-ErrorAction SilentlyContinue”

我希望这个 ^ 命令从需要通过 powershell 创建的计划任务中执行。

我尝试过这样的事情:

schtasks.exe /create /tn backuptest /tr “c:\distributedfiles” “powershell.exe `-executionpolicy unrestricted -file c:\distributedfiles\source.ps1 -verb runas -erroraction silentlycontinue`” /d mon /sc once /st 12:33 /rl highest /f /z

毫无成效。我知道我的语法完全错误。如果能帮助我,我将不胜感激!

编辑:在这种情况下,是否只需要 2 个 .ps1 文件,一个使用我的 Start-Process 命令,它将由计划任务调用 - 然后调用我的主要源脚本?我大概认为这是最简单的。

答案1

这并不是什么新鲜事,网络上已有相关样本证明。

尝试此问答

使用 Powershell v2 从 XML 创建新的计划任务

$task_path = "c:\Temp\tasks\*.xml"
$task_user = "Administrator"
$task_pass = "mypass"

$sch = New-Object -ComObject("Schedule.Service")
$sch.connect("localhost")
$folder = $sch.GetFolder("\")

Get-Item $task_path | %{
    $task_name = $_.Name.Replace('.xml', '')
    $task_xml = Get-Content $_.FullName

    $task = $sch.NewTask($null)

    $task.XmlText = $task_xml

    $folder.RegisterTaskDefinition($task_name, $task, 6, $task_user, $task_pass, 1, $null)
}

schtasks.exe /Create /XML C:\task.xml /tn taskname

或者在这里: 如何在 PowerShell 2.0 中创建计划任务

在 Powershell 2.0(Windows 7、Windows Server 2008 R2)中,您可以使用 Schedule.Service COM 接口在 PowerShell 中创建重复任务(ScheduledJob)。在此示例中,我们创建了一个计划任务,该任务将在启动期间执行包含 PowerShell 脚本的特定文件。该任务以系统权限执行。

$TaskName = "NewPsTask"
$TaskDescription = "Running PowerShell script from Task Scheduler"
$TaskCommand = "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe"
$TaskScript = "C:\PS\StartupScript.ps1"
$TaskArg = "-WindowStyle Hidden -NonInteractive -Executionpolicy unrestricted -file $TaskScript"
$TaskStartTime = [datetime]::Now.AddMinutes(1)
$service = new-object -ComObject("Schedule.Service")
$service.Connect()
$rootFolder = $service.GetFolder("\")
$TaskDefinition = $service.NewTask(0)
$TaskDefinition.RegistrationInfo.Description = "$TaskDescription"
$TaskDefinition.Settings.Enabled = $true
$TaskDefinition.Settings.AllowDemandStart = $true
$triggers = $TaskDefinition.Triggers
#http://msdn.microsoft.com/en-us/library/windows/desktop/aa383915(v=vs.85).aspx
$trigger = $triggers.Create(8)

相关内容