আমি তোমার মত একই প্রশ্ন ছিল, এবং PowerShell (বিল্ট-ইন স্ক্রিপ্টিং উইন্ডো) সঙ্গে কিছু কাজ স্ক্রিপ্টিং গায় থেকে কৌশল ব্লগ ব্যবহার এখানে এবং এখানে । স্ক্রিপ্টটি একটি ব্যাকগ্রাউন্ড প্রক্রিয়া হিসাবে অবিচ্ছিন্নভাবে চলমান, যা আপনি টাস্ক শিডিয়ুলারের সাহায্যে সিস্টেম লগনে শুরু করতে পারেন। যখনই কোনও নতুন ড্রাইভ প্লাগ করা হবে তখন স্ক্রিপ্টটি অবহিত হবে এবং তারপরে কিছু করুন (এখানে আপনি টাস্কের চেয়ে স্ক্রিপ্টটি কনফিগার করবেন)। যেহেতু পরবর্তী প্লাগড ড্রাইভের জন্য অপেক্ষা করার সময় এটি মূলত বিরতি দেওয়া হয়েছে, আপনার এটি খুঁজে পাওয়া উচিত নয় যে এটি খুব বেশি সংস্থান গ্রহণ করে। আমি এখানে যাচ্ছি:
1) পাওয়ারশেল আইএসই শুরু করুন যা আপনার স্টার্ট মেনুতে আনুষাঙ্গিক / উইন্ডোজ পাওয়ারশেলের অধীনে পাওয়া যাবে। ২) পাওয়ারশেলের মধ্যে নিম্নলিখিতটি অনুলিপি করুন:
#Requires -version 2.0
Register-WmiEvent -Class win32_VolumeChangeEvent -SourceIdentifier volumeChange
write-host (get-date -format s) " Beginning script..."
do{
$newEvent = Wait-Event -SourceIdentifier volumeChange
$eventType = $newEvent.SourceEventArgs.NewEvent.EventType
$eventTypeName = switch($eventType)
{
1 {"Configuration changed"}
2 {"Device arrival"}
3 {"Device removal"}
4 {"docking"}
}
write-host (get-date -format s) " Event detected = " $eventTypeName
if ($eventType -eq 2)
{
$driveLetter = $newEvent.SourceEventArgs.NewEvent.DriveName
$driveLabel = ([wmi]"Win32_LogicalDisk='$driveLetter'").VolumeName
write-host (get-date -format s) " Drive name = " $driveLetter
write-host (get-date -format s) " Drive label = " $driveLabel
# Execute process if drive matches specified condition(s)
if ($driveLetter -eq 'Z:' -and $driveLabel -eq 'Mirror')
{
write-host (get-date -format s) " Starting task in 3 seconds..."
start-sleep -seconds 3
start-process "Z:\sync.bat"
}
}
Remove-Event -SourceIdentifier volumeChange
} while (1-eq1) #Loop until next event
Unregister-Event -SourceIdentifier volumeChange
3) স্ক্রিপ্টটি কী ড্রাইভের সন্ধান করতে হবে এবং কী কার্যকর করতে হবে তা জানানোর জন্য আপনাকে উপরের স্ক্রিপ্টটি সংশোধন করতে হবে। দুটি লাইন পরিবর্তন করতে হবে:
if ($driveLetter -eq 'Z:' -and $driveLabel -eq 'Mirror')
'মিরর' নামের আমার ইউএসবি হার্ড ড্রাইভটি জেড: ড্রাইভ হিসাবে সেট করা হয়েছে। আপনি if ($driveLabel -eq 'MyDiskLabel')
যদি চিঠিটির বিষয়ে চিন্তা না করেন তবে আপনি কেবল ব্যবহার করতে পারেন।
start-process "Z:\sync.bat"
আপনি যে কাজটি করতে চান তার পথ। আমার উদাহরণে, আমি আমার ইউএসবি ড্রাইভে একটি ব্যাচ ফাইল তৈরি করেছি যা 3-4 ব্যাকআপ টাস্ক কমান্ড লাইনগুলি শুরু করে।
৪) আপনার কাজ শেষ হয়ে গেলে, আপনার স্ক্রিপ্টটি কোথাও (এক্সটেনশন .ps1
) সংরক্ষণ করুন , তারপরে আপনার স্ক্রিপ্টটি ব্যাকগ্রাউন্ডে চালানোর জন্য টাস্ক শিডিয়ুলারে একটি টাস্ক তৈরি করুন। আমার এইরকম দেখাচ্ছে:
- ট্রিগার: লগ অন
- ক্রিয়া: একটি প্রোগ্রাম শুরু করুন
- প্রোগ্রাম / স্ক্রিপ্ট: পাওয়ারশেল
- যুক্তি যুক্ত করুন:
-ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1"
5) ভয়েলি!
6) অতিরিক্ত স্টাফ:
আপনি যদি চান আপনার স্ক্রিপ্ট উইন্ডোটি লুকানো থাকে তবে এই যুক্তিগুলি ব্যবহার করুন:
- যুক্তি যুক্ত করুন:
-WindowStyle Hidden -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1"
যদি আপনি কোনও লগ ফাইলে স্ক্রিপ্ট বার্তাগুলি আউটপুট করতে চান (যা প্রতিটি সময়ে স্ক্রিপ্ট শুরু হওয়ার পরে ওভাররাইট হয়ে যায়, অর্থাৎ লগ অন হয়), নিম্নলিখিত টাস্ক অ্যাকশনটি ব্যবহার করুন:
- প্রোগ্রাম / স্ক্রিপ্ট: সেমিডি
- যুক্তি যুক্ত করুন:
/c powershell -WindowStyle Hidden -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1" > "D:\Stuff\script
log.txt "
যে কোনও সময় আপনি চলমান লুকানো স্ক্রিপ্টটি শেষ করতে চান, আপনি টাস্ক ম্যানেজারে "পাওয়ারশেল" প্রক্রিয়াটি শেষ করতে পারেন।
কেবলমাত্র খারাপ দিকটি হ'ল আপনি যখনই কম্পিউটারটি ইতিমধ্যে প্লাগ ইন করে বুট করেন তখন কিছুই চলবে না ((প্রথমদিকে প্রথম চেক সম্পাদন করতে স্ক্রিপ্টটি পরিবর্তন করা যেতে পারে তবে আজকের জন্য আমার যথেষ্ট ছিল!)