2016-07-07 3 views
-2

우리 회사의 시스템에는 웹 사이드 스크립트를 처리하는 서버와 Active Directory 정보를 모두 포함하는 서버가 있습니다. "webServer"및 "adServer"라고 부릅시다.PHP 스크립트에서 Powershell 스크립트를 다른 서버에서 실행 하시겠습니까?

AD 계정의 암호 만료 날짜를 반환하는 adServer에 Powershell (V5) 스크립트가 있습니다. 사용자가 사용자 이름을 입력 한 다음 해당 계정의 암호 만료일을 인쇄 할 수있는 webServer에 PHP 스크립트를 작성하고 있습니다. 따라서이 PHP 스크립트에서 Powershell 스크립트를 호출해야합니다.

Powershell 스크립트를 PHP로 실행하려면 shell_exec()를 사용하는 것이 좋지만 다른 서버에서 스크립트를 실행하려면 어떻게해야합니까? C 가정 : \ pwdDate.ps1는 광고 서버의 파일 경로입니다, 이것은 내가 지금 가지고있는 모든 것입니다 :

난 당신이, 두 번째 컴퓨터에 [웹 ...] 서비스를 설정하는 것이 좋습니다
$pwdExpDate = shell_exec('powershell -File C:\pwdDate.ps1 -Username $username'); 

echo $pwdExpDate 
+0

'이것은 지금 내가 가진 전부입니다. '- 실행되지 않을 것입니다. 왜냐하면 작은 따옴표 문자열 안에 $ username을 사용할 수 없기 때문입니다. PHP에서 AD로 LDAP를 사용하지 않는 이유는 무엇입니까? 인터넷을 통해 많은 예가 있습니다. – TessellatingHeckler

답변

0

하는 당신을 PHP 응용 프로그램 을 요청하여 PowerShell 스크립트를 실행하거나 필요한 작업을 수행 할 수 있습니다.

을 계속 유지합니다 ... 대상 서버가 Active Directory 콘텐츠 관리와 같이 "수분이 많은"작업을 할 때 특히 중요한 고려 사항입니다. (침입자는 서버에 손을 대고 싶습니다 ...)임의의 요청을 허용하지 않습니다.

그리고 훨씬 간단합니다. PowerShell 스크립트가 동일한 컴퓨터의 프로세스에서 실행되고 있습니다. 스크립트 만 실행하고 간접적으로는 "요청에 의해"실행할 수 있습니다. 당신이 만든 서비스 프로세스의 도움을 받아 "그"머신에있는 동시성 문제를 쉽게 처리 할 수 ​​있습니다.

Microsoft IIS는 이미 (예 : SOAP ...) 서비스를 신속하게 설정하고 관리하는 데 필요한 "배관 작업"을 제공합니다.

AD 자체를 사용하여 다른 컴퓨터 (즉 "웹 서버")이 다른 서비스에 연결할 수있는 권한을 부여 할 수 있습니다.

참고 : 여기 구어체로 "서비스"라는 용어를 사용하고 ... 느슨하게 ... 특히 데몬 프로세스를 참조에 하지. Microsoft의 공식적인 의미를 사용하지 않습니다.

0

저는 도메인 컨트롤러에 원격 powershell을 허용하고 싶지 않습니다. 공격 대상이 커지고 있습니다.

대신 웹 서버에 AD PS Cmdlets을 추가 한 다음 로컬에서 명령을 실행할 수 있습니다.

관련 문제