2017-11-20 11 views
0

を殺すために私はに探しています:スクリプトが起動したアプリケーション

  • はフォルダ
  • の内容は、それがより長く実行される場合Killコマンド(Stop-Process)に入れ、その後アプリケーション
    • を実行して削除します指定された期間。

しかし、私が開始する場所がわからないんだけど。助言がありますか?

+2

は、タスクスケジューラのための仕事のようですね。 – mjolinor

+0

あなたは 'Stop-Process'で正しい軌道に乗っています。 'Test-Path'、' Remove-Item'、 'Start-Process'、' Get-Process'のような他のコマンドレットもあります。 –

答えて

-1

アプリケーションをPowerShellスクリプトから起動し、そのスクリプトで待機している場合...Stop-Processを呼び出す前に、スクリプトの時間を記録する方法が必要です。あなたはまた、あなたが殺すつもりのプロセスを知っていることを確認する必要があります。

シンプルな実装がループ内でStart-Sleepを使用することができます。

$pid = PID OF THE RUNNING APPLICATION 
$iter = 0 
while((Get-Process -Id $pid)){ 
    $iter++ 
    Start-Sleep -Seconds 1 
    if($iter -gt 60) { 
     Stop-Process -Id $pid 
     break 
    } 
} 

あなたのプロセスが別の場所で開始された場合は、プロセスの開始時間をプルする必要がある場合があります。あなたはその後、一定時間前に開始APP.EXEのインスタンスを探すことができます

Get-WmiObject -Class Win32_Process -Filter "Name = 'APP.exe'"-Property Name,CreationDate 

:あなたはWMIクエリをしようとする場合がありますので、これはGet-Processで返されていないようです。

+0

'Get-Process'によって' StartTime'が返されます - '(Get-Process firefox).StartTime' –

+0

ローカルの管理者権限を持っているかどうかは、ちょっとしたテストに基づいているかもしれませんが、 。 –

-1

アイテム(フォルダ/ファイル)を削除しようとする前にそれが存在チェック:

$folder = "C:\folder" 
if (Test-Path $folder) { Remove-Item $folder -Recurse } 

停止処理それが30分間実行されていた場合:

Get-Process firefox | Where StartTime -lt (Get-Date).AddMinutes(-30) | Stop-Process -Force 
関連する問題