任务计划程序运行任务但不执行 PowerShell 脚本

任务计划程序运行任务但不执行 PowerShell 脚本

正如问题所述。

我正在尝试使用 Windows Server 2012R2 上的任务计划程序安排 PowerShell 脚本每小时运行一次。这是一个远程服务器。

任务计划程序运行任务,没有任何错误。在任务历史记录中,它显示Action StartedAction CopletedTask Completed

所选的任务计划程序的设置如下:

常规 - 无论用户是否登录都运行,以最高权限运行。
操作 -> 操作启动程序操作 -> 程序/脚本“C:\Program Files\PowerShell\7\pwsh.exe”(pwsh.exe 的位置)
操作 -> 添加参数 -Executionpolicy Bypass -File“R:\Public\IT\Vantage_Utilities\CNC_Scripts\File Transfer\Fastems\CNC_File_Transfer_Fastems.ps1”
位置 -> 本地计算机的名称

该脚本生成一个日志文件,它清楚地显示该脚本根本没有执行。手动执行时(右键单击 -> 使用 PowerShell 7 运行),它可以完美运行。

我尝试更改脚本的本地磁盘,但它是在 R:\ 还是 C:\ 上没有任何区别

我开始认为脚本本身存在问题,因为还有另一个使用任务计划程序中的 PS Core 7 执行的脚本可以正常工作。因此,我将在此处发布该脚本。这是一个简单的批处理文件,可将一个文件夹的所有内容从一台服务器移动到另一个服务器。我通过两个函数实现了这一点。Function MoveFiles移动父文件夹的所有内容(不包括名为“Mazak”的子文件夹)。第二个函数Function MoveMazakFiles 仅移动“Mazak”的内容。(我完全知道我可以使用更少的代码行来完成此操作,但这不是重点)

代码:

$logPath = "\\MMS25163S1\Public\IT\Vantage_Utilities\CNC_Scripts\File Transfer\Fastems\Log.txt"
$trancriptPath = "\\MMS25163S1\Public\IT\Vantage_Utilities\CNC_Scripts\File Transfer\Fastems\LogTranscript.txt"
$getDate = Get-Date -Format "dddd MM/dd/yyyy HH:mm "
$counter = 0
$mazakCounter = 0
Start-Transcript -Path $trancriptPath -Append
Add-Content -Path $logPath -Value ("LOG CREATED $getDate") -PassThru
#Sources 
$srcMca = "\\MMS25163S1\Public\NcLib\FromNC\*"
$srcMcaNameChg ="\\MMS25163S1\Public\NcLib\FromNC"
$srcMazak= "\\MMS25163S1\Public\NcLib\FromNC\Mazak\*"
$srcMcaNameChgMazak = "\\MMS25163S1\Public\NcLib\FromNC\Mazak"
#Destination 
$destMca = "\\Sidney2\MfgLib\RevisedPrograms\MC-A"
#Time with milliseconds
$time = (Get-Date -Format hh-mm-fff-tt).ToString() 

Function MoveFiles{
    Param(
        [string]$src,
        [string]$dest,
        [string]$srcNameChange
    )
   Get-Item -Path $src -Exclude *Mazak* -ErrorAction SilentlyContinue | ForEach-Object{
        $counter++
        $fileName = $_.BaseName
        $fileNameExt = $_.Name
        Write-host $fileName -ForegroundColor Green
        Rename-Item -Path "$srcMcaNameChg\$fileNameExt"  -NewName ($fileName+"_"+"(Time-$time)"+$_.Extension);
        Add-Content -Path $logPath -Value ("Name changed: Time stamp added to $fileName ") -PassThru
    }
    Move-Item -Path $src -Exclude *Mazak*  -Destination $dest -Force
   Add-Content -Path $logPath -Value ("$counter file(s) moved to $dest") -PassThru
} 
MoveFiles -src $srcMca -dest $destMca -srcNameChange $srcMcaNameChg

Function MoveMazakFiles{
    Param(
        [string]$srcMazak,
        [string]$dest,
        [string]$srcNameChange
    )
    Get-ChildItem $srcMazak -Recurse -ErrorAction SilentlyContinue | ForEach-Object{
        $mazakCounter++
        $fileName = $_.BaseName
        $fileNameExt = $_.Name
        Write-host $fileName -ForegroundColor Green
        Rename-Item -Path "$srcMcaNameChgMazak\$fileNameExt"  -NewName ($fileName+"_"+"(Time-$time)"+$_.Extension);  
    }
    Move-Item -Path $srcMazak  -Destination $dest -Force
    Add-Content -Path $logPath -Value ("$mazakCounter file(s) from Mazak folder moved to $dest") -PassThru
}
MoveMazakFiles -srcMazak $srcMazak -dest $destMca -srcNameChange $srcMcaNameChg

Stop-Transcript

我已经搜索解决方案好几天了。任何帮助我都感激不尽。提前致谢!

相关内容