从计划任务运行的 PowerShell 脚本:操作启动失败,目录名无效

从计划任务运行的 PowerShell 脚本:操作启动失败,目录名无效

我有一台 Windows Server 2012 R2 服务器正在运行一个包含三个操作的计划任务,每个操作都运行 PowerShell 脚本:

行动

以下每个操作都“从”相关(且正确)的目录“开始”:

单动

原来,第三个动作——应用ABP- 的设置方式与其他两个完全相同,例如,一个简单的“开始于”文件夹,然后.\ApplyABPs.ps1作为参数。这按预期工作。

我想在后一个脚本中添加一些日志记录,因此我添加了以下代码来点源我的共享FunctionsLibrary.ps1文件,创建一个日志文件并写入它:

# Call functions file...
. (Join-Path "C:\scripts\" FunctionLibrary.ps1)

# Create a log file
$LogFile = Create-Log -Location $LogfileLocation

Write-Log -Important -Text "==== ApplyABPs.ps1 ====="

该脚本的附加内容ApplyABPs和此FunctionLibrary.ps1脚本在其他文件中均可运行。

如果我ApplyABPs.ps1从 PowerShell ISE 运行此脚本,它会按预期工作 - 创建日志文件并写入其中。

但是,当我尝试运行计划任务时,前两个操作照常运行,但第三个操作失败:

任务失败

该代码没有给我提供太多细节,但Last Run Result任务计划程序顶部显示The directory name is invalid. (0x8007010B)

因此...出于测试目的,我尝试将相同的代码FunctionLibrary.ps1和脚本代码修改添加到其他两个操作中。然后任务计划程序立即失败,并为第一个操作返回了相同的错误。

当我再次取出代码时,操作就可以起作用。

我尝试改变计划任务调用 PowerShell 的方式(因此顶部屏幕截图中的-executionpolicy bypass-noprofile-file参数)但这没有什么区别。

根据directory invalid错误消息,我想知道 PowerShell(由计划任务调用时)是否无法访问点源文件,或者类似的东西?

如果有人可以解释这个特定的错误,或者深入了解任务计划程序如何调用 PowerShell(以及它使用的目录/相对性),那就太理想了。

答案1

使用以下语法在任务计划程序中运行 PowerShell 脚本:

程序/脚本:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

添加参数:-NoLogo-Noninteractive-Noprofile-命令“&{C:\ScriptFolder\get-LicensingInputFromAD.ps1}”

并在任务参数字段中使用每个.ps1 文件的完整路径\文件名。

相关内容