Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

GPOとPowerShellを使用して古いユーザープロファイルを削除する方法は?

Windowsワークステーションとサーバー、特にRDS(リモートデスクトップサービス)サーバーでは、C:\ Usersから古い(未使用の)ユーザープロファイルを定期的に削除する必要があります。リモートデスクトップサーバーの主な問題は、ローカルドライブ上のユーザープロファイルディレクトリのサイズが絶えず大きくなることです。これは、最大ユーザープロファイルサイズでクォータを有効にすることで部分的に解決されます(FSRMまたはNTFSクォータを使用)。ただし、ターミナルサーバーのユーザーが多い場合、時間の経過とともに、C:\ Usersディレクトリには、不要になったユーザープロファイルを含む膨大な数のディレクトリが蓄積されます。

Windowsでユーザープロファイルを手動で削除する方法

多くの初心者のWindows管理者は、C:\Usersからユーザープロファイルフォルダーを手動で削除しようとします。フォルダを手動で削除した後、レジストリキー HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileListからこのフォルダへのリンクを含むユーザープロファイルセクションを削除する場合に実行できます。 。

Windowsでユーザープロファイルを手動で削除する正しい方法は、システムプロパティを開き、システムの詳細設定に移動することです。 ->ユーザープロファイル ->設定 、リストからユーザーを選択し([サイズ]列にローカルドライブのプロファイルのサイズが表示されます)、[削除]をクリックします。 ボタン。

GPOとPowerShellを使用して古いユーザープロファイルを削除する方法は?

ただし、これは手動の方法であり、自動化することをお勧めします。

GPO:指定された日数より古いユーザープロファイルを削除する

Windowsには、xx日より古いユーザープロファイルを自動的に削除する組み込みのグループポリシーがあります。ポリシーシステムの再起動時に指定された日数より古いユーザープロファイルを削除するを見つけることができます GPOセクションの[コンピューターの構成]->[管理用テンプレート]->[システム]->[ユーザープロファイル] 。このポリシーは、ローカルグループポリシーエディター(gpedit.msc)で有効にするか、GPMC.mscのドメインポリシーを使用して有効にできます。

ポリシーを有効にし、ユーザープロファイルがアクティブであると見なされる日数を指定します。この期間が終了すると、Windowsユーザープロファイルサービスは、次回の再起動時にプロファイルを自動的に削除します。 45-90の期間を指定することをお勧めします ここでの日数。

GPOとPowerShellを使用して古いユーザープロファイルを削除する方法は?

このポリシーを使用するときは、サーバーのシャットダウンまたは再起動時にシステム時刻に問題がないことを確認してください(「再起動後のシステム時刻と日付の変更」の記事を確認してください)。そうしないと、アクティブなユーザープロファイルが削除される可能性があります。

このプロファイル削除の自動方法に関連する主な問題は、サーバーの再起動と非選択性を待つことです(ローカルアカウント、管理者アカウントなどの特定のユーザープロファイルの削除を禁止することはできません)。また、一部のサードパーティソフトウェア(ほとんどの場合、ウイルス対策ソフトウェア)がユーザープロファイルのNTUSER.DATファイルにアクセスし、最後に使用した日付を更新した場合、このポリシーは機能しない可能性があります。

Windowsで古いユーザープロファイルを削除するPowerShellスクリプト

上記の自動クリーンアッププロファイルポリシーを使用する代わりに、単純なPowerShellスクリプトを使用して、無効または非アクティブなユーザーのプロファイルを検索して削除できます。

まず、PowerShellでのディレクトリサイズの取得:

の記事の簡単なスクリプトを使用して、C:\Users内のすべてのユーザープロファイルフォルダーのサイズをカウントしてみましょう。

