特定のデバイスからファイルを削除するプログラムを作成しようとしています。デバイスには REST API があり、CLI から問題なくアクセスできます。
たとえば、CLI でこれを記述すると、次のように動作します。
$clip="test.mov"
$ClipsURL="http://123.45.67.89/clips"
$ClipToDelete=@{action="delete";clipname=$clip}
Invoke-RestMethod -Uri $ClipsURL -Body $ClipToDelete -Method Post -ContentType "application/x-www-form-urlencoded"
$ClipToDelete パラメーター ($clip の値を変更) をいじることができ、毎回動作します。
これを (メイン スクリプトの) ループに入れると、最初は機能し、次にタイムアウトします。
foreach($clip in $ListClips) {
$clip="test.mov"
$ClipsURL="http://123.45.67.89/clips"
$ClipToDelete=@{action="delete";clipname=$clip}
Invoke-RestMethod -Uri $ClipsURL -Body $ClipToDelete -Method Post -ContentType "application/x-www-form-urlencoded"
}
デバッグ中に、パラメーターとして Invoke-RestMethod に渡されたすべての値が正しい (URL と本文が正しい) ことを明確に確認できます。
私の第一印象は、Post を再試行する前に、おそらくセッションを閉じる必要があるということです (それが理にかなっている場合)。
SessionVariable
コマンドにパラメーターを追加しようとしましたが、何も変わりませんでした
(新しい Invoke-RestMethod コマンドを使用して) 開いたままの Web セッションを閉じる方法を既に知っている人はいますか? それとも、問題は別の場所にあると考えている人はいますか?
ありがとうございました。