Вывод не перенаправлен в файл внутри задачи Windows - PullRequest
0 голосов
/ 23 мая 2018

Я также должен заявить, что я запускаю это в контейнере Windows.

Я пытаюсь получить вывод файла aws.cmd в файл, но при запуске в задаче он не отправляет никакого вывода.не могу понять, почему.

Если я создаю следующий сценарий:

'get-date | out-file c:\logs\date.txt; C:\users\containeradministrator\appdata\Roaming\Python\Python37\Scripts\aws.cmd --version | out-file -append c:\logs\date.txt; getdate | out-file -append c:\logs\date.txt' > getdate.ps1

Затем создайте задачу:

schtasks --% /create /tn "test-date" /sc minute /mo 1 /ru SYSTEM /tr "powershell -file c:/getdate.ps1"

Задача запускает сценарий и записывает его вфайл:

PS C:\> cat C:\logs\date.txt

Wednesday, May 23, 2018 2:38:00 PM



Wednesday, May 23, 2018 2:38:02 PM

Тем не менее, когда он запускается непосредственно из консоли, он записывает вывод в файл:

PS C:\> C:\users\containeradministrator\appdata\Roaming\Python\Python37\Scripts\aws.cmd --version > C:\logs\consoletest.txt
PS C:\> cat C:\logs\consoletest.txt
aws-cli/1.15.24 Python/3.7.0b4 Windows/10 botocore/1.10.24

Что происходит здесь, я схожу с ума.Я помещаю команду aws между двумя командами get-date, которые обе запускаются, поэтому команда aws должна выполняться без ошибок, потому что она выполняет ОБА команды get-date.

EDIT: хорошо, теперь я действительно сбит с толку, если я заменюКоманда aws с ерундой по-прежнему выполняет обе команды get-date, и я вижу их вывод в файле журнала.Например, заменив команду aws на «blah.exe --fartfartfart» в скрипте и выполнив задачу, он все равно записывает оба результата get-date в файл без ошибок.ЗАЧЕМ?!скрипт должен по крайней мере потерпеть неудачу при этой неправильной команде!Я не понимаю, что происходит

EDIT2 (перенаправление всего вывода):

try {
  C:\Users\ContainerAdministrator\AppData\Roaming\Python\Python37\Scripts\aws.cmd --version *>> c:\logs\date.txt
}
catch {
  $_.Exception | out-file c:\logs\date.txt
}
get-date | out-file -apend c:\logs\date.txt

Перенаправление всего вывода Я вижу эту ошибку:

C:\Users\ContainerAdministrator\AppData\Roaming\Python\Python37\Scripts\aws.cmd
 : Traceback (most recent call last):
At C:\getdate.ps1:1 char:6
+ try {C:\Users\ContainerAdministrator\AppData\Roaming\Python\Python37\ ...
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Traceback (most recent call last)
   ::String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

  File "C:\Users\ContainerAdministrator\AppData\Roaming\Python\Python37\Scripts
\aws.cmd", line 50, in <module>
    import awscli.clidriver
ModuleNotFoundError: No module named 'awscli'

1 Ответ

0 голосов
/ 24 мая 2018
 pip install awscli --upgrade --user

Я установил с ключом --user, удалив установив его в программные файлы, и он был доступен из задачи как системный пользователь

...