任务计划程序触发的Powershell脚本不执行条件逻辑

时间:2014-09-16 19:15:45

标签: powershell

我在Server 2012上运行了一个基本的PowerShell(v4)脚本。我决定让Task Scheduler任务。任务计划程序实例作为域和计算机管理员运行,运行用户是否已登录并以最高权限运行。它是为Windows Server 2012 R2配置的。

它启动了一个程序" Powershell"这是我的论点:" -ExecutionPolicy Bypass -file F:\ AdMgmt \ scripts \ newcheckandcopy.ps1"

问题:它执行一些脚本就好了 - 但是,我有一个" If / Else"它忽略的声明。我现在用两个脚本尝试了这个,并且任务调度程序总是执行得很好,但是没有处理If / Else的东西 - 它只是跳过它并运行其他所有脚本。

这是脚本的文本(当它作为运行任务的同一帐户登录时,它从powershell控制台完美运行):

$path = 'Q:\'  
$stats = 0  
$msg = ''  
$days = 1  
$hours = 0  
$mins = 0
$logtime = Get-Date -uFormat "%y%m%d%H%M" 


$files = @(Get-ChildItem -Recurse -Path $path -Include '*.*' | ?{ $_.LastWriteTime -lt (Get-Date).AddDays(-$days).AddHours(-$hours).AddMinutes(-$minutes) -and $_.psIsContainer -eq $false})  


if ($files -ne $null) {  
  $f_names = [System.String]::Join('|',$files)  
  $msg = 'Message: ' + $f_names
  $stats = $files.Count
  Send-MailMessage -to "domain@test.com" -from "domain@test.com" -subject "FileMaker Files older than 1 Day" -body $msg -smtpserver "smtp-relay.test.com"
} else {  
  $msg = 'Message: 0 files exceed defined age'
  Send-MailMessage -to "domain@test.com" -from "domain@test.com" -subject "FileMaker Files OK" -body $msg -smtpserver "smtp-relay.test.com"
}  

Copy-Item Q:\* F:\admgmt\ -recurse
Add-Content f:\admgmt\logs\checkandcopy.txt $logtime
Write-Host $msg  
Write-Host "Statistic: $stats" 

1 个答案:

答案 0 :(得分:0)

我猜你的问题是你在用户上下文之外运行脚本。 Q:\驱动器将无法使用。 PowerShell支持UNC路径,因此您可以替换Q:\指向的实际路径。