简体   繁体   English

计划的Powershell任务,卡住​​了跑步

[英]Scheduled Powershell Task, stuck Running

I have problems when running a powershell script in Scheduled Tasks. 在计划任务中运行PowerShell脚本时遇到问题。 It gets stuck in Running, even though the Transcript has logged out the last row "Done!" 即使Transcript已经记录了最后一行“Done!”,它仍然停留在Running中。 and it also looks like it has done exactly what i want it to. 而且看起来它完全符合我的要求。 What am I missing? 我错过了什么?

When running it from Run in Windows it also seems fine: powershell -file "D:\\_temp\\copy_bat\\copy_one_reprint_folder.ps1" 从Windows中的Run它似乎也很好: powershell -file "D:\\_temp\\copy_bat\\copy_one_reprint_folder.ps1"

Seetings in Task Scheduler is: 任务计划程序中的Seetings是:

  • Run with full priviliges 以完全的特权运行
  • Run weither user is logged on or not 运行这两个用户是否已登录
  • Action, start program powershell.exe 动作,启动程序powershell.exe
    • -file "D:\\_temp\\copy_bat\\copy_one_reprint_folder.ps1"

坚持跑步TS的历史

Please see code below if needed. 如果需要,请参阅下面的代码。

# PowerShell RePRINT copy first folder, sorted on lastModified
function timestamp
{
    $ts = Get-Date -format s
    return $ts
}

$fromDirectory = "D:\_temp\copy_bat"
$toDirectory = "D:\_temp\in_dummy"
$extractGUIDdir = ""
$docTypeDir = ""

# Logging
#########
$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference = "Continue"
Start-Transcript -path $fromDirectory\copy_one_reprint_folder.log.txt -append
###########


Write-Host ""
Write-Host (timestamp) "Copy RePRINT extract started"
Write-Host (timestamp) "============================"

Get-ChildItem -path $fromDirectory | ?{ $_.PSIsContainer } | Sort-Object CreationTime | `
    Where-Object {$_.name -ne "_copied"} | `
    Select-Object -first 1 | `
        Foreach-Object{
            Write-Host (timestamp) $_.name
            $extractGUIDdir = $_.FullName
            Get-ChildItem -path $extractGUIDdir |  ?{ $_.PSIsContainer } | Where-Object {$_.Name -match "Purchase Order \(-999999997\)" -or $_.Name -match "Logistics documents \(-1000000000\)" -or $_.Name -match "Specifications \(-999999998\)"} | `
                Foreach-Object{
                    Write-Host (timestamp) "  " $_.Name
                }
            Write-Host ""

            Write-Host "These folders (document types), were also found but will not be included"
            Get-ChildItem -path $extractGUIDdir -Exclude "Logistics documents (-1000000000)", "Purchase Order (-999999997)", "Specifications (-999999998)" | ?{ $_.PSIsContainer } | `
                Foreach-Object{
                    Write-Host (timestamp) " - " $_.name
                }
            Write-Host ""

            Get-ChildItem -path $extractGUIDdir | ?{ $_.PSIsContainer } | Where-Object {$_.Name -match "Purchase Order \(-999999997\)" -or $_.Name -match "Logistics documents \(-1000000000\)" -or $_.Name -match "Specifications \(-999999998\)"} | `
                Foreach-Object{
                        $temp_name = $_.FullName
                        Write-Host (timestamp) "copying files from " $_.FullName
                        Write-Host (timestamp) "                    to "  $toDirectory
                        #Copy-Item ($_.FullName)\*.* $toDirectory
                        Write-Host (timestamp) " copying meta-files..."
                        Copy-Item $temp_name\*.meta $toDirectory -Filter *.meta
                        Write-Host (timestamp) " copying pdf-files..."
                        Copy-Item $temp_name\*.pdf $toDirectory -Filter *.pdf
                        if(Test-Path $temp_name\*.* -Exclude *.meta, *.pdf)
                        {
                            Write-Host (timestamp) " WARNING/ERROR not all documents have been moved. Only PDFs was moved!"
                            Write-Host (timestamp) " Check folder for other document-types."
                        }
                }
                Move-Item $extractGUIDdir $fromDirectory\_copied
        }

Write-Host (timestamp) " DONE!"

# Stop logging
Stop-Transcript

It is solved. 它解决了。

It works, stupid me did not press F5 (update) in task scheduler to update the status of the task in the gui. 它工作,愚蠢我没有按任务调度程序中的F5 (更新)来更新gui中任务的状态。

Actually I was quite certain I did this, but apparently not. 其实我很确定我这样做了,但显然不是。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM