Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Windows 10 ile ilgili bilgi paylaşım alanıdır
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 54004
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek
Teşekkür etti: 19838 kez
Teşekkür edildi: 12002 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen velociraptor »

esatiz yazdı: 16 Mar 2021, 11:39 Harici HDD yi kaldırmadı. Bu arada HDD yeni model. İnternette okuduğum kadarıyla powershell komutunda "Eject" yazan yer HDDler için işe yaramıyormuş. Anasayfada var o komut isteyen bakabilir.
Kodlarda eject komutu yok (çünkü Harici HDD lerde işe yaramıyor) , bende kodlar, bilgisayara takılı nekadar USB bellek veya harici HDD varsa hepsini Aygıt yöneticisnden devre dışı bırakmışım gibi işlem yapıyor. kısacası mükemmel çalışıyor. Eğer bir harici HDD i dahili disk gibi görüyorsa script işe yaramayacaktır. zaten bir aygıtı Powershell komutları ile devre dışı bırakma konusunda aşağıdaki başlık vardı
https://www.sordum.net/61194/powershell ... i-birakin/
Scrippte kodların biraz geliştirilmiş hali kullanıldı , lakin powershell cidden berbat
Kullanıcı avatarı
esatiz
Gigabyte3
Gigabyte3
Mesajlar: 2681
Kayıt: 30 Eki 2020, 11:18
cinsiyet: Erkek
Teşekkür etti: 399 kez
Teşekkür edildi: 451 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen esatiz »

Anladım güzel o zaman :arrow:
Bir ara eski harici hdd ile de denerim scripti :?:
Kullanıcı avatarı
shampuan
Petabyte4
Petabyte4
Mesajlar: 8464
Kayıt: 13 Tem 2018, 17:11
Teşekkür etti: 200 kez
Teşekkür edildi: 360 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen shampuan »

Kafa açıyorum farkındayım ama içimdeki detaylı anlatma manyaklığı dürtüyor :-D
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 54004
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek
Teşekkür etti: 19838 kez
Teşekkür edildi: 12002 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen velociraptor »

Özellikle takılı Harici HDD lerin bağlantısını keserken veya tekrar aktif ederken aşılması gereken sorunlar var ;

1. Bazı harici HDD lerin Sabit disk olarak görünmesi (Aşağıdaki resim)

Resim

Bu resmi aşağıdaki indirme linkinin içerisinde bulunan Test klasörü içerisindeki Pnp_Devices.vbe ile aldık.
https://www.sordum.net/indir/download.p ... /eject.zip

Bizler tablodaki sütun isimlerine göre işlem yaptırtıyoruz şöyleki ;

KAPANIRKEN

Kod: Tümünü seç

Get-PnpDevice | ? {$_.Service -eq "UASPstor" -and $_.Present -eq $True} | Disable-PnpDevice
Üstteki kod aynen şunu diyor ;
Git Pnp (Tak çıkar) aygıtlarının bir listesini al (Get-PnpDevice ) , Ardından bu listedeki service sütununda UASPstor u bul ve yine Present sütununda değeri True (Ok) ise $_.Service -eq "UASPstor" -and $_.Present -eq $True durdur Disable-PnpDevice

$_.Service aslında üstteki resimdeki $_.Class oluyor sanırım Powershell sürüm farkılığından ismini değiştirmişler. ve yine $_.Present dediği üstteki resimdeki $_.Status oluyor . -eq : equivalent yani eşittir "=" lakin bu uyduruk ve anlamsız, bu konuda eleştiriler var herneyse bu kısmı geçelim şimdi ben verdiğim kodlamada farklı birşey uyguladım 2 yerine 3 sorgu yaptırdım şöyleki:

Kod: Tümünü seç

Get-PnpDevice | where {$_.Class -eq 'DiskDrive' -and $_.Status -eq 'Ok' -and $_.InstanceId -like '*USBSTOR*'}
Get-PnpDevice | where {$_.Class -eq 'DiskDrive' -and $_.Present -eq $True -and $_.InstanceId -like '*USBSTOR*'}
Dedimki git bana ;
Class sütununda DiskDrive ,
Status kısmında Ok (yani takılı olacak) ve
$_.InstanceId sütununda USBSTOR (ki bu UASPstor da olabilir) bul ve getir bu Powershell süz kodlarının sonuna | Disable-PnpDevice eklerseniz bu bulduğunu devre dışı bırak demiş oluruz.

2. Devre dışı bırakılmış bazı harici HDD lerde status kımında Error yazıyor. oysa bizlerin komutlarında git error yazanı da bul ve aktif etmeye çalış satırı yok... kısacası aşılması gereken bazı sıkıntılar var

Gpedit.msc Windows 10 da çalışsa aşağıdaki klasörler iş görebilirdi
C:\Windows\system32\GroupPolicy\Machine\Scripts\Startup
C:\Windows\system32\GroupPolicy\Machine\Scripts\Shutdown

