通过任务计划程序访问目录中具有特殊字符的脚本

Accessing a script in a directory with special characters via Task Scheduler

我想要运行以下内容:

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -command "& "^""\srv01\sysvol\ad.contoso.com\Policies\{AC6E02A7-BEDE-4D4D-A171-D4DA1E0AF2CA}\Machine\Scripts\Startup\removeAutoStartKey.ps1"^"

为了删除受保护的 'Run' 注册表项,当 运行 作为用户时,Microsoft 程序使用一些内部漏洞来绕过权限问题不断重新创建该注册表项。由于 NT/SYSTEM 具有完全权限并且可以将其删除,因此任务需要 运行 作为具有最大可能权限的 system/root 帐户。

在无休止地尝试越来越复杂的转义序列后,我一直 运行 遇到 0x8070005“未找到文件”错误。为了 运行 目录中包含非基本字符(如空格、括号、破折号等)的脚本,到底需要在“添加参数(可选)”字段中输入什么?

因为您所做的只是调用一个.ps1文件使用-File CLI 参数 代替-Command:脚本文件路径的简单double-quoting 即可:

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "\srv01\sysvol\ad.contoso.com\Policies\{AC6E02A7-BEDE-4D4D-A171-D4DA1E0AF2CA}\Machine\Scripts\Startup\removeAutoStartKey.ps1"

通过 -Command 调用 - 仅当您需要将命令解释为 作为 PowerShell 代码 时才有必要 - 转义任何 嵌入 " as \" (原文如此):

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -Command "& \"\srv01\sysvol\ad.contoso.com\Policies\{AC6E02A7-BEDE-4D4D-A171-D4DA1E0AF2CA}\Machine\Scripts\Startup\removeAutoStartKey.ps1\""

就是说,由于您的脚本文件路径 不需要 引用,因此即使只是
-Command "\path\to\your.ps1" 也可以。

另请参阅: