Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Powershell-скрипт очистки C:\Windows\Installer

Ответить
Настройки темы
PowerShell - Powershell-скрипт очистки C:\Windows\Installer

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Имеется скрипт на сайте: http://www.bryanvine.com/2015/06/pow...eaning-up.html. Как его переделать полностью на PS?

Отправлено: 13:32, 11-01-2017

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$msi = New-Object -ComObject WindowsInstaller.Installer
$savelist = @()
$products = $msi.GetType().InvokeMember("Products","GetProperty",$null,$msi,$null)
foreach($product in $products)
{
	$patches = $msi.GetType().InvokeMember("Patches","GetProperty",$null,$msi,@($product))
	foreach($patch in $patches)
	{
		$location = $msi.GetType().InvokeMember("PatchInfo","GetProperty",$null,$msi,@($patch,"LocalPackage"))
		$savelist += [pscustomobject]@{
			ProductCode = $product
			PatchCode = $patch
			PatchLocation = $location
		}
	}
}

$filelocation = $savelist | select -ExpandProperty PatchLocation

#First pass to remove exact file names
dir C:\windows\Installer -file | ForEach-Object{
    $fullname = $_.FullName
    if($filelocation | Where-Object{$_ -like "*$fullname*"}){
        "Keeping $fullname"
    }
    else{
        Remove-Item $fullname -Force -Verbose
    }
}

#second pass to match product and patch codes
dir C:\windows\Installer -Directory | ForEach-Object{
    $fullname = $_.name
    if($savelist | Where-Object{$_.ProductCode -like "*$fullname*" -or $_.PatchCode -like "*$fullname*" }){
        "Keeping $fullname"
    }
    else{
        Remove-Item $_.fullname -Force -Verbose -Recurse
    }
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:28, 11-01-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо большое, но такой вопрос назрел: на виртуалке после очередного запуска его скрипта, папка очистилась совсем. В чем может быть дело?

Отправлено: 16:22, 11-01-2017 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Powershell-скрипт очистки C:\Windows\Installer

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Скрипт Powershell для мониторинга изменений файлов andorke Скриптовые языки администрирования Windows 2 06-05-2014 19:48
Любой язык - [решено] Скрипт очистки всех контрольных точек восстановления Slackerok Скриптовые языки администрирования Windows 3 16-12-2013 16:49
2008 R2 - [решено] PowerShell скрипт для получения поля ManagedBy Delirium Windows Server 2008/2008 R2 5 30-01-2012 05:50
VBS/WSH/JS - [решено] Скрипт очистки папки обмена stolyar Скриптовые языки администрирования Windows 9 15-02-2010 08:44
BAT-скрипт для очистки пакетов ForceWare International от "лишних" языков ShaddyR Программное обеспечение Windows 6 08-02-2007 10:55




 
Переход