Bu konuda gözatabileceğiniz makaleler:
http://www.jhouseconsulting.com/2008/08 ... -policy-39
https://www.autoitscript.com/forum/topi ... up-policy/
https://serverfault.com/questions/37738 ... -directory
https://superuser.com/questions/165142/ ... e-shutdown
https://stackoverflow.com/questions/101 ... wn-windows
https://social.technet.microsoft.com/Fo ... progeneral
Kullanıcı avatarı
esatiz
Gigabyte3
Gigabyte3
Mesajlar: 2681
Kayıt: 30 Eki 2020, 11:18
cinsiyet: Erkek
Teşekkür etti: 399 kez
Teşekkür edildi: 451 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen esatiz »

Şimdi ben de listeledim, diski tekrar kapatma komutunu girince listede ne değişecek diye deneyeyim dedim. Bu sefer de komut çalışmadı..... Ama pc açılıp kapanırken çalşıyor ne saçma bir şey bu powershell?

Yazıyı okuyorum
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 54004
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek
Teşekkür etti: 19838 kez
Teşekkür edildi: 12002 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen velociraptor »

Olayın ne nedir kısmını dilim döndüğünce yazmaya çalıştım ki herkes fikir yürütebilsin , benim kullandığım powershell sorgusunu da paylaştım , evet malesef powershel düzgün çalışmıyor
Kullanıcı avatarı
esatiz
Gigabyte3
Gigabyte3
Mesajlar: 2681
Kayıt: 30 Eki 2020, 11:18
cinsiyet: Erkek
Teşekkür etti: 399 kez
Teşekkür edildi: 451 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen esatiz »

Hocam anlatım harika teşekkürler
UASPstor eski powershell sürümünde falan kalmış herhalde InstanceId yerinde çıkmıyor SCSI olacak öyleyse;

Resim
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 54004
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek
Teşekkür etti: 19838 kez
Teşekkür edildi: 12002 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen velociraptor »

İşte bu Powershell süzgeçleri konusunda da kısa bir makale hazırlayacağım kısmetse , bu kodun sonuna sadece | Disable-PnpDevice eklersen bulduğunu devre dışı bırakacaktır. ;)
Kullanıcı avatarı
esatiz
Gigabyte3
Gigabyte3
Mesajlar: 2681
Kayıt: 30 Eki 2020, 11:18
cinsiyet: Erkek
Teşekkür etti: 399 kez
Teşekkür edildi: 451 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen esatiz »

Resim

Evet ekledim bırakayım mı diye soruyor, evet diyorum olmuyor komutu mu anlamadı sondaki :?: :-D nasıl bir saçmalıksa

Bu komutlar (USBSTOR ve SCSI yazacak) herkesin harici HDDleri için işe yarar, sırayla yaptırılır komutla ama kapanışa eklenmiyor...
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 54004
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek
Teşekkür etti: 19838 kez
Teşekkür edildi: 12002 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen velociraptor »

Birde aşağıdakini dene bakalım yiyecekmi

Kod: Tümünü seç

Get-PnpDevice | where {$_.Class -eq 'DiskDrive' -and $_.Present -eq $True -and $_.InstanceId -like '*UASPstor*'} | Disable-PnpDevice -Confirm:$false
Kullanıcı avatarı
esatiz
Gigabyte3
Gigabyte3
Mesajlar: 2681
Kayıt: 30 Eki 2020, 11:18
cinsiyet: Erkek
Teşekkür etti: 399 kez
Teşekkür edildi: 451 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen esatiz »

Yine olmadı hocam,

UASPstor sadece benim verdiğim komutta işe yarıyor benim bulduğum eski herhalde

UASPstor yerine SCSI yazmışlar anlaşılan yeni sürüm powershellde, aynı anlama geliyorlar çünkü

Neyse SCSI ve confirm yazsam da hata veriyor üstteki fotodaki gibi. Kapanışta açılışta nasıl sorunsuz çalışıyor anlamadım ki... PowerRun ile mi çalıştırsam acaba bir de manuel olarak
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 54004
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek
Teşekkür etti: 19838 kez
Teşekkür edildi: 12002 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen velociraptor »

Malesef Microsoft, Powershell ile iyice ortalığı batırdı , görüldüğü gibi Powershell sürümleri arasında aşırı uyumsuzluk mevcut , birinin komutu diğerinde çalışmıyor kaldıki sütun isimlerini bile bir sonraki sürümde değiştirmişler , bir ne yaptığını bilmezlik , saçmalıktır gidiyor. İlaveten Bazen çalışıp bazen çaılşmama durumu var ... Bu sebepledirki Elimden geldiğince Powershell e bulaşmıyorum
Sendeki sorun çözüldüyse zaten sıkıntı yok , burada amacımız biraz daha derine inip irdelemdti sadece , PowerRun ile de denemeler yapılabilir
Kullanıcı avatarı
feuer
Terabyte1
Terabyte1
Mesajlar: 3996
Kayıt: 24 Eyl 2020, 01:33
cinsiyet: Erkek
Teşekkür etti: 124 kez
Teşekkür edildi: 225 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen feuer »

