Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用任务计划程序进行调度后未创建PowerShell脚本的输出文件_Batch File_Powershell 2.0_Taskscheduler - Fatal编程技术网

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

Batch file 使用任务计划程序进行调度后未创建PowerShell脚本的输出文件,batch-file,powershell-2.0,taskscheduler,Batch File,Powershell 2.0,Taskscheduler,我制作了一个PowerShell脚本,它可以查看一些日志,并将输出保存在脚本中创建的error.txt中,在单独运行时运行良好。 但是,当我使用任务调度器将其计划为自动执行时,并没有创建输出文件error.txt。休息一切正常 以下是我的脚本: $MODIFED=获取项目C:\Program Files x86\Apache Software Foundation\Apache2.2\logs\error.log| Foreach{$\ LastWriteTime.ToLongTimeStrin

我制作了一个PowerShell脚本,它可以查看一些日志,并将输出保存在脚本中创建的error.txt中,在单独运行时运行良好。 但是,当我使用任务调度器将其计划为自动执行时,并没有创建输出文件error.txt。休息一切正常

以下是我的脚本:

$MODIFED=获取项目C:\Program Files x86\Apache Software Foundation\Apache2.2\logs\error.log| Foreach{$\ LastWriteTime.ToLongTimeString} $DateTime=获取日期-格式ddd MMM dd HH:mm:ss yyyy $DateTime1=获取日期-格式ddd MMM dd $Time4=获取日期-格式HH echo$Time4 $test=$Time4-1 echo$测试 $test2=$DateTime1++$test echo$test2 $a=获取内容C:\Program Files x86\Apache软件基金会\Apache2.2\logs\error.log| 其中对象{$\匹配$test2}| 其中对象{$\匹配错误} 如果一美元{ 获取内容C:\ProgramFilesx86\Apache软件基金会\Apache2.2\logs\error.log| 其中对象{$\匹配$test2}| 其中对象{$\匹配错误}| Out文件-Append error.txt }否则{ echo-$DateTime--上一小时没有错误-| Out文件-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脚本,并以相同的方式对其进行调度,但我遇到了相同的结果,即单独使用任务调度程序时,它工作正常,但我得到了相同的结果。

感谢Elzooilgico和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 
}

计划任务未从您认为的位置运行。它们通常从%systemroot%\system32运行。考虑到这一点。此外,它们可能在系统帐户或某些用户凭据下运行。检查权限。此外,无论用户是否为日志用户,计划任务是否设置为运行?您将计划任务的工作目录定义为什么?运行任务的用户是否具有该目录的写访问权限?我建议将任务设置为在具有足够系统权限的用户帐户下运行,并在操作选项卡Yes you is right@elzooilogico中的参数下设置初始路径。我检查了%SystemRoot%\system32\WindowsPowerShell\v1.0,在那里找到了我的error.txt,现在我已经在powershell脚本中给出了路径,它运行良好。谢谢你的帮助,我需要学习很多东西