2013-04-26 18 views
1

好球員我真的不知道如何開始,是第一次,我用PowerShell和PHP一起工作,但現在我不知道該如何處理這個問題,因此,我在這裏..返回值不能用於PHP

林開發webinterface一個公司來管理服務(基本開啓/關閉服務器)。我已經編寫了powershell腳本,一切正常運行。

但我有一個地方,我嘗試在AlertBox(JavaScript)中顯示進程的狀態(PowerShell腳本已經給了我返回值,但我不明白爲什麼PHP不會像字符串或文本處理它。

檢查出來一塊我的代碼:

<?php 
       if (isset($_POST['button'])) 
      { 
     $service = $_POST["service1"]; 
     $psPath = "powershell.exe"; 
     $psDIR = "C:\\xampp\\htdocs\\shell\\"; 
     $psScript = "check-status.ps1"; 
     $runScript = $psDIR. $psScript; 
     $runcheck = $psPath." ".$runScript." 2>&1"; 
     $computername = "xen-80-42"; 

     $go = shell_exec("$runcheck -passwd 'Hpdprqn5' -user 'Administrator' -computer '$computername' -service '$service' < NUL"); 



echo "<script type='text/javascript'>alert('" . $service . " is currently " . $go . " on " . $computername . "'); </script>"; 

     } 
    ?> 

    <form method="post"> 
     <p> 
      <input type="text" name="service1" id="service1" maxlength="20"></input> <button name="button">Check Status</button> 
     </p> 
     </form> 

一切工作正常,腳本給回2個可能值:「運行」或「停止」 這意味着,該變量01的值,應該還是「運行」或「停止」

好吧,我試圖用一個已經運行的進程,因此:回聲$去; 打印「運行」

我覺得這是一個問題,因爲可能返回值爲$走的是不是字符串。 但我解決了使用gettype($go),變量是STRING!

但有人可以解釋爲什麼當我想數字字符串的字符,使用strlen($go),我得到8個字符的回報? RUNNING只有7個字母,而不是8

出於這個原因,我不能執行JavaScript中的alert(上面的代碼),因爲Java犯規把它作爲一個字符串或類似的東西

什麼是錯在那裏,我想,順便說一句,當我試圖做一個這樣的比較 - :

if ($go == "Running") { echo "Everything ok"; } else { echo "different values";} 

我得到的第二個選項,這兩個值是不是真的平等的,他們是diferent。但是嗎?我看不到任何東西..

我希望有人能helpme原因IM挫折:(

BTW我想:

strval($go); 
(string)$go; 
$var = "$go"; 

沒有什麼工作:(

如果necesary索要的PowerShell腳本,但我認爲它不是必需的,你會發現php接收的值爲STRING:/

回答

2

我猜這個神祕的符號是一個普通的換行符。 trim()代替;

+0

OMGü救了我的命,微調功能的工作!非常感謝你!但現在你能告訴我怎麼可能?最後一個字符在哪裏? :s – 2013-04-26 13:53:41

+0

它是將文本分解爲新行的不可見控制字符。 換行(LF或ASCII碼中的0x0A(10)) 或者可能 回車(ASCII或ASCII碼中的CR或0x0D(13)) – 2013-04-26 17:11:18