繁体   English   中英

PowerShell PowerShell 创建的任务中的脚本未运行

[英]PowerShell script within PowerShell-created task doesn't run

我正在编写一个测试脚本,以了解在 PowerShell 中使用任务计划程序的想法。

我不想在脚本中有任何安全问题的凭据。

我的想法是在 PowerShell 中创建一个运行脚本的任务,但由于某种原因它无法正确执行,我不明白为什么。

我的任务创建如下:

$taskName = "WeeklyMaintance"
$User = "NT AUTHORITY\SYSTEM"
$Trigger = New-ScheduledTaskTrigger –Daily -At "08:14"
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "D:\Some SW\_Scripts\testing.ps1"
Register-ScheduledTask -TaskName $taskName -Trigger $Trigger -User $User -Action $Action -RunLevel Highest

脚本看起来像这样

$Logpath = "D:\Some SW\_Scripts"
$logname = "Log.txt"
function Write-Log {
    Param ([string]$logstring)
    $timestamp = Get-Date -Format "dd.MM.yyyy HH:mm:ss"
    $log = "[$timestamp]: $logstring"
    Add-Content -Value $log -Path "$Logpath\$logname"
}
Write-Log "My Test for research worked"

日志文件已经创建,正常执行时它工作得很好,但在我创建任务并使用它不会启动的任务运行它时有些放松。

我在这里创建任务或使用系统有问题吗?

编辑:

我发现那一定是“坏人”的唯一路径。

当我将路径从“D:\Some SW_Scripts”更改为“D:\Test”时

过去我对此有疑问,需要在操作中添加“ -File”参数。

$taskName = "WeeklyMaintance"
$User= "NT AUTHORITY\SYSTEM"
$Trigger= New-ScheduledTaskTrigger –Daily -At "08:14"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File `"D:\Some SW\_Scripts\testing.ps1`""
Register-ScheduledTask -TaskName $taskName -Trigger $Trigger -User $User -Action $Action -RunLevel Highest

我有同样的问题。

  • 我有一个executer.ps1文件试图执行backup.ps1文件。
  • 当我尝试直接运行backup.ps1文件时,一切正常; 但是,当我尝试在executer.ps1中执行它时, New-ScheduledTaskAction无法执行它。
  • 正如-File提到的,我在该行中添加了 -File 并明确写下了引号之间的路径,但对我不起作用。
  • 最后,我将该行修改为: New-ScheduledTaskAction -Execute $powerShellExe -Argument "-executionpolicy bypass -noprofile -file $scriptDirectory"它对我有用。
[string]$scriptDirectory = "C:\Users\<username>\Desktop\PS\backup.ps1"
[string]$powerShellExe = "PowerShell.exe"
[string]$taskName = "BackupTask"
[string]$description = "Test backup task"
[string]$userId = "NT AUTHORITY\SYSTEM"

$trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 3 -At 12:58:05pm
$principal = New-ScheduledTaskPrincipal -UserID $userId -LogonType S4U
$settings = New-ScheduledTaskSettingsSet -MultipleInstances Parallel -DontStopIfGoingOnBatteries
$action = New-ScheduledTaskAction -Execute $powerShellExe -Argument "-executionpolicy bypass -noprofile -file $scriptDirectory"  # Specify what program to run and with its parameters

Register-ScheduledTask -TaskName $taskName -Trigger $trigger -Action $action -Description $description -Settings $settings -Principal $principal

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM