web-dev-qa-db-ja.com

Windows Server 2008 R2のすべてのユーザーのごみ箱をクリアする

Windows Server 2008 R2ですべてのユーザーのごみ箱をクリアする適切な方法は何ですか?

40
Kyle Brandt

私の知る限り、これらはマイクロソフトがサポートする「公式」の方法ではありません。 2つのオプションがあります。 1つはc:\ $ Recycle.Binの削除を含み、もう1つは各ユーザーログオンで実行するためのcleanmgr.exeのスクリプトです。

C:\ $ Recycle.binを削除するための「公式」サポートに最も近いものは、これからです MS KB 、これはXPおよびVistaを参照しますが、予想される動作を意味します。


即時削除

これをすぐに実行したい場合は、rd /s c:\$Recycle.BinおよびWindowsは、次に必要になったときに必要なフォルダを再作成する必要があります。私はこれをすばやくテストしましたが、動作するようですが、慎重に続行してください。


繰り返しログオン可能なスクリプトによる削除

これは、ディスククリーンアップツール(cleanmgr.exe)で実行できます。残念ながら、マイクロソフトはこれを「デスクトップエクスペリエンス」の機能セットにバンドルすることを決定しました。つまり、他のがらくたをたくさんインストールして再起動する必要があります。

別の方法として、次の2つのファイルを取得し、 Technet に従って指定した場所に移動します。

C:\Windows\winsxs\AMD64_Microsoft-windows-cleanmgr_31bf3856ad364e35_6.1.7600.16385_none_c9392808773cd7da\cleanmgr.exe
C:\Windows\winsxs\AMD64_Microsoft-windows-cleanmgr.resources_31bf3856ad364e35_6.1.7600.16385_en-us_b9cb6194b257cc63\cleanmgr.exe.mui

Cleanmgr.exeは%systemroot%\ System32にあります。

Cleanmgr.exe.muiは%systemroot%\ System32\en-USにあります。

Cleanmgrを単独で実行しても、全員のごみ箱をクリアすることはできませんが、/ sagesetおよび/ sagerunを使用して、GPOを介してすべてのユーザーに対して実行されるログオンスクリプトを作成できます。説明されている次のログオン here 。これは最もクリーンなことではありませんが、機能します。リンクされている記事はXP向けですが、構文はServer 2008 R2から変更されていません。

34
MDMarra

ユーザーのごみ箱はプロファイルで個別に保持されるため、文書化された適切な方法はないと思います。これは、ごみ箱内のドキュメントまたはアイテムがユーザーによって閲覧された場合、特定のドキュメントが漏えいする可能性があるため、許可するセキュリティ上の問題にもなります。

管理者特権のスクリプトを実行して、各ローカルプロファイルのゴミ箱からファイルを実行および消去することもできます(ただし、ローミングプロファイルがある場合は、プロファイルを保持しているサーバーに同期されます)。ただし、権限と所有権を適切に設定する必要があります。私のサーバーでは、管理者がストレージサーバーのプロファイルに適切にアクセスできないことを知っています。管理者はプロファイルの所有権を取得する必要があります。完了すると、所有権が適切なユーザーに返されます。そうしないと、プロファイルがそのユーザーに対して適切に機能しなくなります。

ユーザーごとにごみ箱ディレクトリをクリアするプロセスをログオフで実行してみることもできますが、後で回復したいものを誤って削除してしまい、最後のログオフで削除されたために削除されることになります。

おそらくそれを行う「適切な」方法は、ワークステーションとサーバーにクォータを構成することであり、そのクォータがストレージに達したときに、ユーザーはごみ箱からアイテムを削除する必要があることを学びます。セキュリティのため、トレーニングの問題になります。それ以外の場合は、回避策が必要です。

