我制作了一个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
部分时,它只会显示回声部分。
以下是我传递给调度程序以运行PowerShell的参数:
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
以下是运行PowerShell脚本的论据:
-File "C:\Users\gurlove.chopra\Desktop\SAMPLE_WATCHER8.PS1"
有人可以帮我解释为什么我的文件没有被创建吗?
此外,我尝试创建一个.BAT文件,该文件调用此PowerShell脚本并以相同方式安排它,但我遇到了相同的结果,单独它工作正常但使用任务计划程序我得到了相同的结果。
答案 0 :(得分: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
}