Возможно, проблема в том, что вы создали переменную с именем $ DriverID, но вы проверяете, возвращает ли $ Driverid значение true. Создание переменных чувствительно к регистру, поэтому у вас есть две разные переменные. Это вернет false, в результате чего скрипт будет пропущен в операторе else.
Если вы хотите, чтобы «не было найдено $ Driverid» для записи на дисплей, вам нужно поставить «Write-Host» перед ним.
Приведенная в порядок версия вашего кода.
{
$Driverid = (Get-WmiObject -Class Win32_PnpSignedDriver | Where-Object
{$_.hardware -eq $HardWare} | Select-Object InfName -ExpandProperty InfName
| Select-Object -Unique)
if($Driverid)
{
Invoke-Expression "D:\Users\App.exe remove $HardWare"
$Command= "D:\Users\App.exe dp_delete $Driverid -f"
Invoke-Expression $Command
}
else
{
Write-Host "did not find any $Driverid"
}
}
Надеюсь, это поможет!