none
Windows 10 New-Object : 80080005 서버 실행이 실패했습니다. RRS feed

  • 질문

  • 안녕하세요.

    현재 로그온 스크립트로 연결되어 있는 PST 제거하는 스크립트입니다.

    Windows 7 파워쉘에서는 정상 동작을 하고 있고, Windows 10에서는 파워쉘에서는 동작하지 않고, cmd 창에서 ps1이 동작합니다.

    windows 10 파워쉘에서 사용할 수 있는 방법이 있을까요?

    스크립트 내용

    <#
    Disconnect all PSTs from default mail profile

    All environments perform differently. Please test this code before using it
    in production.

    THIS CODE AND ANY ASSOCIATED INFORMATION ARE PROVIDED “AS IS” WITHOUT WARRANTY
    OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
    IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
    PURPOSE. THE ENTIRE RISK OF USE, INABILITY TO USE, OR RESULTS FROM THE USE OF
    THIS CODE REMAINS WITH THE USER.

    Author: Aaron Guilmette
      aaron.guilmette@microsoft.com
    #>

    <#
    .SYNOPSIS
    Disconnect all PSTs from the default Outlook mail profile.

    .DESCRIPTION
    This script will attempt to disconnect all PSTs from the Default Oulook profile.

    .EXAMPLE
    .\Disconnect-OutlookPSTs.ps1

    .LINK
    For an updated version of this script, check the Technet
    Gallery at https://gallery.technet.microsoft.com/Disconnect-PSTs-from-939d7a5f
    #>

    $Outlook = New-Object -ComObject Outlook.Application
    $NameSpace = $Outlook.GetNameSpace("MAPI")

    $Filter = "*.pst"
    $PSTs = $NameSpace.Stores | ? { $_.FilePath -like $Filter -or $_.ExchangeStoreType -eq 3 }

    $Logfile = "$env:TEMP\DisconnectPST_Log.txt"

    ForEach ($PST in $PSTs)
     {
     $Error.Clear()
     Write-Host -ForegroundColor Green "Found $($PST.DisplayName) at $($PST.FilePath) in profile $($Namespace.CurrentProfileName)"
     $Data = """" + $NameSpace.CurrentProfileName + """" + "," + """" + $PST.DisplayName + """" + "," + """" + $PST.FilePath + """"
     $PSTRoot = $PST.GetRootFolder()
     $PSTFolder = $NameSpace.Folders.Item($PSTRoot.Name)
     Write-Host -ForegroundColor Green "     Disconnecting $($PSTRoot.Name)"
     $NameSpace.GetType().InvokeMember('RemoveStore',[System.Reflection.BindingFlags]::InvokeMethod,$null,$NameSpace,($PSTFolder))
     If (!($Error))
      {
      $Data | Out-File -FilePath $Logfile -Append
      }
     }

    --------------------------------------------------------------------------------------------------------------------------------------------Windows 10 파워쉘 오류

    New-Object : 80080005 서버 실행이 실패했습니다. (예외가 발생한 HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)) 오류로 인해 CLSID가 {0006F03A-0000-0000-C000-
    000000000046}인 구성 요소의 COM 클래스 팩터리를 검색하지 못했습니다.
    위치 C:\Users\pkw6993\Desktop\Disconnect-OutlookPSTs\Disconnect-OutlookPSTs.ps1:32 문자:12
    + $Outlook = New-Object -ComObject Outlook.Application
    +            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ResourceUnavailable: (:) [New-Object], COMException
        + FullyQualifiedErrorId : NoCOMClassIdentified,Microsoft.PowerShell.Commands.NewObjectCommand

    null 값 식에서 메서드를 호출할 수 없습니다.
    위치 C:\Users\pkw6993\Desktop\Disconnect-OutlookPSTs\Disconnect-OutlookPSTs.ps1:33 문자:1
    + $NameSpace = $Outlook.GetNameSpace("MAPI")
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull

    해당 내용은 비공개로 부탁드려요

    2019년 5월 3일 금요일 오전 12:32

