2013-05-21 44 views
1

我想寫從特定設備中刪除文件的程序。該設備有一個REST API,我可以從CLI訪問它,沒有任何問題。Powershell的調用,RestMethod POST方法超時問題

例如,如果我寫這篇文章的CLI,它的工作原理:

$clip="test.mov" 
$ClipsURL="http://123.45.67.89/clips" 
[email protected]{action="delete";clipname=$clip} 
Invoke-RestMethod -Uri $ClipsURL -Body $ClipToDelete -Method Post -ContentType "application/x-www-form-urlencoded" 

我能玩的$ ClipToDelete參數(改變$剪輯的值),並屢試不爽。

現在,當我把它放在一個循環(在我的主腳本),它的工作原理是第一次,並且超時未來。

foreach($clip in $ListClips) { 
$clip="test.mov" 
$ClipsURL="http://123.45.67.89/clips" 
[email protected]{action="delete";clipname=$clip} 
Invoke-RestMethod -Uri $ClipsURL -Body $ClipToDelete -Method Post -ContentType "application/x-www-form-urlencoded" 
} 

雖然調試運行,我可以清楚地看到,作爲參數調用到,RestMethod傳遞的所有值是否正確(網址&身體是正確的)。

我的第一印象是,我也許應該嘗試再次發佈之前關閉會話(如果讓任何意義)。

我嘗試添加一個SessionVariable參數命令但它沒有改變任何事情

有誰已經知道如何關閉網絡使sesion敞開(用新的調用-RestMethod命令)?還是有人認爲這個問題在別處?

謝謝。

回答

0
foreach($clip in $ListClips) { 
$clip="test.mov" 
$ClipsURL="http://123.45.67.89/clips" 
[email protected]{action="delete";clipname=$clip} 
Invoke-RestMethod -Uri $ClipsURL -Body $ClipToDelete -Method Post -ContentType "application/x-www-form-urlencoded" 
} 

在第二行中,用「text.mov」覆蓋當前值。

如果它不是一個錯字的錯誤,它可能是你刪除的對象在第一時間和您嘗試再次刪除它時收到超時(這當然取決於服務器端實現)

+0

這最有可能是由於服務器端執行。 我會盡力,並聯系設備的製造商(這是一個HD-SDI記錄:AJA文專業版)。 感謝您的回答 – Zakari

1

我在從AirWatch調用REST API時遇到類似的問題。 顯然,錯誤已申請了POST & DELETE以下方法:

https://connect.microsoft.com/PowerShell/feedback/details/836732/tcp-connection-hanging-in-close-wait-when-using-invoke-restmethod-with-put-or-delete

但我沒有間歇面對這個問題與GET請求太多,我介紹的解決方法,我有以下的TechNet維基文章中使用,也許你可以試試那些和完善它,如果你發現一些額外的東西:

http://social.technet.microsoft.com/wiki/contents/articles/29863.powershell-rest-api-invoke-restmethod-gotcha.aspx