2014-12-22 5 views
5

A volte dopo il riavvio/coldboot ho riscontrato un problema con il mio driver touchscreen in Win8, quindi devo riavviarlo manualmente ora.PowerShell disabilita e abilita un driver

Quindi voglio scrivere uno script che inizi dopo l'accesso, che disabiliterà il driver e lo abiliterà di nuovo.

realtà ho scoperto che per trovare il driver e che posso ottenere una lista degli oggetti dei driver tramite:

Get-WmiObject Win32_PnPSignedDriver| select devicename, driverversion | where {$_.devicename -like "I2C*"} 

Ma l'aggiunta di "| Disable-Device" alla fine della linea non funzionerà.

Qualcuno può dirmi come devo scrivere correttamente il comando e avviare lo script come un file batch?

+0

Qual è stato l'errore dato, quando si ha '| Disable-Driver' alla fine? –

+0

Lo traduco, Disabilita-Device: il nome "Disable-Device" non era un nome di un cmdlet, una funzione, un file di script o un programma esecutivo. Controlla la notazione del nome o se è la strada giusta e riprova. – pewpewPenguin

+0

Ho un esempio funzionante all'indirizzo https://github.com/StingyJack/VidyaRestart – StingyJack

risposta

3

Supponendo che si stia utilizzando lo Device Management cmdlets, suggerirei di utilizzare il cmdlet Get-Device fornito nello stesso pacchetto per passare lungo la pipeline.

Dopo una rapida occhiata, ho rilevato che Disable-Device non prende nessuno dei DeviceName o DriverVersion dalla pipeline e non lo riconoscerà poiché è solo un parametro identificativo (-TargetDevice).

La pagina di TechNet suggerisce questo, per disattivare una periferica:

$deviceName = Read-Host -Prompt 'Please enter the Name of the Device to Disable'; Get-Device | Where-Object -Property Name -Like $deviceName | Disable-Device 

si può semplicemente usare qualcosa di simile, assumendo il vostro device è simile utilizzando il Get-dispositivo cmdlet:

Get-Device | where {$_.name -like "I2C*"} | Disable-Device 
+0

Viene visualizzato un errore provando il tuo ultimo suggerimento. "Il nome" Get-Device "non era il nome di un cmdlet, una funzione o ..." Devo scrivere uno script completo? (Attualmente inserisco questo comando nella PowerShell) – pewpewPenguin

+0

Ok, come primo passo, 'Disable-Device' non è un cmdlet standard su Windows 8. Se lo hai trovato da un post come [this] (http://blogs.technet.com/b/wincat/archive/2012/09/06/device-management-powershell-cmdlets-sample-an-introduction.aspx), noterete che suggerisce l'uso dei cmdlet Gestione dispositivo (collegamento in risposta), che contiene 'Disable-Device' e' Get-Device'. Dovrai scaricare e importare questo modulo prima di poter utilizzare uno qualsiasi dei comandi contenuti all'interno. –

+0

Ho provato a importare il modulo (inserito nei moduli della cartella PowerShell) e "Import-Module. \ PSCmdlet.psd1 -Verbose" come si dice in .txt, ma dice sempre che il file non è stato trovato. – pewpewPenguin

2

a almeno con Windows 10 è molto più semplice:

$d = Get-PnpDevice| where {$_.friendlyname -like "I2Cwhatever*"} 
$d | Disable-PnpDevice -Confirm:$false 
$d | Enable-PnpDevice -Confirm:$false