2017-01-02 1 views
1

PowerShell 스크립트를 사용하여 소프트웨어를 제거하고 서비스를 제거하고 설치 폴더를 삭제합니다. 완전 정리. 이 소프트웨어는 핵심 애플 리케이션과 11 addins 있습니다. 그래서이 코드를 addins에 사용합니다 :PowerShell을 사용하여 제거 속도 향상

$appAddIns = @(Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -match "SE0008*" }) 
foreach ($appAddIn in $appAddIns) 
    { 
    Write-Host "Uninstalling: " $appAddIn.Name 
    $appAddIn.Uninstall() | out-null 
    } 

그러나 스크립트를 시작하는 것은 대단히 느립니다. 나는 그것을 실행, 그리고 그것은 단지 비어 있습니다. 직장 동료는 내 스크립트를 사용하지 않았습니다. 10 초가 지나면 스크립트가 작동하지 않고 종료되었다고 가정하기 때문입니다.

Write-Host "Sit and wait you impatient bastard" 

를 시작 부분에 :

더 잘 쓰기, 또는 할 수있는 방법은 추가 있습니까?

+2

이 경우에는 'Win32_Product'를 사용하지 마십시오. https://gregramsey.net/2012/02/20/win32_product-is-evil/. http://stackoverflow.com/questions/25268491/alternative-to-win32-product – restless1987

답변

3

Win32_Product와 속도가 느린,이 레지스트리 경로를 이용할 수있다 (HKLM : \ 소프트웨어 \ 마이크로 소프트 \ 윈도우 \ CurrentVersion은 제거 \) 제거 명령을 얻을하고 실행하는

+0

잘 작동합니다. –

2

Write-Progress을 사용한 다음 제거 할 프로그램 이름과 제거 할 프로그램 수를 기반으로 계산 된 백분율로 업데이트 할 수 있습니다. 여기

은 예입니다

Write-Progress -Activity "Uninstalling programs..." 

for ($i = 1; $i -le 5; $i++) { 
    Write-Progress -Activity "Uninstalling programs..." -Status "Program $i" -PercentComplete ($i/5 * 100) 
    Start-Sleep -Seconds 1 
} 
1

Win32_product가 손상되어 사용해서는 안됩니다 (마이크로 소프트조차도이 깨진 WMI 클래스에 대한 기사를 썼습니다). 매우 느린 것 외에도 현재 등록 된 MSI 패키지에 문제가 있기 때문에 등록 된 모든 MSI 패키지에 다시 등록해야하기 때문에 설치 한 MSI 패키지에 문제가 발생합니다. 소프트웨어를 제거하는 가장 쉬운 방법은 요즘 Powershell Desired State Configuration입니다.이 작업을 위해서는 적어도 Windows 8.1이 필요합니다. DSC를 사용하면 서비스 동작을 변경하고, 파일을 제거하고, MSI 패키지를 설치/제거하고 Powershell 스크립트 등을 실행할 수 있습니다.

+0

이 정보를 제공해 주셔서 감사합니다! Powershell Desired State Configuration이 도움이되지 않도록 Win 7을 사용합니다. 우리는 많은 MSI 패키지를 사용하므로 지금 당장이 스크립트를 철회합니다. – Diodak