我需要运行一个 32 位 PowerShell 脚本,该脚本采用三个参数作为Windows Server 2008 R2 中的计划任务。该脚本启动一个 FileSystemWatcher,所以我需要让它保持活动状态,以便它可以继续接收新文件。
如果您要略读,您可能应该查看下面“参数”下的内容。
我创建了一个 PowerShell 脚本,它可以在我的 Windows Server 2008 R2 机器上的 x86 PowerShell 控制台中正常运行。它创建一个 FileSystemWatcher,并为文件创建事件注册一个动作。因为我需要 FileSystemWatcher 继续观察,所以我需要 PowerShell 继续运行,而不是在脚本被触发后立即退出:
该脚本采用三个参数:
但是,我无法让脚本作为计划任务正确运行。我认为问题在于我使用的参数,但我不知道哪些参数是正确的。
由于需要脚本在32位PowerShell中运行,我将定时任务的程序设置为%SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe。
我已确保在 32 位 PowerShell 中将本地计算机的执行策略设置为 RemoteSigned。
我为我的论点尝试了几种不同的变体。以下在 Console 中运行,但在Task Scheduler 中以某种方式失败:
任务运行,但它没有写入日志文件,这表明它可能甚至没有启动 FileSystemWatcher。在任何情况下,它在创建文件时都不会拾取文件:
powershell -Noexit -File "D:\Scripts\myScript.ps1" "\\otherServer\share\folder\subfolder\" "\\someserver.domain.edu\D$\working_directory\" "\\otherServer\share\folder\my_log.txt"
Run Code Online (Sandbox Code Playgroud)
任务以代码 0xFFFD0000 退出(请参阅Powershell 计划任务的 0xFFFD0000 的最后结果)。我确信该任务正在作为适当的服务帐户运行,该帐户可以访问参数中使用的网络共享。
powershell -Noexit -File 'D:\Scripts\myScript.ps1' '\\otherServer\share\folder\subfolder\' …Run Code Online (Sandbox Code Playgroud)