休止中のアカウントのユーザー プロファイル、ユーザーのフォルダー、およびユーザーのレジストリ キーを完全に削除する Powershell スクリプト

休止中のアカウントのユーザー プロファイル、ユーザーのフォルダー、およびユーザーのレジストリ キーを完全に削除する Powershell スクリプト

私は、Windows コンピューターから、特定の管理者またはサービス アカウントを無視して、プロファイルが 90 日を超えて休止状態になっているすべてのユーザーのユーザー プロファイル、"C:\Users" 内のユーザー フォルダー、および "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" 内のユーザー レジストリ キーを削除する Powershell スクリプトを作成しようとしています。

これら 3 つすべてが必要な理由は、このスクリプトによって、ローカル アカウントとドメイン アカウントの両方を含む休止状態のプロファイルがコンピューターから削除されるようにするためです。

注: ここで行っていることを実現するために、グループ ポリシーは使用せず、Powershell のみを使用しています。

今のところ動作していないコードは次のとおりです。

Get-CimInstance -Class Win32_UserProfile | 
Where-Object {(!$_.Special) -and ($_.LastUseTime -lt (Get-Date).AddDays(-90)) -and ($_.SID -notmatch '-500$')} | 
Remove-CimInstance -WhatIf

$profiledirectory="C:\Users\"
Get-ChildItem -Path $profiledirectory | Where-Object {$_.LastAccessTime -lt (Get-Date).AddDays(-90) -and ($_.FullName -notmatch 'Administrator|Public|LocalAdmin') }
    ForEach-Object{
        Get-ChildItem 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList' |
            ForEach-Object{
            $profilepath=$_.GetValue('ProfileImagePath')    
            if($profilepath -notmatch 'administrator|NetworkService|Localservice|systemprofile|LocalAdmin'){
                Write-Host "Removing item: $profilepath" -ForegroundColor green
                Remove-Item $_.PSPath -Whatif
                Remove-Item $profilepath -Recurse -Force -Whatif
            }else{
                Write-Host "Skipping item:$profilepath" -Fore blue -Back white
            }
        }
    }

ご意見やご提案がありましたら、ぜひお聞かせください。ありがとうございます!

答え1

次のように書き直します。

delprof2 /d:60

デルプロフ2ツールはスタンドアロンの.exeダウンロードです。

関連情報