2016-07-07 11 views
-2

当社のシステムには、Webサイドスクリプトを処理するサーバーとActive Directoryのすべての情報を含むサーバーという2つのサーバーがあります。それらを "webServer"と "adServer"と呼ぼう。PHPスクリプトから別のサーバーでPowershellスクリプトを実行していますか?

ADアカウントのパスワードの有効期限を返す、adServer上のPowershell(V5)スクリプトがあります。私はユーザーがユーザー名を入力してから、そのアカウントのパスワードの有効期限を印刷することができるWebサーバー上にPHPスクリプトを作成しています。したがって、私はこのPHPスクリプトからPowershellスクリプトを呼び出す必要があります。

PowershellスクリプトをPHPで実行するにはshell_exec()を使用しますが、別のサーバーでスクリプトを実行するにはどうすればよいですか? Cと仮定すると:\ pwdDate.ps1はAdServerの上のファイル・パスで、これは私が今持っているすべてです:

$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をWebサーバーに追加して、コマンドをローカルで実行できます。

関連する問題