运行远程PowerShell Office卸载脚本

时间:2015-02-18 19:26:25

标签: powershell windows-update

KB2956128让网络中的用户感到头疼。我没有在这种环境中运行WSUS,因此我将使用PS脚本来处理卸载。 无论如何,下面的脚本应该工作

$comp = 'PC03'
$scrblock = 
{
$TitlePattern = 'KB2956128'

$Session = New-Object -ComObject Microsoft.Update.Session

$Collection = New-Object -ComObject Microsoft.Update.UpdateColl
$Installer = $Session.CreateUpdateInstaller()
$Searcher = $Session.CreateUpdateSearcher()

$Searcher.QueryHistory(0, $Searcher.GetTotalHistoryCount()) | 
    Where-Object { $_.Title -match $TitlePattern } |
    ForEach-Object {
        Write-Verbose "Found update history entry $($_.Title)"
        $SearchResult = $Searcher.Search("UpdateID='$($_.UpdateIdentity.UpdateID)' and RevisionNumber=$($_.UpdateIdentity.RevisionNumber)")
        Write-Verbose "Found $($SearchResult.Updates.Count) update entries"
        if ($SearchResult.Updates.Count -gt 0) {
            $Installer.Updates = $SearchResult.Updates
            $Installer.Uninstall()
            $Installer | Select-Object -Property ResultCode, RebootRequired, Exception
            # result codes: http://technet.microsoft.com/en-us/library/cc720442(WS.10).aspx
        }
    }
}
Invoke-Command -ComputerName $comp -ScriptBlock $scrblock -Credential 'myDomain\administrator'

相反,我收到此错误

Exception calling "CreateUpdateInstaller" with "0" argument(s): "Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation
    + PSComputerName        : PC03

Exception calling "QueryHistory" with "2" argument(s): "Exception from HRESULT: 0x80240007"
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation
    + PSComputerName        : PC03

我不太清楚访问被拒绝的原因。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

简短回答是远程调用ComObject does not allow the CreateUpdateInstaller。您只能在本地执行此操作,而不能通过会话或任何其他远程处理。但是,您可以使用psexec远程执行脚本作为系统。