A tarefa do Windows falha, mas não gera erros e não grava nenhuma saída

1

Isso cria uma tarefa que funciona e grava em um arquivo:

schtasks --% /create /tn "test" /sc minute /mo 10 /ru SYSTEM /tr "powershell get-date | out-file -Encoding:ascii c:\log.log"

Isso não cria um arquivo de log e não consigo ver erros:

schtasks --% /create /tn "test2" /sc minute /mo 10 /ru SYSTEM /tr "powershell someexe --help | out-file -Encoding:ascii c:\otherlog.log"

O segundo comando não está escrevendo no arquivo de log, por quê? Mesmo se falhar, ainda deve estar gravando no arquivo. Se eu executar isso a partir da linha de comando, ele ainda gravará no arquivo:

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

Portanto, não consigo entender por que a primeira tarefa está gravando em um arquivo e a segunda não é

    
por red888 21.05.2018 / 19:30

1 resposta

3

powershell someexe --help ou até powershell someexe.exe --help : Se um nome de executável for usado sem o caminho prefixado, ele só será executado se estiver no caminho do ambiente. O PowerShell não é executado a partir do diretório atual sem ele.

Use o caminho absoluto para o executável no argumento /tr (por exemplo, powershell c:\myexes\someexe.exe --help ).

Evite usar caminhos relativos (por exemplo, powershell .\someexe.exe --help ) porque o diretório atual .\ é um pouco incerto, pois o diretório inicial não está definido com precisão e sem ambiguidade.

    
por 22.05.2018 / 00:05