使用PowerShellは、同じWeb上のテキストファイルをローカルのテキストファイルを比較します

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-Contentcat)の戻り値の型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$デフ){ 
    書き込み -出力"内容は同じではありません!" 
}

おすすめ

転載: www.cnblogs.com/makesense/p/11184554.html