Это создает задачу, которая работает и записывает в файл:
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
Поэтому я не могу понять, почему первая задача записывает в файл, а вторая - нет.
powershell someexe --help
или даже powershell someexe.exe --help
: Если имя исполняемого файла используется без префикса пути, оно запускается, только если оно находится в пути среды. Без него PowerShell не запускается из текущего каталога.
Использовать абсолютный путь к исполняемому файлу в /tr
аргумент (например, powershell c:\myexes\someexe.exe --help
).
Избегайте использования относительных путей (например, powershell .\someexe.exe --help
) так как Текущий каталог .\
немного неясно, так как начальный каталог не определено точно и однозначно.