我在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"
答案 0 :(得分:0)
我猜你的问题是你在用户上下文之外运行脚本。 Q:\驱动器将无法使用。 PowerShell支持UNC路径,因此您可以替换Q:\指向的实际路径。