Powershell obtém o nome do arquivo do processo morto

0

Eu tenho uma linha de código do Powershell que mata um processo que está em execução há mais de 30 minutos (Excel). Como eu também posso obter o nome do arquivo do processo morto?

Get-Process excel | 
    Where { $_.StartTime -lt (Get-Date).AddMinutes(-30) } | 
    Stop-Process -Force
    
por Grill-Britt 01.11.2016 / 14:57

2 respostas

1

Isso funciona para mim, mas pode não ser o que você precisa:

$filename = get-process excel | where-object { $_.StartTime -lt (Get-Date).AddMinutes(-1) } | select-object mainwindowtitle
write-host $filename 
get-process excel | where-object { $_.StartTime -lt (Get-Date).AddMinutes(-1) } | stop-process -force

Isso gera algo na linha de: @{MainWindowTitle=Microsoft Excel - testdata.xlsx]}

Você pode querer anexar tudo a um log para adicionar algo como | out-file c:\testlog.txt no final de $filename .

Pode também ser bom obter um carimbo de data e hora.

Edit: infelizmente isso fecha todos os arquivos do Excel abertos

Edit2: Eu experimentei um pouco graças ao comentário do Seth e eu consegui que isso funcionasse:

Get-Process excel | Where-Object {$_.StartTime -lt (Get-Date).AddMinutes(-30)} | ForEach-Object {
    echo $_.Id, $_.MainWindowTitle;
    Stop-Process -Force -Id $_.id
}

Ele gera na janela o que ele fecha da seguinte forma:

72148
Microsoft Excel - Book1
73712
Microsoft Excel - Book2
    
por 02.11.2016 / 14:13
0

Tente este comando abaixo,

c:\> powershell -command "get-Process | where-Object {$_.mainWindowTitle} | format-table id,name,mainwindowtitle -AutoSize"

Isso listará todos os processos que possuem um título de janela não vazio.

Armazene esta lista em algum arquivo usando o comando PS,

Então,

Use código para matar processos em execução, como

Get-Process excel | Where { $_.StartTime -lt (Get-Date).AddMinutes(-30) } | Stop-Process -Force

Em seguida, liste novamente todos os processos que têm um título de janela não vazio e compare com a lista anterior.

Você obterá o caminho do processo do processo eliminado e, usando a avaliação do padrão de sequência, poderá obter o nome do arquivo do processo.

    
por 01.11.2016 / 17:00

Tags