모든 응답

  • 안녕하세요,

    우선 Technet 포럼은 비공개 기능이 없습니다.

    말씀해주신 스크립트 https://gallery.technet.microsoft.com/Disconnect-PSTs-from-939d7a5f 에서 확인했을 시 Windows 10의 호환성 여부는 '아니오'로 되어있습니다.

    다만 VM에서 테스트시 정상적으로 동작하는 것으로 보여지며, 동작하는 방식을 보았을 때 new-object cmdlet 을 진행시 Outlook.exe 프로세스가 실행이 되는것으로 보여집니다.. Outlook.exe 프로세스가 이미 실행중인 상태에서는 말씀하신 오류 메세지와 동일하게 발생하는 것으로 보아, Outlook 프로세스를 종료하고 테스트를 해보시기 바랍니다.

    감사합니다.


    ※ 응답이 문제 해결에 도움이 되었다면 [답변으로 표시] 버튼을 눌러 주시기 바랍니다. 이는 유사한 증상을 겪는 다른 사용자들에게 도움이 될 수 있습니다. 만약 TechNet 구독자 지원에 대한 의견이 있다면, tnsf@microsoft.com으로 문의할 수 있습니다.

    2019년 5월 3일 금요일 오전 12:53
    중재자
  • 안녕하세요

    답변 감사합니다.

    말씀하신 것처럼 아웃룩을 종료하고 진행하여도 동일한 증상이 발생합니다.

    Windows 10 에서 사용 할 수 있는 방법이 없을까요?

    추가로 Windows 10 cmd 창에서는 해당 ps1이 정상적으로 동작하지만.... 파워쉘에서는 동작하지 않는데 이 동작에 대해서는 다른 방법이 없을까요?
    • 편집됨 도르마무 2019년 5월 3일 금요일 오전 4:29
    2019년 5월 3일 금요일 오전 4:26
  • 안녕하세요,

    작업관리자에서 outlook.exe를 모두 종류하고 실행했을 시에도 0x80080005오류가 발생이 되는건가요?

    Technet에서 powershell 스크립트 작성에 도움을 드리지는 않으나, 스크립트 내용상 딱히 Windows 10에서 작동이 안될것으로 보여지는 것은 없습니다.

    전달해주신 오류 메세지를 보면, 스크립트의 첫 줄인 '$Outlook = New-Object -ComObject Outlook.Application' 부터 오류가 발생이 되는 것인데, 이 변수 정의만 따로 powershell에서 실행했을 때 오류가 발생되는지 테스트를 해보는 것부터 시작하셔야 될 것 같습니다.

    감사합니다.


    ※ 응답이 문제 해결에 도움이 되었다면 [답변으로 표시] 버튼을 눌러 주시기 바랍니다. 이는 유사한 증상을 겪는 다른 사용자들에게 도움이 될 수 있습니다. 만약 TechNet 구독자 지원에 대한 의견이 있다면, tnsf@microsoft.com으로 문의할 수 있습니다.

    2019년 5월 3일 금요일 오전 4:58
    중재자
  • 네 말씀하신 것처럼 테스트를 해보니 아래와 같이 정상적으로 출력이 됩니다.

    PS C:\Disconnect-OutlookPSTs> $Outlook = New-Object -ComObject Outlook.Application


    PS C:\Disconnect-OutlookPSTs> $NameSpace = $Outlook.GetNameSpace("MAPI")


    PS C:\Disconnect-OutlookPSTs> $namespace

    Application                  : Microsoft.Office.Interop.Outlook.ApplicationClass
    Class                        : olNamespace
    Session                      : Microsoft.Office.Interop.Outlook.NameSpaceClass
    Parent                       : Microsoft.Office.Interop.Outlook.ApplicationClass
    CurrentUser                  : System.__ComObject
    Folders                      : {System.__ComObject, System.__ComObject}
    Type                         : Mapi
    AddressLists                 : System.__ComObject
    SyncObjects                  : System.__ComObject
    Offline                      : False
    MAPIOBJECT                   : System.__ComObject
    ExchangeConnectionMode       : olCachedConnectedFull
    Accounts                     : {System.__ComObject}
    CurrentProfileName           : Outlook
    Stores                       : {System.__ComObject, System.__ComObject}
    DefaultStore                 : Microsoft.Office.Interop.Outlook.StoreClass
    Categories                   : {System.__ComObject, System.__ComObject, System.__ComObject, System.__ComObject...}
    ExchangeMailboxServerName    : https://outlook.office365.com/mapi/emsmdb/?MailboxId=5a52575a-f15a-46bc-94ad-8cee2649350a@cnthoth.com
    ExchangeMailboxServerVersion : 15.20.1856.0
    AutoDiscoverXml              : <?xml version="1.0"?>
                                   <Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">

    위와 같이 각 할 경우에는 정상적으로 출력이 되지만 .ps1 통채로 할 때는 동작을 안하네요....

    cmd창에서 동작하는 걸 보면 Windows 10 에서는 지원 하는 것으로 보이는데

    어떤 방법이 있을까요?

    2019년 5월 3일 금요일 오전 5:19
  • 안녕하세요,

    Set-executionpolicy unrestricted 를 통하여 신뢰하지 않는 스크립트를 허용하는 정책은 설정 되어있는 것인가요?

    또한 .\xxxx.ps1 했을때 오류메세지가 지금도 0x80080005로 나타나나요?

    감사합니다.


    ※ 응답이 문제 해결에 도움이 되었다면 [답변으로 표시] 버튼을 눌러 주시기 바랍니다. 이는 유사한 증상을 겪는 다른 사용자들에게 도움이 될 수 있습니다. 만약 TechNet 구독자 지원에 대한 의견이 있다면, tnsf@microsoft.com으로 문의할 수 있습니다.

    2019년 5월 3일 금요일 오전 5:29
    중재자
  • Set-executionpolicy unrestricted  설정 후 .\xxxx.ps1 했을 때도 동일한 오류 코드입니다.

    2019년 5월 3일 금요일 오전 7:17
  • 안녕하세요,

    outlook 이 32bit인지 64bit인지 확인하시고, Powershell도 동일한 bit로 실행하여 보시기 바랍니다.

    https://stackoverflow.com/questions/29772500/powershell-cannot-create-outlook-com-object-from-command-prompt

    감사합니다.


    ※ 응답이 문제 해결에 도움이 되었다면 [답변으로 표시] 버튼을 눌러 주시기 바랍니다. 이는 유사한 증상을 겪는 다른 사용자들에게 도움이 될 수 있습니다. 만약 TechNet 구독자 지원에 대한 의견이 있다면, tnsf@microsoft.com으로 문의할 수 있습니다.

    2019년 5월 3일 금요일 오전 7:29
    중재자
  • 감사합니다! 일단은 windows 32 bit , Outlook 32 bit 에서는 동작을 하는데 Outlook & Windows10 64 bit 에서는...같은 오류가 발생합니다...
    2019년 5월 3일 금요일 오전 7:59