2016-05-18 82 views
1

運行PowerShell腳本我使用PowerShell腳本以下獲取Cisco設備上的show run命令運行:無法從PHP

getconfig.ps1

$ErrorActionPreference ="Inquire" 
Import-Module SSH-Sessions 
$time ="$(get-date -f yyyy-MM-dd)" 
$filename ="config" 
$ext =".txt" 
$filepath ="temp\" 
$d1 ="x.x.x.x" 
$u1 ="user" 
$p1 ="password" 
New-SshSession $d1 -Username $u1 -Password "$p1" 
$c1 ="show run" 
$Results = Invoke-Sshcommand -InvokeOnAll -Command "$c1" | Out-File "$filepath$filename-$time$ext" 
Remove-SshSession -RemoveAll 
exit 

當我手動運行該腳本通過右鍵單擊/運行PowerShell,這很好。當我嘗試通過PHP運行這個腳本時出現問題。

的index.php

<?php 
$output = shell_exec('powershell C:\wamp\www\getconf\script\getconfig.ps1'); 
echo "<pre>$output</pre>"; 
?> 

的index.php負載永遠不會放棄我的輸出,不要再創建結果文件。

我試圖運行另一個腳本,如test.ps1,只是創建一個目錄,它的工作正常;我得到輸出,我的目錄被創建。

我的powershell腳本有效。

PHP和我的PowerShell腳本之間的鏈接工作。

我不明白問題出在哪裏。

+1

嘗試對out-file路徑進行硬編碼,並確保webserver有權訪問它。如果這樣,使用'split-path -parent $ MyInvocation.MyCommand.Definition'來獲取執行腳本的路徑。 –

+0

嘗試轉義$ filepath =「temp \」propertly($ filepath =「temp \\」) –

+0

Jisaak - 你是我的英雄 – Will

回答

0

正如jisaak評論的問題是,我的網絡服務器無法到達目的地目錄。

通過適當硬編碼路徑,問題已得到解決。