使用任务计划程序进行调度后未创建 PowerShell 脚本的输出文件

问题描述 投票:0回答:1

我制作了一个 PowerShell 脚本,它将监视一些日志并将输出保存在

error.txt
(在脚本内创建)中,该脚本在单独运行时工作正常。 但是,当我使用任务计划程序将其安排为自动执行时,未创建输出文件
error.txt
。其余一切正常。

以下是我的脚本:

$Modified = Get-Item "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs\error.log" |
            Foreach {$_.LastWriteTime.ToLongTimeString()}

$DateTime = Get-Date -format "ddd MMM dd HH:mm:ss yyyy"
$DateTime1 = Get-Date -format "ddd MMM dd"
$Time4 = Get-Date -format "HH"
echo $Time4

$test = ($Time4) - 1
echo $test

$test2 = $DateTime1 +" " + $test
echo $test2

$a = Get-Content "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs\error.log" |
     Where-Object {$_ -match $test2} |
     Where-Object {$_ -match "error"}

if ($a) {
  Get-Content "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs\error.log" |
    Where-Object {$_ -match $test2} |
    Where-Object {$_ -match "error"} |
    Out-File -Append  error.txt
} else {
  echo -$DateTime---no-errors-in-last-hour- |
    Out-File -Append error.txt 
}

当我安排它每 5 分钟运行一次,而不是创建

error.txt
并显示
echo
部分时,它只显示 echo 部分。

以下是我传递给调度程序以运行 PowerShell 的参数:

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

以下是运行PowerShell脚本的争论:

-File "C:\Users\gurlove.chopra\Desktop\SAMPLE_WATCHER8.PS1"

任何人都可以帮助我了解为什么我的文件没有被创建吗?

我还尝试创建一个 .BAT 文件,该文件调用此 PowerShell 脚本并以相同的方式安排它,但我遇到了相同的结果,即单独它工作正常,但使用任务计划程序我得到了相同的结果。

batch-file powershell-2.0 windows-task-scheduler
1个回答
1
投票

感谢 elzooilogico 和 Ansgar Wiechers 的关心,这是很大的帮助。

我对我的 powershell 脚本做了一些小小的更改,而不是只写文件名,我给出了完整路径,宾果它正在工作。

我的文件现在看起来像这样:

$Modified= Get-Item "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs\error.log"| Foreach {$_.LastWriteTime.ToLongTimeString()}

$DateTime= Get-Date -format "ddd MMM dd HH:mm:ss yyyy"

$DateTime1 = Get-Date -format "ddd MMM dd"

$DateTime2 = Get-Date -format "HH:mm:ss"

$Time4 = Get-Date -format "HH"
echo $Time4
$Time5 = Get-Date -format "mm"

$Time6 = Get-Date -format "ss"

$test= ($Time4)- 1
echo $test

$test2= $DateTime1 +" " + $test
echo $test2

$a= Get-Content "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs\error.log"|Where-Object {$_ -match $test2}|Where-Object {$_ -match "error"}


if ($a){
Get-Content "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs\error.log"|Where-Object {$_ -match $test2}|Where-Object {$_ -match "error"} | Out-File -Append C:\Users\gurlove.chopra\Desktop\error.txt
}
else{
echo -$DateTime---no-errors-in-last-hour-|Out-File -Append C:\Users\gurlove.chopra\Desktop\error.txt 
}
© www.soinside.com 2019 - 2024. All rights reserved.