1:比較ローカルのテキストファイルには、一般的に二つの方法をPowerShellで使用したのと同じであるのGet-ファイルハッシュ 2をすることによって、このコマンドを、ハッシュは、二つのファイルが同じである比較。コンペアオブジェクトのコマンドは、行ごとに2つのファイルを比較します。彼らは同じです。
アイデアの同じ2種類ですが、ウェブ上のファイルを扱うために、すべての最初のWeb上でのローカルテキストファイルとテキストファイルを比較。明らかに、二つのアプローチウェブ文書を処理する:ウェブ文書(のコンテンツ与えるために1を呼び出し、WebRequestクラスのメモリに直接比較する)、ウェブの2コンテンツファイルを取得し、その後、ファイルをローカルに保存し、ファイルをローカルに変換されます。比較。この方法は、ウェブ文書の内容を取得した後に必要となる、プラスステップファイル書き込み操作(新項目、アドインコンテンツ)、何も言うことになることはできません、この記事では、2つの方法の方法の最初の比較については、主である、と順にプログラムの正しさを特定しやすい、二つの文書の内容は、ここでは同じです。
1. 2つのハッシュファイルが同じである比較
1 #(MD5を使用して)ローカルファイルのハッシュを取得する 2 $パスを = " C:\ local.txt " 3。 $ hashLocal =は、Get-ファイルハッシュ-Path $パス - アルゴリズムMD5 4。 ライト出力$ hashLocal 5。 6。 $のURL = " XXX " 7 #のセット" -ExpandProperty「完全にテキストの内容を返すために 8 $ cotent =を呼び出し、WebRequestクラス-uri $ URLを | SELECT - ExpandPropertyコンテンツ 9 #のMemoryStreamに入れ、char配列に 10 $ charArray = $ cotent.ToCharArray() 。11 $ストリーム = [System.IO.MemoryStream] ::新新($ charArray ) 12は、 #また、ストリームを経由して取得するには、Get-ファイルハッシュハッシュ 13が $ hashWeb =は、Get-ファイルハッシュ-InputStream($ストリーム) - アルゴリズムMD5 14 #MemoryStreamをオフノート 15 $ストリーム.Close() 16 書き込み出力の$ hashWeb 。17 18です $ hashLocal .hash -eq $ hashWeb .hash
2.二つの文書の行の比較によるコンテンツのラインは同じです
1 $パス = " C:\ local.txt " 2 $のURL = " XXX " 3 $ contentLocal =のGet-コンテンツ$パス 4 $ cotentWeb =を呼び出し、WebRequestクラス-uri $のURL | 選択- ExpandPropertyコンテンツ 5 $デフ =コンペアオブジェクトを-ReferenceObject $($ contentLocal)-DifferenceObject $($ cotentWeb ) 6 場合($ diffを{) 7 書き込み出力" 内容は同じではありません!" 8 }
実行の結果は、デバッグ用のfind間違っている Get-Content
(cat
)の戻り値の型System.Array
、およびInvoke-WebRequest
戻り値の型があります String
1 PS C:\> $ ITEM1 .GetType() 2 3 IsPublic IsSerial名前BaseType 4 -------- -------- ---- -------- 5 トゥルー トゥルー オブジェクト[] のSystem.Array 6 7 PS C:> \ $ ITEM2 .GetType() 8 9 IsPublic IsSerial名前BaseType 10 -------- -------- ---- ---- ---- 11 真の 真の 文字列 のSystem.Object
する必要があるInvoke-WebRequest
変換の型の値を返します
パス$ = " C:\ local.txt " $ URL = " XXX " $ contentLocal =は、Get-コンテンツ$パス $ cotentWeb =を呼び出し、WebRequestクラス-uri $ URL | SELECT - ExpandPropertyコンテンツ #正規表現を使用して「\ rを\?エフェクトn「は改行は違いなくす $ cotentWebArray = $ cotentWeb -split '?\ R&LT \ N-' $差分を =コンペアオブジェクト-ReferenceObject $($ contentLocal)-DifferenceObject $($ cotentWebArray ) IF($デフ){ 書き込み -出力"内容は同じではありません!" }