を殺すために私はに探しています:スクリプトが起動したアプリケーション
- はフォルダ
- の内容は、それがより長く実行される場合Killコマンド(
Stop-Process
)に入れ、その後アプリケーション- を実行して削除します指定された期間。
しかし、私が開始する場所がわからないんだけど。助言がありますか?
を殺すために私はに探しています:スクリプトが起動したアプリケーション
Stop-Process
)に入れ、その後アプリケーション
しかし、私が開始する場所がわからないんだけど。助言がありますか?
アプリケーションを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
で返されていないようです。
'Get-Process'によって' StartTime'が返されます - '(Get-Process firefox).StartTime' –
ローカルの管理者権限を持っているかどうかは、ちょっとしたテストに基づいているかもしれませんが、 。 –
アイテム(フォルダ/ファイル)を削除しようとする前にそれが存在チェック:
$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
は、タスクスケジューラのための仕事のようですね。 – mjolinor
あなたは 'Stop-Process'で正しい軌道に乗っています。 'Test-Path'、' Remove-Item'、 'Start-Process'、' Get-Process'のような他のコマンドレットもあります。 –