Я загружаю ранее созданный текстовый файл, в котором просто перечислены номера КБ для всех установленных в настоящее время обновлений Windows. Я пытаюсь извлечь этот файл и вызвать wusa.exe
и передать ему номер базы знаний для выполнения удаления.
$a = Get-Content c:\hotfixid.txt
foreach ($kb in $a) {
$command = 'cmd /c wusa.exe /uninstall /kb:' + $kb.Trim().Substring(2) + ' /quiet /norestart'
#Write-Host $command
Write-Host "Currently uninstalling $kb"
Invoke-Expression -Command:$command
}
Если я использую
Write-Host $command
и скопируйте это непосредственно в диалоговое окно запуска в Windows, оно успешно завершится.
Что происходит, когда я запускаю его в сценарии PowerShell, так это то, что он выводит только части Write-Host одну за другой примерно через 2 секунды. Я не вижу открывающихся командных окон и не вижу, чтобы они действительно что-то делали. Я запускаю сценарий PowerShell «От имени администратора» с неограниченной политикой выполнения. Я также пытался добавить «runas» в $command
для вызова окна CMD каждый раз с правами администратора, и это не имело никакого значения. Вызов через Invoke-Command
тоже ничего не меняет.
start-process
вместоinvoke-expression
- person Loïc MICHEL   schedule 30.10.2014invoke-expression yourbatch.bat
- person Loïc MICHEL   schedule 30.10.2014