我想从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'}
但是,在这一点上,我有点茫然,无法前进。我有一些想法,但技术知识不足。
任何帮助将不胜感激。
答案 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
}