PowerShell初心者です。
自身で起動中のスクリプトと同じコマンドで実行しているプロセスを検知し、他方のプロセスをkillしようと考えております。要は二重起動のチェックをしたいです。
現在コマンドラインで確認しているのですがどうもうまくいきません。
やろうとしている操作は以下です。
(1)ファイルにプロセス情報を出力。
PS C:\> $tempfile = "C:\pswork\servicemon\temp.log"
PS C:\> Get-WmiObject win32_process `
| select Name,
ProcessId,
CommandLine `
| sort Name `
| Format-Table -AutoSize `
| Out-File -FilePath $tempfile -width 1000
(2)自分のPID以外のプロセス情報を取得
PS C:\> $mypid = $PID
PS C:\> $killpidtmp = Get-Content $tempfile | Select-String -Pattern ".*powershell.exe.*svmon131_loop.*" |Select-String -NotMatch -Pattern "\s$mypid\s"
PS C:\> echo $killpidtmp
powershell.exe 2024 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\pswork\servicemon\svmon131_loop.ps1
(3)splitでプロセス番号のみを取得。
PS C:\> $killpid = echo $killpidtmp |% {$($_-split(" "))[1]}
PS C:\> echo $killpid
★ここがうまく取得できません。空白しか取得できていません。
(4)最終的には取得したPIDでプロセスを終了。
PS C:\pswork\servicemon> Stop-Process -ID $killpid
Bシェルで同様のスクリプトがあったので、それを参考にPowerShellで書こうとしているので、
そもそも無理があるのかもしれないかと考えています。
上記の方法でなくてもよいので、二重起動のチェックと該当プロセスの停止で参考となる情報があれば教えて頂きたいです。
No.1ベストアンサー
- 回答日時:
Get-WmiObject win32_process |
Where {$_.Name -eq "powershell.exe" -and $_.CommandLine -match "svmon131_loop" -and $_.ProcessId -ne $PID} |
ForEach {Stop-Process -ID $_.ProcessId}
という感じでどうでしょう?
(1)すべてのプロセスを列挙
(2)(1)のうち、「Name="powershell.exe" AND CommandLineが正規表現"svmon131_loop"にマッチ AND ProcessIdが自分以外」を満たすプロセスを抽出
(3)(2)で抽出したプロセスに対して、各々Stop-Processを実行
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- その他(SNS・コミュニケーションサービス) ツイッターの情報漏洩について 2 2022/09/12 14:46
- Windows 10 バッチファイルでのエクスプローラー終了 1 2022/05/30 14:32
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- 環境学・エコロジー 二酸化炭素の排出 1 2023/08/07 16:40
- その他(プログラミング・Web制作) マウスを使用してpowershellのプログラムを起動して、引数リストを渡したい 1 2022/11/07 21:39
- Firefox(ファイヤーフォックス) firefoxが頻繁に停止する 1 2023/01/09 10:26
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
タスクバーの音量アイコンをク...
-
コマンドライン上でファイルを...
-
プロンプトが返らない
-
httpdの子プロセスがゾンビ化す...
-
System Idle Processってなに?...
-
プロセス、サービス、デーモン...
-
Powershell プロセス二重起動
-
killコマンドの終了と強制終了...
-
CPU使用率がすぐに100%になる...
-
アクロバットを終了しても、プ...
-
CPU使用率取得方法について
-
原因不明CPU使用率100%で極端に...
-
強制終了できないプロセスの強...
-
PIDからプロセス・アプリを特定...
-
プロセスがタスクマネージャー...
-
eclipseのworkspaseの削除がで...
-
win10でCPU使用率100% 表示だけ?
-
タスクマネージャのCPU率がおか...
-
ネットワーク使用率約75%維持状...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
プロセス、サービス、デーモン...
-
System Idle Processってなに?...
-
タスクマネージャのCPU率がおか...
-
タスクバーの音量アイコンをク...
-
コマンドライン上でファイルを...
-
Powershell プロセス二重起動
-
プロセスがタスクマネージャー...
-
【プログラム】 iu14d2n.tmp ...
-
Windows 10のエクスプローラー...
-
実行中のプログラムを調べるには?
-
ps コマンドのステータス。S Ss...
-
プロンプトが返らない
-
タスクマネージャで終了できな...
-
強制終了できないプロセスの強...
-
CPU使用率取得方法について
-
HP-UXでのプロセス別メモリ使用...
-
CPU使用率が常に50~10...
-
killコマンドの終了と強制終了...
-
Windowsで作れるスレッド最大数...
おすすめ情報