@markmには、これを行うように見えるユーティリティの提案がありました。私はそれがアドオンであり、デフォルトでWindowsに組み込まれていないため、「適切な」方法ではないという主張を支持します(ただし、便利な管理ユーティリティが含まれていないことには驚きません)。それを使用する際の心配は、ワークステーションとサーバーで実行する必要があるか、どこに表示されるかでプロファイルの同期の問題が発生する可能性があることです。これは、Windowsの「ディスククリーンアップ」タブにアクセスするための単なるミニツールになっているようです。

もう1つの考え...期待されていません...フォルダーリダイレクトを使用して、ごみフォルダーを中央サーバーにリダイレクトすることです。しかし、これを記念碑的に悪い考え(tm)として分類します。次に、その共有ディレクトリからファイルを削除します。これをネットワーク、セキュリティ設定などを介してリンクすると、他のシステム管理者が自発的に燃焼する前に逃げることになるレベル1の優先事項になります。

9

TreeSize Freeを実行したところ、ごみ箱に15ギガありましたが、おそらく長い間離れたユーザーが実行したためか、それを確認できませんでした。しかし、TreeSize Proではそれを削除して、データをごみ箱に入れて表示することができました。

6
Ray

これは私にとってはうまくいきます:-

Get-ChildItem "C:\`$Recycle.bin\" | Remove-Item -Recurse -Force

Recycle.binを削除します。 Windowsは、必要に応じて、つまりユーザーが新しいファイルを削除するとすぐにごみ箱を再作成します。

最もエレガントなコードではないかもしれませんし、それを行うにはもっと良い方法があるかもしれませんが、それは輻輳したサーバーのスペースを解放するのに役立ちます。これは、Remove-Itemコマンドの-WhatIfスイッチを使用してテストできます。

Get-ChildItem "C:\`$Recycle.bin\" | Remove-Item -Recurse -Force -WhatIf

注意:各ドライブは独自のごみ箱を保持しています。したがって、ドライブ文字を、このコマンドを実行している任意のドライブに置き換えるか、すべてのローカルドライブに以下を使用できます。

Get-PSProvider -PSProvider FileSystem `
| Select-Object -ExpandProperty Drives `
| Where-Object { $_.DisplayRoot -notlike "\\*" } `
| Select-Object -ExpandProperty Root `
| ForEach-Object { "$_`$Recycle.bin\" } `
| Where-Object { Test-Path -Path $_ -PathType Container } `
| ForEach-Object { Get-ChildItem -Path $_ -Force | Remove-Item -Recurse -Force }

お役に立てれば

3
K Clethero

4GBを超えるデータが表示されていたごみ箱がありましたが、それを消去できませんでした。入って来て、サーバーで使用されなくなった一連のプロファイルを見つけ、システムのプロパティ-詳細-ユーザープロファイルで削除しましたが、ごみ箱は空になりました。

現在のアカウントや使用中のアカウントは削除しないでください。ただし、管理者はこの方法で削除できます。

1
Andrew

以下のプロセスを使用して、すべてのファイルを削除します。

  1. 管理者ユーザーとしてログインし、Cドライブを探索
  2. フォルダーオプションから保護されたオペレーティングシステムファイルを非表示にする
  3. 参照$ Recycle.Binフォルダー
  4. すべてのファイルとフォルダを削除する
  5. ごみ箱を空にします

すべてのファイルがディスクから削除されます。

0
Rajnish Pati

私がこのソリューションを気に入った理由は、それが何をしているかを簡単に理解し、ジョブを実行するからです。ただし、コマンドを実行する任意の場所から作業するには、次のように変更して実行する必要があります( "drive_letter: ")および他のユーザーからこれらのフォルダーを削除できるようにするには、remove-itemコマンドの最後に" -force "を追加する必要があります。さらに、C:\ $ Recycle.bin \内のすべてのフォルダーを削除するので、子アイテムを取得するときに「-recurse」を含める必要はありません。したがって、これは私が代わりに使用する最後のコマンドになります:

Get-ChildItem "C:` $ Recycle.bin\"-Force | Remove-Item -Recurse -force -WhatIf

削除-WhatIfコマンドをテストするだけではない場合

0
Mike