Задача Windows не выполняется, но не выдает ошибок и не записывает вывод
Это создает задачу, которая работает и записывает в файл:
schtasks --% /create /tn "test" /sc minute /mo 10 /ru SYSTEM /tr "powershell get-date | out-file -Encoding:ascii c:\log.log"
Это не создает файл журнала, и я не вижу никаких ошибок:
schtasks --% /create /tn "test2" /sc minute /mo 10 /ru SYSTEM /tr "powershell someexe --help | out-file -Encoding:ascii c:\otherlog.log"
Вторая команда не записывает в файл журнала, почему? Даже если это не удается, он все равно должен записывать в файл. Если я запускаю это из командной строки, он все равно записывает в файл:
PS C:\> powershell doesntexist --help | out-file -Encoding:ascii c:\fail.log
PS C:\> cat .\fail.log
doesntexist : The term 'doesntexist' is not recognized as the name of a cmdlet, function, scrip
or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ doesntexist --help
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (doesntexist:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Поэтому я не могу понять, почему первая задача - запись в файл, а вторая - нет.
1 ответ
powershell someexe --help
или даже powershell someexe.exe --help
: Если имя исполняемого файла используется без пути с префиксом, оно запускается только в том случае, если оно находится в пути среды. PowerShell не выполняется из текущего каталога без него.
Использовать абсолютный путь к исполняемому файлу в /tr
аргумент (например, powershell c:\myexes\someexe.exe --help
).
Избегайте использования относительных путей (например, powershell .\someexe.exe --help
) потому что текущий каталог .\
немного неясно, так как каталог запуска не определен точно и однозначно.