2011-01-19 8 views
0

プロダクションサーバーにPowerShellスクリプトがあり、30日以上経過したデータベースバックアップファイルの一覧が表示されます。この方法でPowerShellでファイルを除外するにはどうしたらいいですか?

拡張子が「.bak」のファイルのみを表示する必要があります。しかし、私のスクリプトには一致する構文やregular expressionがないので、 "filename.foo.bak"のような拡張子を持つファイルのリストも見ています。これらのファイルは、これらのファイルを使用するプログラムによって自動的にバックアップが取られたテキストファイルまたはサーバー上の他の構成ファイルです。

マッチフィルタを有効にして、上記のように "* .bak"のみ表示し、他のファイルは表示しないようにするにはどうすればよいですか?

mjolinorで述べたように、このスクリプトを使用して除外しました。 \ Windowsの:

gci $paths -recurse -filter *.bak -exclude *.*.bak | ?{!$_.psiscontainer} 

はしかし、私は、このようなCなどの一部のシステムフォルダを除外するために必要なことを学んできました。 これもどのように達成できますか?

答えて

2

はこれを試してみてください:

gci *.bak -exclude *.*.bak 

私はあなたのコメントに返信しようとしたが、コードがすぐに表示されません。 -excludeは文字列[]引数をとります:

gci -recurse -filter *.bak -exclude *.*.bak,windows |? {!$_.psiscontainer} 
+0

ありがとうMjolinor、これは動作します。私は、C:\ Windowsのようないくつかのシステムフォルダも除外しなければならないことを発見しました。私は、-excludeスイッチがファイルに対してのみ動作することを知りました。除外リストにフォルダを追加することができれば幸いです。 – Animesh

+0

$パスに何が入っているのかわからないと確定的な答えは得られませんが、それがc:\ windowsを拾っていれば、C:のルートから始めることになります。そこから、これはうまくいくはずです:gci -recurse -filter * .bak -exclude *。*。bak、windows |? {!$ _。psiscontainer}。 -excludeパラメーターにはstring []引数が指定されているため、複数の除外項目を指定できます。 – mjolinor

+0

あなたは正しいです。 ** $ paths = 'C:\'、 'D:\'、 'E:\' ** これを試しましたが、C:\ Windowsに.bakファイルがあります。 – Animesh

関連する問題