2016-07-07 104 views
-2

我們公司的系統有兩臺服務器,一臺處理網頁腳本,另一臺包含我們所有的Active Directory信息。我們稱他們爲「webServer」和「adServer」。從PHP腳本在另一臺服務器上運行Powershell腳本?

我在adServer上有一個Powershell(V5)腳本,它返回一個AD帳戶的密碼到期日期。我正在web服務器上編寫一個PHP腳本,用戶可以在其中輸入用戶名,然後將該帳戶的密碼到期日期打印給他們。因此,我需要從這個PHP腳本調用Powershell腳本。我知道你使用shell_exec()在PHP中運行Powershell腳本,但是如何在不同的服務器上運行腳本?假設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本身來限制其他計算機(即「網絡服務器」)被授權聯繫其他服務。

注:我在這裏使用術語「服務,」通俗... ...鬆散特別是在參考了守護進程。我沒有使用微軟的正式含義。

0

我不希望遠程PowerShell允許在域控制器上,它打開一個大的攻擊面。

相反,您可以將AD PS Cmdlets添加到網絡服務器,然後在本地執行該命令。

相關問題