2014-10-10 148 views
4

在计划任务中运行PowerShell脚本时遇到问题。即使脚本已经注销了最后一行“完成!”,它仍然停留在Running中。而且它看起来也完全符合我的要求。我错过了什么?计划的PowerShell任务,卡住​​运行

当从Run在Windows中运行它,它也似乎很动听:powershell -file "D:\_temp\copy_bat\copy_one_reprint_folder.ps1"

Seetings任务计划程序是:

  • 具有完全特权时
  • 运行weither用户登录或不
  • 运行
  • 动作,启动程序powershell.exe
    • -file "D:\_temp\copy_bat\copy_one_reprint_folder.ps1"

Stuck in Running History in TS

如有需要,请参见下面的代码。

# 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 

回答

10

它解决了。

它的工作原理,愚蠢的我没有按任务调度程序中的F5(更新)来更新gui中任务的状态。

其实我很确定我是这样做的,但显然不是。

+0

最愚蠢的是UI仅仅是部分事件驱动的,所以我们在启动时会自动看到,而不是在完成时看到。我在这个问题上浪费了一个小时。 – Mc128k 2017-11-26 14:07:36