https://quickandeasysoftware.net/softwa ... sk-ejector

command line parametreleri ile de çalışıyormuş; yani bu parametreleri kapanışa eklersen eject sorunu çözülür
bir test eder misin?

Resim

Kod: Tümünü seç

The following command line options are available:

/?
Displays a dialog that shows all command line options.

/NOSAVE
Settings are not saved, no cfg file will be created. But if theres USB_Disk_Eject.cfg in the same place as the program, options will be read from it. Use this if you want to launch the program but stop it saving settings or overwriting existing settings.

/CFGDIR
Specify a different path for the cfg file (the file where settings are stored). EG /CFGDIR "c:\users\ben\desktop\stuff"

/REMOVETHIS
Ejects the drive that the program is running from. Eg if the program is run from a usb stick on drive G then drive G would be ejected.

/REMOVELETTER
Ejects the specified drive letter. Eg /REMOVELETTER G

/REMOVEMOUNTPOINT
Ejects the specified mountpoint. Eg /REMOVEMOUNTPOINT "C:\Test USB Disk Mount"

/REMOVENAME
Ejects the drive with the specified name. Eg /REMOVEDRIVE "Sandisk U3 Titanium"
Partial name matching is possible if a wildcard (*) is used. Eg /REMOVENAME "*SANDISK" would eject a drive that had Sandisk in its name.

/REMOVELABEL
Ejects the drive with the specified label. Eg /REMOVLABEL "Work Drive"
Partial name matching is possible if a wildcard (*) is used. Eg /REMOVELABEL "*BEN" would eject a drive that had Ben in its label (eg Ben's Pen Drive).

/EJECTCARD
Ejects the card media from a drive rather than trying to eject the drive itself.

Combine it with other switches Eg /REMOVELETTER G /EJECTCARD would eject an SD card in drive G.
The command line switches could be used to eject a drive from the command prompt, a bat file, a desktop shortcut or as part of a script or menu.
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 54004
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek
Teşekkür etti: 19838 kez
Teşekkür edildi: 12002 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen velociraptor »

Hah bak Powershelle bulaşılmadan yapılabiliyorsa işe yarayacaktır diye düşünüyorum :arrow:
Kullanıcı avatarı
esatiz
Gigabyte3
Gigabyte3
Mesajlar: 2681
Kayıt: 30 Eki 2020, 11:18
cinsiyet: Erkek
Teşekkür etti: 399 kez
Teşekkür edildi: 451 kez

Re: Kapanışta usb cihazların gücünü otomatik olarak kesmek - Çözüldü

Mesaj gönderen esatiz »

Teşekkürler @feuer ben sorunumu zaten çözdüm Grup ilkesi ile. Bu işi programsız halletmeye çalışıyorum o programı görmüştüm. Herkeste çalışan bir kod var mı ona bakıyorum şimdi

Şu powershelle gelecek olursak,

Harici HDD: SCSI tip

Üstteki @velociraptor un ve kendimin paylaştığı komutları tekrar denedim manuel olarak, nedense çalışmadı. Halbuki powershelli yönetici olarak çalıştırıyordum.

Powershelli PowerRun ile çalıştırayım dedim, komutlar işe yaradı. Demek ki grup ilkesi düzenleyici işleri SYSTEM veya TrustedInstaller olarak gerçekleştiriyor.

Kodlar manuel çalıştı.

Fakat bir farklılık var. Benim bulduğum diski tamamen kapatıyor sistemde de görünmez yapıyor. HDD ışığı vs sönüyor kapanıyor. USBsini çıkarıp taksanız da görünmüyor disk başlamıyor.

Şunu uygulayınca diskin ışığı sönmüyor, ama sistemde ulaşılmaz oluyor bir de saçmalığı var:

Kod: Tümünü seç

Get-PnpDevice | where {$_.Class -eq 'DiskDrive' -and $_.Present -eq $True -and $_.InstanceId -like '*SCSI*'} | Disable-PnpDevice -Confirm:$false
Ama bu komutun sistemde etkili olabilmesi için, diskin erişilmez olması için benim verdiğim eski komut kullanılacak, sonra tersi (Enable olarak) açılacak:

Kod: Tümünü seç

Get-PnpDevice | ? {$_.Service -eq "UASPstor" -and $_.Present -eq $True} | Disable-PnpDevice -Confirm:$false
iki komutu uyguladınız, diski 2. komutla tamamen kapattık. Tekrar açalım:

Kod: Tümünü seç

Get-PnpDevice | ? {$_.Service -eq "UASPstor" -and $_.Present -eq $True} | Enable-PnpDevice -Confirm:$false
Baktınız diskin ışığı yandı, ama sistemde yok.

İşte sistemde görünmemesi böyle oluyor.

Bir de 2. kez yaptığımda tekrar için işlemleri, hata vs verdi bu kadar saçma bir şey görmedim.

İşler powershell sayesinde halloldu. Fakat powershell ile olay karmakarışık bir durum alabiliyor
Cevapla