Saya memiliki pertanyaan yang sama dengan Anda, dan mengerjakan sesuatu dengan PowerShell (windows built-in scripting) menggunakan teknik dari Scripting Guy Blog di sini dan di sini . Script berjalan terus menerus sebagai proses latar belakang, yang dapat Anda mulai pada logon sistem dengan penjadwal tugas. Script akan diberitahukan setiap kali drive baru dicolokkan dan kemudian melakukan sesuatu (di sini Anda mengkonfigurasi skrip daripada tugas). Karena pada dasarnya dijeda saat menunggu drive terpasang yang berikutnya, Anda tidak perlu menghabiskan banyak sumber daya. Ini dia:
1) Mulai Powershell ISE, yang dapat ditemukan di menu mulai Anda di bawah Accessories / Windows Powershell. 2) Salin rekatkan yang berikut ke Powershell:
#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) Anda perlu memodifikasi skrip di atas untuk memberi tahu skrip drive apa yang harus dicari, dan apa yang harus dijalankan. Dua baris yang akan diubah adalah:
if ($driveLetter -eq 'Z:' -and $driveLabel -eq 'Mirror')
Hard drive usb saya bernama 'Mirror' diset sebagai drive Z :. Anda bisa menggunakannya if ($driveLabel -eq 'MyDiskLabel')
jika Anda tidak peduli dengan surat itu.
start-process "Z:\sync.bat"
Jalur tugas apa pun yang ingin Anda lakukan. Dalam contoh saya, saya telah membuat file batch pada drive USB saya yang mulai 3-4 baris perintah tugas cadangan.
4) Setelah selesai, simpan skrip Anda di suatu tempat (ekstensi .ps1
), lalu buat tugas di Penjadwal Tugas agar skrip Anda berjalan di latar belakang. Milik saya terlihat seperti ini:
- Pemicu: Saat masuk
- Tindakan: Mulai program
- Program / skrip: PowerShell
- Tambahkan argumen:
-ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1"
5) Voa!
6) Barang ekstra:
Jika Anda ingin jendela skrip Anda disembunyikan, gunakan argumen ini:
- Tambahkan argumen:
-WindowStyle Hidden -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1"
Jika Anda ingin menampilkan pesan skrip ke file log (yang ditimpa setiap kali skrip dimulai, yaitu saat masuk), gunakan tindakan tugas berikut:
- Program / skrip: cmd
- Tambahkan argumen:
/c powershell -WindowStyle Hidden -ExecutionPolicy Unrestricted -File "D:\Stuff\Backup script.ps1" > "D:\Stuff\script
log.txt "
Kapan pun Anda ingin mengakhiri skrip tersembunyi yang sedang berjalan, Anda bisa mengakhiri proses "Powershell" di Task Manager.
Satu-satunya downside adalah bahwa tidak ada yang akan berjalan ketika Anda mem-boot komputer Anda dengan drive sudah terpasang. (Script dapat diubah untuk melakukan pemeriksaan pertama pada awalnya, tetapi saya sudah cukup untuk hari ini!)