gci -force 'C:\Users'-ErrorAction SilentlyContinue | ? { $_ -is [io.directoryinfo] } | % {
$len = 0
gci -recurse -force $_.fullname -ErrorAction SilentlyContinue | % { $len += $_.length }
$_.fullname, '{0:N2} GB' -f ($len / 1Gb)
$sum = $sum + $len
}
“Total size of profiles”,'{0:N2} GB' -f ($sum / 1Gb)

C:\Usersのすべてのユーザープロファイルの合計サイズは31.5GBです。

GPOとPowerShellを使用して古いユーザープロファイルを削除する方法は?

プロファイルが60日以上使用されていないユーザーのリストを表示してみましょう。それらを見つけるには、プロファイルのLastUseTimeフィールドの値を使用できます。

Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-60))}| Measure-Object

RDSホストに127個の非アクティブなユーザーアカウントがあることが判明しました(プロファイルの合計サイズは約18 GBです)。

GPOとPowerShellを使用して古いユーザープロファイルを削除する方法は?

これらのプロファイルをすべて削除するには、ユーザーリストを Remove-WmiObjectにリダイレクトするだけで十分です。 コマンド(スクリプトを実行する前に、–WhatIfパラメーターを使用して出力を再確認することをお勧めします):

Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and (!$_.Loaded) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-30))} | Remove-WmiObject –WhatIf

システムなど、一部のユーザーのプロファイルを削除しないようにするため およびネットワークサービス アカウント、ローカル管理者 アカウント、アクティブなセッションを持つユーザーのアカウント、アカウント例外 リスト)、次のようにスクリプトを変更できます:

#The list of accounts, which profiles must not be deleted
$ExcludedUsers ="Public","zabbix_agent","svc",”user_1”,”user_2”
$LocalProfiles=Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and (!$_.Loaded) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-60))}
foreach ($LocalProfile in $LocalProfiles)
{
if (!($ExcludedUsers -like $LocalProfile.LocalPath.Replace("C:\Users\","")))
{
$LocalProfile | Remove-WmiObject
Write-host $LocalProfile.LocalPath, "profile deleted” -ForegroundColor Magenta
}
}

このPowerShellスクリプトは、シャットダウン時にGPOを使用するか、タスクスケジューラのPoShスクリプトを使用して実行できます。

プロファイルの自動削除を構成する前に、ご使用の環境でスクリプトをテストすることをお勧めします。

スクリプトを変更して、特定のADグループ(たとえば、DisabledUsersグループ)に追加されたすべてのユーザープロファイルを自動的に削除できます。

$users = Get-ADGroupMember -Identity DisabledUsers | Foreach {$_.Sid.Value}
$profiles = Get-WmiObject Win32_UserProfile
$profiles | Where {$users -eq $_.Sid} | Foreach {$_.Delete()}


  1. PowerShell を使用してファイルとフォルダーを削除する方法

    すべてのファイルとフォルダーを手動で削除するのは面倒です。ただし、PowerShell の使い方を知っていれば、その必要はありません。この記事では、PowerShell を使用して Windows のファイルとフォルダーを削除するさまざまな方法を紹介します。 PowerShell を使用してファイルとフォルダーを削除する PowerShell は、Windows が提供する無料のコマンド自動化ツールです。簡単に言えば、コマンド プロンプト ウィンドウ内で起動するシェルの助けを借りて、オペレーティング システムをより詳細に制御するのに役立ちます。 コマンドレットとも呼ばれるコマンドレットを利

  2. Windows 10 PC で古いファイルを特定して削除する方法

    PC には、おそらく気付いていない何百、何千ものファイルがあります。これらのファイルの一部は、何年にもわたって冗長になり、時間の経過とともに忘れられている可能性があります。これらのファイルはコンピュータに脅威を与えることはありませんが、より有用なファイルを保存するために解放できるストレージ スペースを占有します。 PC 上のすべての古いファイルを手動で検出することは不可能であるため、Disk Analyzer Pro などのサードパーティ ソフトウェアが必要です。 また読む:Disk Analyzer Pro:ハードディスクの内容を整理して明らかにする 古くて冗長なファイルを特定するためにス