Powershell v5.1 中的问题 w/Register-ScheduledTask

Problem w/Register-ScheduledTask in Powershell v5.1

好的,我有以下代码,它从我的主机检索文件进行调整,然后在我的测试机上创建一个计划任务。 程序来自测试机运行。这就像它应该的那样工作。

$SRCXMLPath = "\Dellxps8920\BEKDocs-DellXPS8920\TaskSchedulerExports\Tasks"
$DestXMLPath = "G:\BEKDocs\TaskSchedulerExports\Standard"
$XMLFile = "Backup Report.xml"

$GCArgs = @{Path = 
             $(Join-Path -Path $SRCXMLPath -ChildPath $XMLFile)}

[xml]$xml = Get-Content @GCArgs

$xml.Task.RegistrationInfo.Author #Has no effect on running!

$xml.Task.Principals.Principal.UserId

<#+----------------------------------------------------+
  | Note: You can use either the text description of   |
  |       the account or the Registry designation.     |
  +----------------------------------------------------+
#>

$xml.Task.Principals.Principal.UserId = 
  'DellXPS8700\Bruce'

#  "S-1-5-21-1944453205-1635450679-2182824496-1001"

$xml.save()

& schtasks.exe /create /tn "Backup Report" /xml "$(Join-Path -Path $DestXMLPath -ChildPath $XMLFile)"

但是,我正在尝试通过 Register-ScheduledTask cmdlet 将其转换为完整的 PowerShell,以消除对 schtasks.exe 的调用。 使用以下测试代码,我始终得到显示的错误。

[xml]$Task = Get-Content "G:\BEKDocs\TaskSchedulerExports\Standard\Backup Report.xml"
$RTArgs = @{TaskName = "Backup Report"
            TaskPath = "\"
            XML      = $Task
            Force    = $True}

Register-ScheduledTask @RTArgs

错误信息:

Register-ScheduledTask @RTArgs
Register-ScheduledTask : The task XML is malformed.
(1,2)::ERROR: incorrect document syntax
At line:7 char:1
+ Register-ScheduledTask @RTArgs
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (PS_ScheduledTask:Root/Microsoft/. 
   ..S_ScheduledTask) [Register-ScheduledTask], CimException
    + FullyQualifiedErrorId : HRESULT 0x8004131a,Register-ScheduledTask

有人有什么想法吗?

请注意:.xml 文件与 post 顶部的代码完美配合,或者如果它是在 TaskSheceuler 中手动导入的。

您正在将 XML 文件作为 XML 对象读取,但 cmdlet 需要一个字符串对象。

Register-ScheduledTask
        [-Force]
        [[-Password] <String>]
        [[-User] <String>]
        [-TaskName] <String>
        [[-TaskPath] <String>]
        [-Xml] <String>
        [-CimSession <CimSession[]>]
        [-ThrottleLimit <Int32>]
        [-AsJob]
        [<CommonParameters>]

更改行以将文件作为一个字符串读入,您应该已准备就绪。

$Task = Get-Content "G:\BEKDocs\TaskSchedulerExports\Standard\Backup Report.xml" -raw