2

powershell を使用して httpWebResponse をファイルに書き込もうとしています。元のスクリプトは cURL にありましたが、.NET クラスを使用して実行しようとしています。要求 (投稿または削除) を機能させることはできますが、応答をテキスト ファイルに正しく書き込むのに苦労しています。streamReader と Writer の代わりに/とパイプを使用する方法はありますか?

これは簡潔なスクリプトなので、できれば streamreader と streamwriter に付属するコード行は避けたいと思います。powershellで最小量のコードで応答ストリームをテキストファイルに書き込む最良の方法は何ですか? 配管はできますか?私はそれが次のようになると仮定しています

|add-content $filename

しかし、左側には何がありますか?

これが私の削除呼び出しです。

[System.Reflection.Assembly]::LoadWithPartialName("System.Net")
write-host Deleting $database
$delRequest = [Net.HttpWebRequest]::Create("$DestinationRoot$database")
$delRequest.Method = "DELETE"
$delRequest.ContentType = "application/json"
$authorization = [System.Convert]::ToBase64String([System.Text.ASCIIEncoding]::ASCII.GetBytes("username" + ":" + "password")) 
$delRequest.Headers.Add("Authorization", "Basic " + $authorization)
[Net.HttpWebResponse] $delResponse = $delRequest.GetResponse() 
$delReader = new-object System.IO.StreamReader $delResponse.GetResponseStream() 
[System.IO.FileStream] $delStream = [System.IO.File]::Open($Log,[System.IO.FileMode]::OpenOrCreate, [System.IO.FileAccess]::Write, [System.IO.FileShare]::Write)
$delWrt = new-object IO.StreamWriter $delStream
while(-not $delReader.EndOfStream)
{
 $delWrt.WriteLine($delReader.ReadLine()) 
}
$delWrt.Close()     

これは機能しますが、コード行を節約できるのであれば、むしろパイプを使用したいと思います。cURL はこれをすべて約 5 行で行うことができるため、単純にできるほど良い結果が得られます。

4

2 に答える 2

5

以下のすべて$delReader = ...をストリームの .ReadToEnd() メソッドに置き換え、それをファイルにパイプできます。

$delReader = new-object System.IO.StreamReader $delResponse.GetResponseStream() 
$delReader.ReadToEnd() | Out-File $logFile
于 2012-08-13T19:43:26.500 に答える