删除带有后缀_Inactive的本地用户配置文件

时间:2018-07-16 19:30:41

标签: powershell

我想从C:\ Users以及我公司中大量计算机上的注册表中删除本地用户配置文件。

一段时间以来,这种做法是将C:\ Users中的用户配置文件文件夹从用户名重命名为username_Inactive

我想简单地运行此脚本:

$profilesToDelete = Get-WMIObject -Class Win32_UserProfile | where {$_.LocalPath -match '_Inactive'} -ErrorAction Stop

    foreach ($profileToDelete in $profilesToDelete)
    {
        Write-Verbose "Removing Profile $($profileToDelete.LocalPath) & Associated Registry Keys on $env:COMPUTERNAME..."

        Remove-WmiObject -InputObject $profileToDelete -ErrorAction Stop
    }​

但是...。每个win32_userprofile的本地路径不能反映手动配置文件文件夹名称从username更改为username_Inactive

我可以使用以下脚本通过运行以下命令来显示所有名为username_Inactive的用户配置文件的列表:

Get-ChildItem -Path "C:\Users\" | Where {$_.Name -match '_Inactive'}​

但是,在这一点上,我有点茫然,无法前进。我有一些想法,但技术知识不足。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是一个 a 解决方案,该解决方案可以关联路径并巧妙地处理LocalPath业务:

$inactiveList = (Get-ChildItem -Path 'C:\Users\*_Inactive').FullName -replace '_inactive$'
$deleteList = @(Get-WmiObject -Class Win32_UserProfile).Where{$PSItem.LocalPath -in $inactiveList}

foreach ($delete in $deleteList) {
    Write-Verbose "Removing profile '$($delete.LocalPath)' and associated registry keys on $Env:COMPUTERNAME."
    Rename-Item -LiteralPath "$($delete.LocalPath)_Inactive" -NewName $delete.LocalPath -Force
    $delete | Remove-WmiObject
}