ইমেজ পাথ উপর ভিত্তি করে প্রক্রিয়া হত্যা


1

আমি একটি পরিবেশ উত্তরাধিকারসূত্রে পেয়েছি যা দুটি ভিন্ন প্রক্রিয়া অভিন্ন নাম ব্যবহার করে কিন্তু তাদের এক্সিকিউটেবল ফাইলগুলি বিভিন্ন ফাইল পাথগুলিতে সংরক্ষণ করা হয়। কেউ, এক, অন্য, বা উভয় যে কোন সময় চলমান হতে পারে।

যখন আমি কিছু অপারেশন (প্যাচিং মত) সঞ্চালন করি, আমি প্যাচিং ডিরেক্টরি সম্পর্কিত প্রক্রিয়াটি বাতিল করতে চাই তবে অন্যটি না।

বিভিন্ন কৌশল ব্যবহার করে, প্রক্রিয়া প্রক্রিয়াগুলির উপর ভিত্তি করে প্রক্রিয়াগুলি বন্ধ করার ক্ষেত্রে আমার কোন সমস্যা নেই (যেমন ক্ষমতাশালী ব্যবহার না করেই কম চমত্কারভাবে):

echo Checking for procname process...
tasklist /FI "IMAGENAME eq procname .exe" | !windir!\system32\find /I "procname.exe" 
set EL=!ERRORLEVEL!
if !EL! EQU 0 (
    echo Killing procname process...
    TASKKILL /F /FI "IMAGENAME eq procname.exe"
)

বা আরো সুন্দরভাবে (powerhell ব্যবহার করে)

powershell Clear-Host 
powershell Stop-Process -name procname

যাইহোক, এই পদ্ধতি দুটি উভয় প্রসেস হত্যা যদি তারা চলমান হয়।

এই প্রক্রিয়াগুলিকে তাদের প্রক্রিয়া নামের উপর ভিত্তি করে হত্যা করার পরিবর্তে, আমি কিভাবে তাদের এক্সিকিউটেবলের পথের উপর ভিত্তি করে একটি প্রক্রিয়া খতম করতে পারি?


দুঃখিত, আমার এখন এই মুহূর্তে মাংস করার সময় নেই, তবে এখানে কিছু ধারনা রয়েছে: WMIC PROCESS WHERE name="calc.exe" DELETE এবং WMIC PROCESS LIST FULL
TOOGAM

উত্তর:


0

আমি যা চাই তা করতে আমি একটি উপায় খুঁজে পেয়েছিলাম এবং ভাবলাম আমি সমাধানটি ভাগ করব।

এই সমাধান powerhell প্রয়োজন।

powershell Get-Process <ProcessName> ^| Where-Object {$_.Path -like '*<path_fragment>*'} ^| Stop-Process

** "^ |" পাইপ powershell ইন্টারপ্রেটার মধ্যে পাইপ রাখা প্রয়োজন। একটি স্বাভাবিক পাইপ ("|") ব্যবহার করে এটি স্বাভাবিক কমান্ড ইন্টারপ্রেটারে আবার পাইপ করে এবং কমান্ডটিকে ভাঙ্গায়।

এই কোডের পিছনে কিছু বাস্তব মান স্থাপন করতে, নোটপ্যাড ++ কে হত্যা করার প্রক্রিয়াটি অনুমান করুন:

powershell Get-Process notepad++ ^| Where-Object {$_.Path -like '*Notepad++*'} ^| Stop-Process

এটি একটি ব্যাচ ফাইলে (যা আমার অভিপ্রায়) মধ্যে থেকে একটি কমান্ড লাইনের জন্য আহ্বান করা যেতে পারে।

ব্যবহারকারীরা উপরের কমান্ড থেকে আউটপুট দেখতে পারে, একটি stderr পুনঃনির্দেশিত লাইন শেষে nul এ। যখন গেট-প্রসেস কিছু খুঁজে পায় না, তখন এটি একটি গুরুতর গুরুতর ত্রুটি বলে মনে হয় - তবে সত্যিই "আমি কিছুই খুঁজে পাইনি" বলার উপায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.