2

PHP가 실행하는 powershell 스크립트를 사용하여 Exchange 서버를 쿼리하려고하는데 작동하지 않는 것 같습니다. 내가 실행하려고 해요 명령은 다음과 같습니다PHP를 통해 Exchange Snap-In을 사용하여 powershell 스크립트 실행

ActiveSyncEnabled : True

내가 PHP에서 그것을 시도 할 때 :

powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity [email protected] | fl ActiveSyncEnabled" 

내가 직접 명령 프롬프트로, 제대로 실행하는 반환을 입력하면

$output=shell_exec('powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity [email protected] | fl ActiveSyncEnabled"'); 

나는 아무것도 얻지 못합니다. $ 출력은 설정되었지만 비어 있습니다. "> output.txt"를 끝에 추가하면 빈 텍스트 파일이 생깁니다. 필자는 PHP를 통해 다른 간단한 powershell 명령을 성공적으로 실행할 수 있지만이 명령은 사용할 수 없습니다. Apache 서비스는 명령 프롬프트를 통해 스크립트를 성공적으로 실행할 때와 동일한 사용자로 실행됩니다.

아이디어가 있으십니까?

나는 실행 해요 :

  • 윈도우 서버 2008 R2 SP1 64 비트
  • 아파치 2.2.22 32 비트
  • PHP 5.2.17 VC6 32 비트
  • Exchange 관리 콘솔 당신은 명령의 끝에서 2>&1을 추가하려고 2010 년 5 월
+0

테스트 목적으로 Apache 서비스가 나 자신으로 실행되도록 설정했습니다. PHP에서 exec ('whoami')는 명령 프롬프트에서 명령을 성공적으로 실행할 때 사용한 동일한 사용자 이름 인 domain \ username을 반환합니다. 이 계정에 권한 문제가 없어야합니까? 아니면 뭔가 누락 되었습니까? – amay83

답변

1

, 예를 들면 :

$output=shell_exec('powershell "Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010";"Get-CASMailbox -Identity [email protected] | fl ActiveSyncEnabled" 2>&1'); 

때로는 powershell 출력의 시작 부분에서 줄 바꿈을 사용하면 shell_exec이 다른 것을 인쇄하지 못하는 것으로 보입니다.

+0

도움을 주셔서 감사합니다. 여전히 작동하지 않지만 적어도 다음과 같은 오류가 발생합니다. Add-PSSnapin : Windows PowerShell 버전 2 용 스냅인이 등록되어 있지 않습니다. 행 : 1 char : 13 + Add-PSSnapin <<< amay83

+0

이란 무엇입니까 오류? – Gary

+0

나는 내가 지금지고있는 오류로 나의 이전 의견을 편집했다. 또한 명령 프롬프트에 직접 Shedal의 문자열을 입력하려고 시도했는데 여전히 올바르게 실행되어'AciveSyncEnabled : True '를 반환했습니다 – amay83

관련 문제