Im Rahmen eines Softwarepaketes hat mein Kollege ein Powershellscript erstellt um einen Treiber zu deinstallieren. Es muss nur der Name des Treibers (inf-Datei) angegeben werden. In diesem Fall ein Canon Scanner. (CanoScan LiDE 110)

#########################################
#                                       #
#          ©@Christoph Keller           #
#                                       #
#########################################


#initilizing variables 
$oeminfmatches = $null; 
$infdir = $env:windir+"\inf"; 

#search for oem*.inf files 
$oeminflist = gci $infdir\*.* -Include oem*.inf; 

#searchpattern 
$infname = "CanoScan LiDE 110"; 

#searching in $oeminflist and putting matches in $oeminfmatches; backing up matches in $logdir 
foreach ($inf in $oeminflist) { 
        Select-String -path $inf.FullName -Pattern $infname -List| foreach { 
            $oeminfmatches += $_.filename; 
            #copy-item $_.path $logdir -force; 
            #write-host " Found $infname in"$_.path ; 
            } 
        } 

#start uninstalling infs 
if ($oeminfmatches -ne $null){ 
    foreach ($match in $oeminfmatches) { 
        pnputil -f -d $match 
        } 
    Restart-Service Spooler; 
    } 
else { 
    write-host "No inf-files found matching pattern: $infname"; 
    }