2017-03-12 14 views
2

현재 Outlook 세션을 쿼리하는 PowerShell 스크립트가 있습니다.Outlook 사용 COM 클래스 구성 요소가 관리자 권한으로 만 실패 함

같은 기대 작품 그냥 unelevated PowerShell 창에서 실행,하지만 난 그게 아래에 보여처럼 실패 상승 프롬프트에있을 때 :

"정상"세션 :

PS> New-Object -Com Outlook.Application 


Application  : System.__ComObject 
Class    : 0 
Session   : System.__ComObject 
Parent    : 
Assistant   : 
Name    : Outlook 
Version   : 15.0.0.4903 
COMAddIns   : System.__ComObject 
Explorers   : System.__ComObject 
Inspectors   : System.__ComObject 
LanguageSettings : System.__ComObject 
ProductCode  : {90150000-000F-0000-0000-0000000FF1CE} 
AnswerWizard  : 
FeatureInstall  : 1 
Reminders   : System.__ComObject 
DefaultProfileName : Outlook 
IsTrusted   : False 
Assistance   : System.__ComObject 
TimeZones   : System.__ComObject 
PickerDialog  : System.__ComObject 

상승 하나

PS> New-Object -Com Outlook.Application 
New-Object : Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed 
due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 
(CO_E_SERVER_EXEC_FAILURE)). 
At line:1 char:1 
+ New-Object -Com Outlook.Application 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : ResourceUnavailable: (:) [New-Object], COMException 
    + FullyQualifiedErrorId : NoCOMClassIdentified,Microsoft.PowerShell.Commands.NewObjectCommand 

고도는 관리자 그룹에있는 동일한 사용자 계정을 사용합니다. 왜 이런 일이 생길까요? 그리고 그것을 고치는 방법? 내가 승낙하지 않은 응용 프로그램은 높은 사람들과 직접 통신 할 수는 없지만 주위에는 다른 방법으로 작동해야합니다. 나는 또한 관리자로서 Outlook을 시작하려했지만 예상했던대로 아무런 차이가 없습니다.

편집 :

C:/WINDOWS/system32> $PSVersionTable 

Name       Value 
----       ----- 
PSVersion      5.1.14393.693 
PSEdition      Desktop 
PSCompatibleVersions   {1.0, 2.0, 3.0, 4.0...} 
BuildVersion     10.0.14393.693 
CLRVersion      4.0.30319.42000 
WSManStackVersion    3.0 
PSRemotingProtocolVersion  2.3 
SerializationVersion   1.1.0.1 

그것은이 문제를 연구 나를 돕는 @Lieven에 & 비즈니스

+0

승격 된 세션으로 Outlook을 시작하면 승격되지 않은 세션에서와 동일한 Outlook 프로필이로드됩니까? – Random206

+0

예, 동일하게 유지됩니다. – Clijsters

+2

Outlook이 열려 있거나 처음 열린 일반 세션에서 인스턴스를 만들면 문제를 재현 할 수 있습니다. 내 상승 된 New-Object는 Outlook이 닫히면 아무도 COM을 통해 연결되지 않습니다. 내 생각에 가장 잘 추측 한 것은 다른 고도 수준의 여러 프로세스로 Outlook에 연결할 수 없다는 것입니다. 그 이유는 솔직히 말해서 나는 진짜 생각이 없습니다. –

답변

1

덕분에 오피스 2013 홈 승리 10에 5 포쉬입니다. 나는 누군가가 주변에오고 이것에 대한 해결책을 찾으면 이것을 열어두고 싶었다.

Outlook 및 PowerShell을 동시에 공유 메모리를 사용하여 동일한 Outlook 세션을 사용할 수 있습니다 @Lieven에 의해 진술과 자신에 대한 몇 가지 지속적인 연구로, 에는이에 대한 "솔루션"은 존재하지 않는다. 다른 높이 수준의 프로세스는 메모리를 공유 할 수 없기 때문에 (참고로 필요한 경우) 제 2 프로세스 (필자의 경우 높은 PowerShell)는 PST (새로운 Outlook 세션)를 열어야 만합니다. 첫 번째 세션에서만 독점적으로 열리기 때문에 실패합니다 (나의 경우에는 unelevated Outlook).

해결 방법 내 해결 방법은 Outlook 세션을 보유하는 하위 수준 프로세스를 만들고 상위 수준 프로세스 (및 동일한 수준도)를 연결하는 데 providing a pipeline을 만드는 것입니다. 평탄하지 않은 프로세스가 상승 된 파이프 라인에 연결할 수 없기 때문에 그 반대의 경우도 작동하지 않습니다.

이 작업은 PowerShell의 Outlook 세션에서 수행하는 작업이 매우 기본적이기 때문에 가능합니다. 그러나 여전히 해결 방법입니다.